Skip to main content

Time-entries

GET List task time entries

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries

Returns a list of time-entries based on the provided workspace ID, task ID and filter params.

curl  https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID

Query

nametyperequireddescription
pageintegerfalsepage number
per_pageintegerfalseresults per page
order_by[]stringfalseorder by
typestringfalsetime entry type
archivedbooleanfalsefilter in/out archived TEs
time_block_idintegerfalsefilter by timeblock id

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
data
NameTypeDescription
archived_atstring-
created_atstring-
deleted_atstring-
durationinteger-
idinteger-
startstring-
task_idinteger-
time_block_idinteger-
toggl_user_idinteger-
typeobject-
updated_atstring-
workspace_idinteger-

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

POST Create a new time entry

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries

Creates a new time entry in the specified workspace. An optional user_id field can be provided to create a time entry on behalf of another user. When user_id differs from the authenticated user, the caller must have manage_time_entries permission.

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries \
-H "Content-Type: application/json" \
-d '\{"duration":"integer","start":"string","time_block_id":"integer","type":\{\},"user_id":"integer"\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID

Body

NameTypeDescription
durationinteger-
startstring-
time_block_idinteger-
typeobject-
user_idinteger-

Response

201

Time entry created successfully

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

GET Get a time entry by ID

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}

Returns a time entry by the provided ID.

curl  https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id} \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_entry_idintegertruetimeEntry ID

Response

200

NameTypeDescription
archived_atstring-
created_atstring-
deleted_atstring-
durationinteger-
idinteger-
startstring-
task_idinteger-
time_block_idinteger-
toggl_user_idinteger-
typeobject-
updated_atstring-
workspace_idinteger-

400

Invalid request

403

Insufficient permissions

404

TimeEntry does not exist

500

Internal Server Error

PUT Update time entry

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}

Update an existing time entry

curl -X PUT https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id} \
-H "Content-Type: application/json" \
-d '\{"duration":"integer","start":"string","time_block_id":"integer","type":\{\}\}'

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_entry_idintegertrueTimeEntry ID

Body

NameTypeDescription
durationinteger-
startstring-
time_block_idinteger-
typeobject-

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time entry does not exist

500

Internal Server Error

DELETE Delete a time entry by ID

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}

Deletes a time entry by the provided ID.

curl -X DELETE https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id} \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_entry_idintegertruetime entry ID

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time entry does not exist

500

Internal Server Error

PATCH Partial update time entry

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}

Partial updates an existing time entry

curl -X PATCH https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id} \
-H "Content-Type: application/json" \
-d '\{"duration":"integer","start":"string","task_id":"integer","time_block_id":"integer","type":"string"\}'

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_entry_idintegertrueTimeEntry ID

Body

NameTypeDescription
durationinteger-
startstringnull
task_idinteger-
time_block_idinteger-
typestring-

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time entry does not exist

500

Internal Server Error

POST Marks a TE as archived

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}/archive

Marks the TE with the provided WS, task, and TE IDs as archived

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}/archive \
-H "Content-Type: application/json"

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_entry_idintegertruetime entry ID

Response

204

No Content

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

PATCH Restore a time entry by ID

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}/restore

Restores a time entry by the provided ID.

curl -X PATCH https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}/restore \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_entry_idintegertruetime entry ID

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time entry does not exist

500

Internal Server Error

POST Unarchives a time entry

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}/unarchive

Marks the TE with the provided WS, task, and TE IDs as unarchived

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/tasks/{task_id}/time-entries/{time_entry_id}/unarchive \
-H "Content-Type: application/json"

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_entry_idintegertruetime entry ID

Response

204

No Content

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

GET List task time entries

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries

Returns a list of time-entries based on the provided workspace ID and filter params.

curl  https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
date_fromstringtruefrom timestamp
date_tostringtruefrom timestamp
task_idintegerfalsetask id
status_idintegerfalsestatus id
typestringfalsetime entry type
pageintegerfalsepage number
per_pageintegerfalseresults per page
order_by[]stringfalseorder by
archivedbooleanfalsefilter in/out archived TEs
time_block_idintegerfalsefilter by timeblock

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
data
NameTypeDescription
archived_atstring-
created_atstring-
deleted_atstring-
durationinteger-
idinteger-
startstring-
taskobject-
task_idinteger-
time_block_idinteger-
toggl_user_idinteger-
typeobject-
updated_atstring-
workspace_idinteger-
task
NameTypeDescription
archived_atstring-
assignee_user_idsArray of integer-
auto_log_timeboolean-
billableboolean-
clientobject-
colorstring-
created_atstring-
deleted_atstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
ghost_assignee_idsArray of integer-
idinteger-
metadataobject-
namestring-
notesstring-
parent_task_idinteger-
parent_task_namestring-
pinnedboolean-
positioninteger-
prioritystring-
priority_atstring-
privateboolean-
projectobject-
project_idinteger-
recurring_task_idinteger-
reucrrence_dateobject-
rrulestring-
sourcestring-
start_datestring-
statusobject-
status_idinteger-
status_updated_atstring-
tag_idsArray of integer-
tagsArray of object-
toggl_user_idinteger-
updated_atstring-
workspace_idinteger-
client
NameTypeDescription
idinteger-
namestring-
metadata
NameTypeDescription
all_dayboolean-
calendar_event_idinteger-
calendar_idinteger-
external_idstring-
ical_uidstring-
meeting_linkstring-
updated_atstring-
project
NameTypeDescription
colorstring-
idinteger-
namestring-
permissionsArray of string-
privateboolean-
rateobject-
rate
NameTypeDescription
billableboolean-
currencystring-
end_atstring-
has_more_ratesboolean-
hourly_ratenumber-
project_colorstring-
project_created_atstring-
project_idinteger-
project_namestring-
project_rate_idinteger-
start_atstring-
workspace_rate_idinteger-
reucrrence_date
status
NameTypeDescription
emojistring-
idinteger-
namestring-
typestring-
tags
NameTypeDescription
colorstring-
idinteger-
namestring-

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

