Skip to main content

Projects

GET List projects

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

Returns a list of projects based on the provided workspace ID and filter params.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
pageintegerfalsepage number
per_pageintegerfalseresults per page
order_by[]stringfalseorder by
pinnedbooleanfalsefilter by only pinned tasks
archivedbooleanfalsefilter by archived state (true = archived only, false = active only, omit = active only, empty = all projects)
privatebooleanfalsefilter by project privacy (true for private, false for public)
namestringfalsefilter by project name
client_id[]integerfalsefilter by client IDs
creator_id[]integerfalsefilter by project creator id
tag_id[]integerfalsefilter by tag IDs
project_id[]integerfalsefilter by project IDs
user_id[]integerfalsereturn only projects accessible by the given users (requires manage workspace users when inspecting another user)
include_ratesbooleanfalseincludes the projects' rate data
start_datestringfalsefilter projects overlapping date range (start). Used with end_date to find projects where project.start_date <= end_date AND project.end_date >= start_date
end_datestringfalsefilter projects overlapping date range (end). Used with start_date to find projects where project.start_date <= end_date AND project.end_date >= start_date
date_overlap_startstringfalse[LEGACY] use start_date instead
date_overlap_endstringfalse[LEGACY] use end_date instead

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
totalinteger-
data
NameTypeDescription
activeboolean-
archived_atstring-
auto_compute_estimatesboolean-
billableboolean-
clientobject-
client_idinteger-
colorstring-
created_atstring-
deleted_atstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
fixed_feeobject-
idinteger-
namestring-
parent_project_idinteger-
permissionsArray of string-
pinnedboolean-
privateboolean-
rateobject-
start_datestring-
tag_idsArray of integer-
tagsArray of object-
task_estimated_minsinteger-
toggl_user_idinteger-
total_tracked_timeinteger-
updated_atstring-
workspace_idinteger-
client
NameTypeDescription
idinteger-
namestring-
fixed_fee
NameTypeDescription
amountnumber-
currencystring-
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-
tags
NameTypeDescription
colorstring-
idinteger-
namestring-

400

Invalid request

500

Internal Server Error

POST Create a new project

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

Creates a new project with the provided name, workspace ID, parent project ID, and client ID.

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/projects \
-H "Content-Type: application/json" \
-d '\{"auto_compute_estimates":"boolean","billable":"boolean","client_id":"integer","color":"string","description":"string","end_date":"string","estimated_mins":"integer","fixed_fee":\{"amount":"number","currency":"string"\},"name":"string","parent_project_id":"integer","pinned":"boolean","private":"boolean","start_date":"string","tag_ids":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
auto_compute_estimatesboolean-
billableboolean-
client_idinteger-
colorstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
fixed_feeobject-
namestring-
parent_project_idinteger-
pinnedboolean-
privateboolean-
start_datestring-
tag_idsArray of integer-
fixed_fee
NameTypeDescription
amountnumber-
currencystring-

Response

201

Project created successfully

400

Invalid project parameters

500

Internal Server Error

GET Get a project by ID

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

Returns a project by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Response

200

NameTypeDescription
activeboolean-
archived_atstring-
auto_compute_estimatesboolean-
billableboolean-
clientobject-
client_idinteger-
colorstring-
created_atstring-
deleted_atstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
fixed_feeobject-
idinteger-
namestring-
parent_project_idinteger-
permissionsArray of string-
pinnedboolean-
privateboolean-
rateobject-
start_datestring-
tag_idsArray of integer-
tagsArray of object-
task_estimated_minsinteger-
toggl_user_idinteger-
total_tracked_timeinteger-
updated_atstring-
workspace_idinteger-
client
NameTypeDescription
idinteger-
namestring-
fixed_fee
NameTypeDescription
amountnumber-
currencystring-
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-
tags
NameTypeDescription
colorstring-
idinteger-
namestring-

400

Invalid request

404

Project does not exist

500

Internal Server Error

PUT Update project

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

Update an existing project

curl -X PUT https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/projects/{project_id} \
-H "Content-Type: application/json" \
-d '\{"auto_compute_estimates":"boolean","billable":"boolean","client_id":"integer","color":"string","description":"string","end_date":"string","estimated_mins":"integer","fixed_fee":\{"amount":"number","currency":"string"\},"name":"string","parent_project_id":"integer","pinned":"boolean","private":"boolean","start_date":"string","tag_ids":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueProject ID

Body

NameTypeDescription
auto_compute_estimatesboolean-
billableboolean-
client_idinteger-
colorstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
fixed_feeobject-
namestring-
parent_project_idinteger-
pinnedboolean-
privateboolean-
start_datestring-
tag_idsArray of integer-
fixed_fee
NameTypeDescription
amountnumber-
currencystring-

Response

201

Project updated successfully

400

Invalid request

404

Project does not exist

500

Internal Server Error

DELETE Delete a project by ID

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

Deletes a project by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Response

204

No Content

400

Invalid request

404

Project does not exist

500

Internal Server Error

PATCH Patch project

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

Partially update an existing project

curl -X PATCH https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/projects/{project_id} \
-H "Content-Type: application/json" \
-d '\{"auto_compute_estimates":"boolean","billable":"boolean","client_id":"integer","color":"string","description":"string","end_date":"string","estimated_mins":"integer","fixed_fee":\{\},"name":"string","parent_project_id":"integer","pinned":"boolean","private":"boolean","start_date":"string","tag_ids":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueProject ID

