Skip to main content

Time-blocks

GET List task time blocks

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

Returns a list of time blocks 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-blocks \
-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
archivedbooleanfalsefilter in/out archived time blocks

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
data
NameTypeDescription
archived_atstring-
calendar_event_idinteger-
completed_atstring-
created_atstring-
deleted_atstring-
durationinteger-
has_time_entryboolean-
idinteger-
startstring-
task_idinteger-
toggl_user_idinteger-
updated_atstring-
workspace_idinteger-

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

POST Create a new time block

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

Creates a new time block with the provided name and workspace ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID

Body

NameTypeDescription
completedboolean-
durationinteger-
outbound_syncboolean-
startstring-

Response

201

Time block created successfully

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

GET Get a time block by ID

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

Returns a time block by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_block_idintegertruetimeBlock ID

Response

200

NameTypeDescription
archived_atstring-
calendar_event_idinteger-
completed_atstring-
created_atstring-
deleted_atstring-
durationinteger-
idinteger-
startstring-
task_idinteger-
toggl_user_idinteger-
updated_atstring-
workspace_idinteger-

400

Invalid request

403

Insufficient permissions

404

TimeBlock does not exist

500

Internal Server Error

PUT Update time block

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

Update an existing time block

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_block_idintegertrueTimeBlock ID

Body

NameTypeDescription
completedboolean-
durationinteger-
outbound_syncboolean-
startstring-

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time block does not exist

500

Internal Server Error

DELETE Delete a time block by ID

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

Deletes a time block by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_block_idintegertruetime block ID

Query

nametyperequireddescription
outbound_syncbooleanfalseConduct outbound sync or not

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time block does not exist

500

Internal Server Error

PATCH Update time block

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

Update an existing time block

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_block_idintegertrueTimeBlock ID

Body

NameTypeDescription
completedboolean-
durationinteger-
outbound_syncboolean-
startstring-
task_idinteger-

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time block does not exist

500

Internal Server Error

POST Marks a time block as archived

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

Marks the time block with the provided WS, task, and time block IDs as archived

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_block_idintegertruetime block ID

Response

204

No Content

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

PATCH Restore a time block by ID

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

Restores a time block by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_block_idintegertruetime block ID

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time block does not exist

500

Internal Server Error

POST Marks a time block as unarchived

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

Marks the time block with the provided WS, task, and time block IDs as unarchived

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
task_idintegertruetask ID
time_block_idintegertruetime block ID

Response

204

No Content

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

GET List task time blocks within range

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

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

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
date_fromstringtruefrom timestamp
date_tostringtrueto timestamp
task_idintegerfalsetask id
status_idintegerfalsestatus id
pageintegerfalsepage number
per_pageintegerfalseresults per page
archivedbooleanfalsefilter in/out archived time blocks
order_by[]stringfalseorder by

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
data
NameTypeDescription
archived_atstring-
calendar_event_idinteger-
completed_atstring-
created_atstring-
deleted_atstring-
durationinteger-
has_time_entryboolean-
idinteger-
startstring-
taskobject-
task_idinteger-
toggl_user_idinteger-
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 blocks

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

Creates new time blocks

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
time_blocksArray of object-
time_blocks
NameTypeDescription
completedboolean-
durationinteger-
outbound_syncboolean-
startstring-
task_idinteger-

Response

201

Time blocks created successfully

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

DELETE Bulk deletes time blocks by IDs

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

Deletes time blocks by the provided IDs.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
ids[]integertruetime block IDs
outbound_syncbooleanfalseConduct outbound sync or not

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time block does not exist

500

Internal Server Error

PATCH Update time blocks in bulk

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

Update existing time blocks in bulk

curl -X PATCH https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/time-blocks/bulk \
-H "Content-Type: application/json" \
-d '[\{"completed":"boolean","duration":"integer","id":"integer","outbound_sync":"boolean","start":"string","task_id":"integer"\}]' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
completedboolean-
durationinteger-
idinteger-
outbound_syncboolean-
startstring-
task_idinteger-

Response

204

No Content

400

Invalid request

403

Insufficient permissions

404

Time block does not exist

500

Internal Server Error

GET List task time blocks within range (streamed)

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

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

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
date_fromstringtruefrom timestamp
date_tostringtrueto timestamp
task_idintegerfalsetask id
status_idintegerfalsestatus id
archivedbooleanfalsefilter in/out archived time blocks
order_by[]stringfalseorder by

Response

200

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
archived_atstring-
calendar_event_idinteger-
completed_atstring-
created_atstring-
deleted_atstring-
durationinteger-
has_time_entryboolean-
idinteger-
startstring-
taskobject-
task_idinteger-
toggl_user_idinteger-
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

© 2026 Toggl. All rights reserved.