POST Create new time entries in bulk

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/bulk

Creates new time entries in bulk for the specified workspace. An optional user_id field can be provided per entry to create time entries on behalf of another user. When user_id differs from the authenticated user, the caller must have manage_time_entries permission.

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/bulk \
-H "Content-Type: application/json" \
-d '[\{"duration":"integer","start":"string","task_id":"integer","time_block_id":"integer","type":\{\},"user_id":"integer"\}]' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
durationinteger-
startstring-
task_idinteger-
time_block_idinteger-
typeobject-
user_idinteger-

Response

204

No Content

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

DELETE Delete time entries in bulk

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/bulk

Deletes time entries by the provided IDs.

curl -X DELETE https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/bulk \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
ids[]integertrueTimeEntry IDs

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time entry does not exist

500

Internal Server Error

PATCH Partial bulk update time entry

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/bulk

Partial updates an existing time entry

curl -X PATCH https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/bulk \
-H "Content-Type: application/json" \
-d '[\{"duration":"integer","id":"integer","start":"string","task_id":"integer","time_block_id":"integer","type":"string"\}]'

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
durationinteger-
idinteger-
startstringnull
task_idinteger-
time_block_idinteger-
typestring-

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time entry does not exist

500

Internal Server Error

PATCH Restore time entries in bulk

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/bulk/restore

Restores time entries by the provided IDs.

curl -X PATCH https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/bulk/restore \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
ids[]integertrueTimeEntry IDs

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time entry does not exist

500

Internal Server Error

GET List task time entries, streaming the response

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/stream

Returns a list of time-entries based on the provided workspace ID and filter params.

curl  https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/stream \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
date_fromstringtruefrom timestamp
date_tostringtruefrom timestamp
task_idintegerfalsetask id
status_idintegerfalsestatus id
typestringfalsetime entry type
order_by[]stringfalseorder by
archivedbooleanfalsefilter in/out archived TEs

Response

200

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
archived_atstring-
created_atstring-
deleted_atstring-
durationinteger-
idinteger-
startstring-
taskobject-
task_idinteger-
time_block_idinteger-
toggl_user_idinteger-
typeobject-
updated_atstring-
workspace_idinteger-
task
NameTypeDescription
archived_atstring-
assignee_user_idsArray of integer-
auto_log_timeboolean-
billableboolean-
clientobject-
colorstring-
created_atstring-
deleted_atstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
ghost_assignee_idsArray of integer-
idinteger-
metadataobject-
namestring-
notesstring-
parent_task_idinteger-
parent_task_namestring-
pinnedboolean-
positioninteger-
prioritystring-
priority_atstring-
privateboolean-
projectobject-
project_idinteger-
recurring_task_idinteger-
reucrrence_dateobject-
rrulestring-
sourcestring-
start_datestring-
statusobject-
status_idinteger-
status_updated_atstring-
tag_idsArray of integer-
tagsArray of object-
toggl_user_idinteger-
updated_atstring-
workspace_idinteger-
client
NameTypeDescription
idinteger-
namestring-
metadata
NameTypeDescription
all_dayboolean-
calendar_event_idinteger-
calendar_idinteger-
external_idstring-
ical_uidstring-
meeting_linkstring-
updated_atstring-
project
NameTypeDescription
colorstring-
idinteger-
namestring-
permissionsArray of string-
privateboolean-
rateobject-
rate
NameTypeDescription
billableboolean-
currencystring-
end_atstring-
has_more_ratesboolean-
hourly_ratenumber-
project_colorstring-
project_created_atstring-
project_idinteger-
project_namestring-
project_rate_idinteger-
start_atstring-
workspace_rate_idinteger-
reucrrence_date
status
NameTypeDescription
emojistring-
idinteger-
namestring-
typestring-
tags
NameTypeDescription
colorstring-
idinteger-
namestring-

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

GET List task time entries by time block ids, streaming the response

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/time-block-ids/stream

Returns a list of time-entries based on the provided workspace ID and filter params.

curl  https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-entries/time-block-ids/stream \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
time_block_id[]integertruefilter by timeblock ids

Response

200

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
archived_atstring-
created_atstring-
deleted_atstring-
durationinteger-
idinteger-
startstring-
task_idinteger-
time_block_idinteger-
toggl_user_idinteger-
typeobject-
updated_atstring-
workspace_idinteger-

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

© 2026 Toggl. All rights reserved.