Body

NameTypeDescription
auto_compute_estimatesboolean-
billableboolean-
client_idintegernull
colorstringnull
descriptionstringnull
end_datestringnull
estimated_minsintegernull
fixed_feeobject-
namestring-
parent_project_idintegernull
pinnedboolean-
privateboolean-
start_datestringnull
tag_idsArray of integer-

Response

201

Project updated successfully

400

Invalid request

404

Project does not exist

500

Internal Server Error

PATCH Archives a project by ID

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

Archives a project by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Response

204

No Content

400

Invalid request

404

Project does not exist

500

Internal Server Error

GET Get a project with its children sub-projects by ID

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

Returns a project and its children sub-projects by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Query

nametyperequireddescription
pageintegerfalsepage number
per_pageintegerfalseresults per page
order_by[]stringfalseorder by

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
data
NameTypeDescription
activeboolean-
archived_atstring-
auto_compute_estimatesboolean-
billableboolean-
clientobject-
client_idinteger-
colorstring-
created_atstring-
deleted_atstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
fixed_feeobject-
idinteger-
namestring-
parent_project_idinteger-
permissionsArray of string-
pinnedboolean-
privateboolean-
rateobject-
start_datestring-
tag_idsArray of integer-
tagsArray of object-
task_estimated_minsinteger-
toggl_user_idinteger-
total_tracked_timeinteger-
updated_atstring-
workspace_idinteger-
client
NameTypeDescription
idinteger-
namestring-
fixed_fee
NameTypeDescription
amountnumber-
currencystring-
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-
tags
NameTypeDescription
colorstring-
idinteger-
namestring-

400

Invalid request

404

Project does not exist

500

Internal Server Error

GET List project memmbers

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

Returns a list of userIDs and groupIDs that are part of the given project.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Response

200

List of project members

NameTypeDescription
group_idsArray of object-
project_idinteger-
user_idsArray of object-
group_ids
NameTypeDescription
group_idinteger-
managerbooleannull
user_ids
NameTypeDescription
managerboolean-
user_idinteger-

400

Invalid request

403

Forbidden

404

Project not found

500

Internal Server Error

PUT Update project member role

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

Updates the role of a project member (user or group).

curl -X PUT https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/projects/{project_id}/members \
-H "Content-Type: application/json" \
-d '\{"group_id":"integer","role_id":"integer","user_id":"integer"\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Body

NameTypeDescription
group_idinteger-
role_idinteger-
user_idinteger-

Response

204

No Content

400

Invalid request

403

Forbidden

404

Project not found

500

Internal Server Error

POST Add project members

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

Adds users and groups to the given project.

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/projects/{project_id}/members \
-H "Content-Type: application/json" \
-d '\{"group_ids":[\{\}],"role_id":"integer","user_ids":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Body

NameTypeDescription
group_idsArray of integer-
role_idinteger-
user_idsArray of integer-

Response

204

No Content

400

Invalid request

403

Forbidden

404

Project not found

500

Internal Server Error

DELETE Remove project member

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

Removes a single user or group from the given project.

curl -X DELETE https://focus.toggl.com/api/organizations/{organization_id}/workspaces/{workspace_id}/projects/{project_id}/members \
-H "Content-Type: application/json" \
-d '\{"group_id":"integer","user_id":"integer"\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Body

NameTypeDescription
group_idinteger-
user_idinteger-

Response

204

No Content

400

Invalid request

403

Forbidden

404

Project not found

500

Internal Server Error

GET Get a project with its parent projects by ID

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

Returns a project and its parent projects by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Query

nametyperequireddescription
pageintegerfalsepage number
per_pageintegerfalseresults per page
order_by[]stringfalseorder by

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
data
NameTypeDescription
activeboolean-
archived_atstring-
auto_compute_estimatesboolean-
billableboolean-
clientobject-
client_idinteger-
colorstring-
created_atstring-
deleted_atstring-
descriptionstring-
end_datestring-
estimated_minsinteger-
fixed_feeobject-
idinteger-
namestring-
parent_project_idinteger-
permissionsArray of string-
pinnedboolean-
privateboolean-
rateobject-
start_datestring-
tag_idsArray of integer-
tagsArray of object-
toggl_user_idinteger-
updated_atstring-
workspace_idinteger-
client
NameTypeDescription
idinteger-
namestring-
fixed_fee
NameTypeDescription
amountnumber-
currencystring-
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-
tags
NameTypeDescription
colorstring-
idinteger-
namestring-

400

Invalid request

404

Project does not exist

500

Internal Server Error

POST Pin a project by ID

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

Pins a project by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Response

204

No Content

400

Invalid request

404

Project does not exist

500

Internal Server Error

DELETE Unpin a project by ID

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

Unpins a project by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Response

204

No Content

400

Invalid request

404

Project does not exist

500

Internal Server Error

PATCH Restore a project by ID

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

Restores a project by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Response

204

No Content

400

Invalid request

404

Project does not exist

500

Internal Server Error

PATCH Unarchive a project by ID

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

Unarchives a project by the provided ID.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
workspace_idintegertrueworkspace ID
project_idintegertrueproject ID

Response

204

No Content

400

Invalid request

404

Project does not exist

500

Internal Server Error

© 2026 Toggl. All rights reserved.