Skip to main content

Composite

POST Creates the main project, project members, and milestones.

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/composite/projects

Creates the main project, project members, and milestones. Milestones are automatically associated with the project.

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/composite/projects \
-H "Content-Type: application/json" \
-d '\{"members":\{\},"milestones":[\{"color":"string","completed_at":"string","due_date":"string","name":"string","project_ids":[\{\}],"team_ids":[\{\}]\}],"project":\{\},"rates":[\{"currency":"string","end_at":"string","hourly_rate":"number","start_at":"string"\}],"resource_ids":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
membersobjectUser data, and other membership details for adding members to the project.
milestonesArray of objectThe milestones to be created alongside the project.
projectobjectThe project to be created
ratesArray of objectThe rates to be created alongside the project.
resource_idsArray of integerThe resource IDs/ghost IDs to be associated with the project.
milestones
NameTypeDescription
colorstring-
completed_atstringnolint:lll
due_datestringnolint:lll
namestring-
project_idsArray of integer-
team_idsArray of integer-
rates
NameTypeDescription
currencystring-
end_atstring-
hourly_ratenumber-
start_atstring-

Response

201

Composite project creation success

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

POST Creates the main task, subtasks, time blocks and time entries in bulk

https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/composite/tasks

Creates the main task, subtasks, time blocks and time entries in bulk.

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/composite/tasks \
-H "Content-Type: application/json" \
-d '\{"subtasks":[\{"assignee_user_ids":[\{\}],"auto_log_time":"boolean","billable":"boolean","color":"string","description":"string","end_date":"string","estimated_mins":"integer","ghost_assignee_ids":[\{\}],"integration_ext_id":"integer","integration_source":"string","name":"string","notes":"string","pinned":"boolean","position":"integer","priority":"string","priority_at":"string","private":"boolean","project_id":"integer","rrule":"string","start_date":"string","status_id":"integer","tag_ids":[\{\}]\}],"task":\{"assignee_user_ids":[\{\}],"auto_log_time":"boolean","billable":"boolean","color":"string","description":"string","end_date":"string","estimated_mins":"integer","ghost_assignee_ids":[\{\}],"integration_ext_id":"integer","integration_source":"string","name":"string","notes":"string","parent_task_id":"integer","pinned":"boolean","position":"integer","priority":"string","priority_at":"string","private":"boolean","project_id":"integer","recurring_task_id":"integer","rrule":"string","start_date":"string","status_id":"integer","tag_ids":[\{\}]\},"time_blocks":[\{"completed":"boolean","duration":"integer","outbound_sync":"boolean","start":"string"\}],"time_entry":\{"duration":"integer","start":"string","time_block":\{"completed":"boolean","duration":"integer","outbound_sync":"boolean","start":"string"\},"time_block_id":"integer","type":\{\}\}\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
subtasksArray of object-
taskobject-
time_blocksArray of object-
time_entryobject-
subtasks
NameTypeDescription
assignee_user_idsArray of integer-
auto_log_timeboolean-
billableboolean-
colorstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
ghost_assignee_idsArray of integer-
integration_ext_idinteger-
integration_sourcestring-
namestring-
notesstring-
pinnedboolean-
positionintegernull
prioritystring-
priority_atstring-
privateboolean-
project_idinteger-
rrulestringnull
start_datestring-
status_idinteger-
tag_idsArray of integer-
task
NameTypeDescription
assignee_user_idsArray of integer-
auto_log_timeboolean-
billableboolean-
colorstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
ghost_assignee_idsArray of integer-
integration_ext_idinteger-
integration_sourcestring-
namestring-
notesstring-
parent_task_idinteger-
pinnedboolean-
positionintegernull
prioritystring-
priority_atstring-
privateboolean-
project_idinteger-
recurring_task_idinteger-
rrulestringnull
start_datestring-
status_idinteger-
tag_idsArray of integer-
time_blocks
NameTypeDescription
completedboolean-
durationinteger-
outbound_syncboolean-
startstring-
time_entry
NameTypeDescription
durationinteger-
startstring-
time_blockobject-
time_block_idinteger-
typeobject-
time_block
NameTypeDescription
completedboolean-
durationinteger-
outbound_syncboolean-
startstring-

Response

201

Composite task creation success

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

POST Creates the main task, subtasks, time blocks and time entries in bulk

https://focus.toggl.com/api/workspaces/{workspace_id}/composite/tasks

Creates the main task, subtasks, time blocks and time entries in bulk.

curl -X POST https://focus.toggl.com/api/workspaces/{workspace_id}/composite/tasks \
-H "Content-Type: application/json" \
-d '\{"subtasks":[\{"assignee_user_ids":[\{\}],"auto_log_time":"boolean","billable":"boolean","color":"string","description":"string","end_date":"string","estimated_mins":"integer","ghost_assignee_ids":[\{\}],"integration_ext_id":"integer","integration_source":"string","name":"string","notes":"string","pinned":"boolean","position":"integer","priority":"string","priority_at":"string","private":"boolean","project_id":"integer","rrule":"string","start_date":"string","status_id":"integer","tag_ids":[\{\}]\}],"task":\{"assignee_user_ids":[\{\}],"auto_log_time":"boolean","billable":"boolean","color":"string","description":"string","end_date":"string","estimated_mins":"integer","ghost_assignee_ids":[\{\}],"integration_ext_id":"integer","integration_source":"string","name":"string","notes":"string","parent_task_id":"integer","pinned":"boolean","position":"integer","priority":"string","priority_at":"string","private":"boolean","project_id":"integer","recurring_task_id":"integer","rrule":"string","start_date":"string","status_id":"integer","tag_ids":[\{\}]\},"time_blocks":[\{"completed":"boolean","duration":"integer","outbound_sync":"boolean","start":"string"\}],"time_entry":\{"duration":"integer","start":"string","time_block":\{"completed":"boolean","duration":"integer","outbound_sync":"boolean","start":"string"\},"time_block_id":"integer","type":\{\}\}\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
subtasksArray of object-
taskobject-
time_blocksArray of object-
time_entryobject-
subtasks
NameTypeDescription
assignee_user_idsArray of integer-
auto_log_timeboolean-
billableboolean-
colorstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
ghost_assignee_idsArray of integer-
integration_ext_idinteger-
integration_sourcestring-
namestring-
notesstring-
pinnedboolean-
positionintegernull
prioritystring-
priority_atstring-
privateboolean-
project_idinteger-
rrulestringnull
start_datestring-
status_idinteger-
tag_idsArray of integer-
task
NameTypeDescription
assignee_user_idsArray of integer-
auto_log_timeboolean-
billableboolean-
colorstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
ghost_assignee_idsArray of integer-
integration_ext_idinteger-
integration_sourcestring-
namestring-
notesstring-
parent_task_idinteger-
pinnedboolean-
positionintegernull
prioritystring-
priority_atstring-
privateboolean-
project_idinteger-
recurring_task_idinteger-
rrulestringnull
start_datestring-
status_idinteger-
tag_idsArray of integer-
time_blocks
NameTypeDescription
completedboolean-
durationinteger-
outbound_syncboolean-
startstring-
time_entry
NameTypeDescription
durationinteger-
startstring-
time_blockobject-
time_block_idinteger-
typeobject-
time_block
NameTypeDescription
completedboolean-
durationinteger-
outbound_syncboolean-
startstring-

Response

201

Composite task creation success

400

Invalid request

403

Insufficient permissions

500

Internal Server Error

© 2026 Toggl. All rights reserved.