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-
billableboolean-
billable_sourceobject-
created_atstring-
deleted_atstring-
descriptionstring-
durationinteger-
idinteger-
project_idinteger-
startstring-
task_idintegernull
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 '\{"billable":"boolean","description":"string","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
billableboolean-
descriptionstring-
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 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
include_tasklessbooleanfalseinclude taskless time entries

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
data
NameTypeDescription
archived_atstring-
billableboolean-
billable_sourceobject-
created_atstring-
deleted_atstring-
descriptionstring-
durationinteger-
idinteger-
project_idinteger-
startstring-
taskobject-
task_idintegernull
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-
is_templateboolean-
metadataobject-
namestring-
notesstring-
parent_task_idinteger-
parent_task_namestring-
pinnedboolean-
positioninteger-
prioritystring-
priority_atstring-
privateboolean-
projectobject-
project_idinteger-
recurrence_datestring-
recurring_task_idinteger-
rrulestring-
sourcestring-
source_template_task_idinteger-
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-
project_assignmentobject-
updated_atstring-
project_assignment
NameTypeDescription
accuracynumber-
confirmed_atstring-
match_tierstring-
matched_namestring-
normalized_namestring-
originstring-
suggested_atstring-
project
NameTypeDescription
archived_atstring-
colorstring-
idinteger-
is_templateboolean-
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-
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 '[\{"billable":"boolean","description":"string","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
billableboolean-
descriptionstring-
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 '[\{"billable":"boolean","description":"string","duration":"integer","id":"integer","project_id":"integer","reset_billable_to_default":"boolean","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
billableboolean-
descriptionstringnull
durationinteger-
idinteger-
project_idintegernull
reset_billable_to_defaultboolean-
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
include_tasklessbooleanfalseinclude taskless time entries

Response

200

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
archived_atstring-
billableboolean-
billable_sourceobject-
created_atstring-
deleted_atstring-
descriptionstring-
durationinteger-
idinteger-
project_idinteger-
startstring-
taskobject-
task_idintegernull
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-
is_templateboolean-
metadataobject-
namestring-
notesstring-
parent_task_idinteger-
parent_task_namestring-
pinnedboolean-
positioninteger-
prioritystring-
priority_atstring-
privateboolean-
projectobject-
project_idinteger-
recurrence_datestring-
recurring_task_idinteger-
rrulestring-
sourcestring-
source_template_task_idinteger-
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-
project_assignmentobject-
updated_atstring-
project_assignment
NameTypeDescription
accuracynumber-
confirmed_atstring-
match_tierstring-
matched_namestring-
normalized_namestring-
originstring-
suggested_atstring-
project
NameTypeDescription
archived_atstring-
colorstring-
idinteger-
is_templateboolean-
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-
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-
billableboolean-
billable_sourceobject-
created_atstring-
deleted_atstring-
descriptionstring-
durationinteger-
idinteger-
project_idinteger-
startstring-
task_idintegernull
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.