Skip to main content


Run a new time entry

What are you waiting for? Start to track your time now!

curl -u <email>:<password> \
-H "Content-Type: application/json" \
-d '{"created_with":"API example code","description":"Hello Toggl","tags":[],"billable":false,"workspace_id":{workspace_id},"duration":-1,"start":"1984-06-08T11:02:53.000Z","stop":null}' \
-X POST{workspace_id}/time_entries

A new time entry will start tracking time. You can see the running time in the Toggl Track web app.

Hello Toggl

Remember to replace {workspace_id} for the corresponding one both in the URL path and in the payload field "workspace_id".

You can always ask the details about your running time entry as follows:

  curl -u <email>:<password> \
-H "Content-Type: application/json" \
"data": {
"id": 436694100,
"wid": 777,
"pid": 193791,
"billable": false,
"start": "1984-01-30T09:08:04+00:00",
"duration": -1,
"description": "Running time entry",
"at": "1984-01-30T09:08:12+00:00"

About the duration field

To create a time entry that started and stopped you can provide both the start and the duration fields. Where the:

  • start field will have the format "2022-10-27T15:38:45Z"
  • duration field will have the duration in seconds, for example 120.

To create a time entry that started and continues to be running, the duration field must be negative. In UNIX environments you can create a running time entry for the current date using the following command:

curl -u <email>:<password> \
-H "Content-Type: application/json" \
-d '{"created_with":"API example code","description":"Hello Toggl","tags":[],"billable":false,"workspace_id":{workspace_id},"duration":-1,"start":"'$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)'","stop":null}' \
-X POST{workspace_id}/time_entries

Stop an existing time entry

Don't forget to stop your running time entry!

curl -u <email>:<password> \
-X PATCH{workspace_id}/time_entries/{time_entry_id}/stop

And now, the time entry is in your history.

Hello Toggl

Manual mode

It is always possible to insert a time entry specifying the start time and the duration.


The stop time will be considered as the start time plus the specified duration.

curl -u <email>:<password> \
-H "Content-Type: application/json" \
-d '{"description":"Meeting with clients","tags":["billed"],"workspace_id":{workspace_id},"duration":1200,"start":"2022-03-05T07:58:58.000Z","created_with":"curl"}' \
-X POST{workspace_id}/time_entries

Time entry history

If you want to retrieve the list of time entries in a specific time window, you can use start_date and end_date parameters as below.


The limit of returned time entries is 1000. Consider using detailed reports for the whole list.

curl -u <email>:<password> \
-H "Content-Type: application/json" \
-X GET ""

The result is an array composed of time entry objects.

Check the docs on Time Entry for further time entry operations.

© 2024 Toggl. All rights reserved.