Skip to main content

Projects

GET Get workspace projects users​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users

List all projects users for a given workspace.

curl  https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace

Query​

nametyperequireddescription
project_idsstringfalseNumeric IDs of projects, comma-separated
user_idstringfalseNumeric ID of user, if passed returns only project users for this user's projects
with_group_membersbooleanfalseInclude group members

Response​

200​

NameTypeDescription
itemsArray of object-
items​
NameTypeDescription
atstringWhen was last modified
gidintegerGroup ID, legacy field
group_idintegerGroup ID
idintegerProject User ID
labor_costnumbernull
labor_cost_last_updatedstringDate for labor cost last updated
managerbooleanWhether the user is manager of the project
project_idintegerProject ID
ratenumbernull
rate_last_updatedstringDate for rate last updated
user_idintegerUser ID
workspace_idintegerWorkspace ID

400​

Possible error messages:

  • Workspace not found
  • project_ids cannot exceed 200 elements.
  • Invalid user_id

403​

User does not have access to this resource.

500​

Internal Server Error

POST Add an user into workspace projects users​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users

Include a project user for a given workspace.

curl -X POST https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users \
-H "Content-Type: application/json" \
-d '\{"labor_cost":"number","labor_cost_change_mode":"string","manager":"boolean","project_id":"integer","rate":"number","rate_change_mode":"string","user_id":"integer"\}' \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace

Body​

NameTypeDescription
labor_costnumberLabor cost for this project user
labor_cost_change_modestringLabor cost change mode for this project user. Can be "start-today", "override-current", "override-all"
managerbooleanWhether the user will be manager of the project
project_idintegerProject ID
ratenumberRate for this project user
rate_change_modestringRate change mode for this project user. Can be "start-today", "override-current", "override-all"
user_idintegerUser ID

Response​

200​

NameTypeDescription
atstringWhen was last modified
gidintegerGroup ID, legacy field
group_idintegerGroup ID
idintegerProject User ID
labor_costnumbernull
labor_cost_last_updatedstringDate for labor cost last updated
managerbooleanWhether the user is manager of the project
project_idintegerProject ID
ratenumbernull
rate_last_updatedstringDate for rate last updated
user_idintegerUser ID
workspace_idintegerWorkspace ID

400​

Possible error messages:

  • Workspace not found
  • Invalid project_id
  • Invalid user_id
  • Project user already exists

403​

User does not have access to this resource.

500​

Internal Server Error

PATCH Patch project users from workspace​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users/{project_user_ids}

Patch a list of project users for a given workspace.

curl -X PATCH https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users/{project_user_ids} \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace
project_user_ids[]integertrueNumeric IDs of the project users

Response​

200​

NameTypeDescription
failureArray of objectList of found errors
successArray of integerList of org user IDs that were successfully patched
failure​
NameTypeDescription
idintegerOrganization user ID
messagestringFound error message

400​

Possible error messages:

  • Invalid value as user IDs
  • No patchable fields defined
  • PATCH expects at least one ID
  • PATCH request is limited to %d entries at once
  • Invalid op:
  • Invalid path format:
  • Path not found:
  • Operation not supported ({patch_operation} {patch_path})
  • Invalid path
  • /manager expects a boolean
  • /labor_cost expects an float64 or null
  • /rate expects an float64 or null
  • Operation not supported (add /labor_cost)
  • Operation not supported (add /rate)
  • Operation not supported (add /manager)

403​

User does not have access to this resource.

500​

Internal Server Error

PUT Update an user into workspace projects users​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users/{project_user_id}

Update the data for a project user for a given workspace.

curl -X PUT https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users/{project_user_id} \
-H "Content-Type: application/json" \
-d '\{"labor_cost":"number","labor_cost_change_mode":"string","manager":"boolean","rate":"number","rate_change_mode":"string"\}' \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace
project_user_idintegertrueNumeric ID of the project user

Body​

NameTypeDescription
labor_costnumberLabor cost for this project user
labor_cost_change_modestringLabor cost change mode for this project user. Can be "start-today", "override-current", "override-all"
managerbooleanWhether the user will be manager of the project
ratenumberRate for this project user
rate_change_modestringRate change mode for this project user. Can be "start-today", "override-current", "override-all"

Response​

200​

NameTypeDescription
atstringWhen was last modified
gidintegerGroup ID, legacy field
group_idintegerGroup ID
idintegerProject User ID
labor_costnumbernull
labor_cost_last_updatedstringDate for labor cost last updated
managerbooleanWhether the user is manager of the project
project_idintegerProject ID
ratenumbernull
rate_last_updatedstringDate for rate last updated
user_idintegerUser ID
workspace_idintegerWorkspace ID

400​

Possible error messages:

  • Workspace not found
  • Missing data
  • Invalid project_id
  • Invalid user_id

403​

User does not have access to this resource.

500​

Internal Server Error

DELETE Delete a project user from workspace projects users​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users/{project_user_id}

Delete a project user for a given workspace.

curl -X DELETE https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/project_users/{project_user_id} \
-H "Content-Type: application/json" \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace
project_user_idintegertrueNumeric ID of the project user

Response​

200​

Successful operation.

400​

Possible error messages:

  • Workspace not found
  • Project user not found/accessible
  • Invalid project_id

403​

User does not have access to this resource.

500​

Internal Server Error

GET WorkspaceProjects​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects

Get projects for given workspace.

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

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace

Query​

nametyperequireddescription
activebooleanfalseReturn active or inactive project. You can pass 'both' to get both active and inactive projects.
sinceintegerfalseRetrieve projects created/modified/deleted since this date using UNIX timestamp.
billablebooleanfalsebillable
user_ids[]integerfalseuser_ids
client_ids[]integerfalseclient_ids
group_ids[]integerfalsegroup_ids
project_ids[]integerfalseNumeric IDs of the projects
statuses[]stringfalsestatuses
namestringtruename
pageintegertruepage
sort_fieldstringtruesort_field
sort_orderstringtruesort_order
only_templatesbooleantrueonly_templates
only_mebooleanfalseget only projects assigned to the current user
only_editablebooleanfalseget only projects the current user can edit
per_pageintegerfalseNumber of items per page, default 151. Cannot exceed 200.
sort_pinnedbooleantruePlace pinned projects at top of response
searchstringtruesearch

Response​

200​

NameTypeDescription
itemsArray of object-
items​
NameTypeDescription
activebooleanWhether the project is active or archived
actual_hoursintegernull
actual_secondsintegernull
atstringLast updated date
auto_estimatesbooleannull
billablebooleannull
can_track_timeboolean-
cidintegerClient ID legacy field
client_idintegernull
client_namestring-
colorstringColor
created_atstringCreation date
currencystringnull
current_periodobjectCurrent project period, premium feature
end_datestringEnd date
estimated_hoursintegernull
estimated_secondsintegernull
external_referencestringExternalReference can be used to store an external reference to the Track Project Entity.
fixed_feenumberFixed fee, premium feature
idintegerProject ID
integration_ext_idstringThe external ID of the linked entity in the external system (e.g. JIRA/SalesForce)
integration_ext_typestringThe external type of the linked entity in the external system (e.g. JIRA/SalesForce)
integration_providerstringThe provider (e.g. JIRA/SalesForce) that has an entity linked to this Toggl Track entity. Valid values: asana, jira, salesforce, focus.
is_privatebooleanWhether the project is private
namestringName
permissionsArray of string-
pinnedboolean-
ratenumberHourly rate
rate_last_updatedstringnull
recurringbooleanWhether the project is recurring, premium feature
recurring_parametersArray of objectProject recurring parameters, premium feature
start_datestringStart date
statusstringStatus of the project (upcoming, active, ended, archived, deleted). Valid values: upcoming, active, ended, archived, deleted.
templatebooleannull
template_idintegernull
total_countintegerTotal number of projects found
widintegerWorkspace ID legacy field
workspace_default_currencystringnull
workspace_idintegerWorkspace ID
current_period​
NameTypeDescription
end_datestring-
start_datestring-
recurring_parameters​
NameTypeDescription
custom_periodintegerCustom period, used when "period" field is "custom"
estimated_secondsintegerEstimated seconds
parameter_end_datestringnull
parameter_start_datestringRecurring start date
periodstringPeriod
project_start_datestringProject start date

403​

User does not have access to this resource.

500​

Internal Server Error

POST WorkspaceProjects​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects

Create project for given workspace.

curl -X POST https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects \
-H "Content-Type: application/json" \
-d '\{"active":"boolean","auto_estimates":"boolean","billable":"boolean","cid":"integer","client_id":"integer","client_name":"string","color":"string","currency":"string","end_date":"string","estimated_hours":"integer","external_reference":"string","fixed_fee":"number","is_private":"boolean","is_shared":"boolean","name":"string","rate":"number","rate_change_mode":"string","recurring":"boolean","recurring_parameters":\{"custom_period":"integer","period":"string","project_start_date":"string"\},"start_date":"string","template":"boolean","template_id":"integer"\}' \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace

Body​

NameTypeDescription
activebooleanWhether the project is active or archived
auto_estimatesbooleanWhether estimates are based on task hours, optional, premium feature
billablebooleanWhether the project is set as billable, optional, premium feature
cidintegerClient ID, legacy
client_idintegerClient ID, optional
client_namestringClient name, optional
colorstringProject color
currencystringProject currency, optional, premium feature
end_datestringEnd date of a project timeframe
estimated_hoursintegerEstimated hours, optional, premium feature
external_referencestring-
fixed_feenumberProject fixed fee, optional, premium feature
is_privatebooleanWhether the project is private or not
is_sharedbooleanShared
namestringProject name
ratenumberHourly rate, optional, premium feature
rate_change_modestringRate change mode, optional, premium feature. Can be "start-today", "override-current", "override-all"
recurringbooleanProject is recurring, optional, premium feature
recurring_parametersobjectProject recurring parameters, optional, premium feature
start_datestringStart date of a project timeframe
templatebooleanProject is template, optional, premium feature
template_idintegerTemplate ID, optional
recurring_parameters​
NameTypeDescription
custom_periodintegerRecurring custom period, the "period" field must be "custom"
periodstringRecurring period, example "monthly"
project_start_datestringRecurring start date

Response​

200​

NameTypeDescription
activebooleanWhether the project is active or archived
actual_hoursintegernull
actual_secondsintegernull
atstringLast updated date
auto_estimatesbooleannull
billablebooleannull
can_track_timeboolean-
cidintegerClient ID legacy field
client_idintegernull
client_namestring-
colorstringColor
created_atstringCreation date
currencystringnull
current_periodobjectCurrent project period, premium feature
end_datestringEnd date
estimated_hoursintegernull
estimated_secondsintegernull
external_referencestringExternalReference can be used to store an external reference to the Track Project Entity.
fixed_feenumberFixed fee, premium feature
idintegerProject ID
integration_ext_idstringThe external ID of the linked entity in the external system (e.g. JIRA/SalesForce)
integration_ext_typestringThe external type of the linked entity in the external system (e.g. JIRA/SalesForce)
integration_providerstringThe provider (e.g. JIRA/SalesForce) that has an entity linked to this Toggl Track entity. Valid values: asana, jira, salesforce, focus.
is_privatebooleanWhether the project is private
namestringName
permissionsArray of string-
pinnedboolean-
ratenumberHourly rate
rate_last_updatedstringnull
recurringbooleanWhether the project is recurring, premium feature
recurring_parametersArray of objectProject recurring parameters, premium feature
start_datestringStart date
statusstringStatus of the project (upcoming, active, ended, archived, deleted). Valid values: upcoming, active, ended, archived, deleted.
templatebooleannull
template_idintegernull
total_countintegerTotal number of projects found
widintegerWorkspace ID legacy field
workspace_default_currencystringnull
workspace_idintegerWorkspace ID
current_period​
NameTypeDescription
end_datestring-
start_datestring-
recurring_parameters​
NameTypeDescription
custom_periodintegerCustom period, used when "period" field is "custom"
estimated_secondsintegerEstimated seconds
parameter_end_datestringnull
parameter_start_datestringRecurring start date
periodstringPeriod
project_start_datestringProject start date

403​

User does not have access to this resource.

500​

Internal Server Error

PATCH WorkspaceProjects​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects/{project_ids}

Bulk editing workspace projects.

curl -X PATCH https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects/{project_ids} \
-H "Content-Type: application/json" \
-d '[\{"op":"string","path":"string","value":\{\}\}]' \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace
project_idsstringtrueNumeric IDs of project ids, separated by comma. E.g.: 204301830,202700150,202687559

Body​

NameTypeDescription
itemsArray of object-
items​
NameTypeDescription
opstringPatch operation to perform, one of "add", "remove", "replace"
pathstringPath to the field to patch, example: "/color"
valueobjectValue to set when operation is "add" or "replace", example: "#000000". The value type actually depends on the field being patched.

Response​

200​

NameTypeDescription
failureArray of object-
successArray of integer-
failure​
NameTypeDescription
idinteger-
messagestring-

500​

Internal Server Error

GET WorkspaceProject​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects/{project_id}

Get project for given workspace.

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

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace
project_idintegertrueNumeric ID of the project

Response​

200​

NameTypeDescription
activebooleanWhether the project is active or archived
actual_hoursintegernull
actual_secondsintegernull
atstringLast updated date
auto_estimatesbooleannull
billablebooleannull
can_track_timeboolean-
cidintegerClient ID legacy field
client_idintegernull
client_namestring-
colorstringColor
created_atstringCreation date
currencystringnull
current_periodobjectCurrent project period, premium feature
end_datestringEnd date
estimated_hoursintegernull
estimated_secondsintegernull
external_referencestringExternalReference can be used to store an external reference to the Track Project Entity.
fixed_feenumberFixed fee, premium feature
idintegerProject ID
integration_ext_idstringThe external ID of the linked entity in the external system (e.g. JIRA/SalesForce)
integration_ext_typestringThe external type of the linked entity in the external system (e.g. JIRA/SalesForce)
integration_providerstringThe provider (e.g. JIRA/SalesForce) that has an entity linked to this Toggl Track entity. Valid values: asana, jira, salesforce, focus.
is_privatebooleanWhether the project is private
namestringName
permissionsArray of string-
pinnedboolean-
ratenumberHourly rate
rate_last_updatedstringnull
recurringbooleanWhether the project is recurring, premium feature
recurring_parametersArray of objectProject recurring parameters, premium feature
start_datestringStart date
statusstringStatus of the project (upcoming, active, ended, archived, deleted). Valid values: upcoming, active, ended, archived, deleted.
templatebooleannull
template_idintegernull
total_countintegerTotal number of projects found
widintegerWorkspace ID legacy field
workspace_default_currencystringnull
workspace_idintegerWorkspace ID
current_period​
NameTypeDescription
end_datestring-
start_datestring-
recurring_parameters​
NameTypeDescription
custom_periodintegerCustom period, used when "period" field is "custom"
estimated_secondsintegerEstimated seconds
parameter_end_datestringnull
parameter_start_datestringRecurring start date
periodstringPeriod
project_start_datestringProject start date

400​

Possible errors:

  • Invalid project_id

403​

User does not have access to this resource.

500​

Internal Server Error

PUT WorkspaceProject​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects/{project_id}

Update project for given workspace.

curl -X PUT https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects/{project_id} \
-H "Content-Type: application/json" \
-d '\{"active":"boolean","auto_estimates":"boolean","billable":"boolean","cid":"integer","client_id":"integer","client_name":"string","color":"string","currency":"string","end_date":"string","estimated_hours":"integer","external_reference":"string","fixed_fee":"number","is_private":"boolean","is_shared":"boolean","name":"string","rate":"number","rate_change_mode":"string","recurring":"boolean","recurring_parameters":\{"custom_period":"integer","period":"string","project_start_date":"string"\},"start_date":"string","template":"boolean","template_id":"integer"\}' \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace
project_idintegertrueNumeric ID of the project

Body​

NameTypeDescription
activebooleanWhether the project is active or archived
auto_estimatesbooleanWhether estimates are based on task hours, optional, premium feature
billablebooleanWhether the project is set as billable, optional, premium feature
cidintegerClient ID, legacy
client_idintegerClient ID, optional
client_namestringClient name, optional
colorstringProject color
currencystringProject currency, optional, premium feature
end_datestringEnd date of a project timeframe
estimated_hoursintegerEstimated hours, optional, premium feature
external_referencestring-
fixed_feenumberProject fixed fee, optional, premium feature
is_privatebooleanWhether the project is private or not
is_sharedbooleanShared
namestringProject name
ratenumberHourly rate, optional, premium feature
rate_change_modestringRate change mode, optional, premium feature. Can be "start-today", "override-current", "override-all"
recurringbooleanProject is recurring, optional, premium feature
recurring_parametersobjectProject recurring parameters, optional, premium feature
start_datestringStart date of a project timeframe
templatebooleanProject is template, optional, premium feature
template_idintegerTemplate ID, optional
recurring_parameters​
NameTypeDescription
custom_periodintegerRecurring custom period, the "period" field must be "custom"
periodstringRecurring period, example "monthly"
project_start_datestringRecurring start date

Response​

200​

NameTypeDescription
activebooleanWhether the project is active or archived
actual_hoursintegernull
actual_secondsintegernull
atstringLast updated date
auto_estimatesbooleannull
billablebooleannull
can_track_timeboolean-
cidintegerClient ID legacy field
client_idintegernull
client_namestring-
colorstringColor
created_atstringCreation date
currencystringnull
current_periodobjectCurrent project period, premium feature
end_datestringEnd date
estimated_hoursintegernull
estimated_secondsintegernull
external_referencestringExternalReference can be used to store an external reference to the Track Project Entity.
fixed_feenumberFixed fee, premium feature
idintegerProject ID
integration_ext_idstringThe external ID of the linked entity in the external system (e.g. JIRA/SalesForce)
integration_ext_typestringThe external type of the linked entity in the external system (e.g. JIRA/SalesForce)
integration_providerstringThe provider (e.g. JIRA/SalesForce) that has an entity linked to this Toggl Track entity. Valid values: asana, jira, salesforce, focus.
is_privatebooleanWhether the project is private
namestringName
permissionsArray of string-
pinnedboolean-
ratenumberHourly rate
rate_last_updatedstringnull
recurringbooleanWhether the project is recurring, premium feature
recurring_parametersArray of objectProject recurring parameters, premium feature
start_datestringStart date
statusstringStatus of the project (upcoming, active, ended, archived, deleted). Valid values: upcoming, active, ended, archived, deleted.
templatebooleannull
template_idintegernull
total_countintegerTotal number of projects found
widintegerWorkspace ID legacy field
workspace_default_currencystringnull
workspace_idintegerWorkspace ID
current_period​
NameTypeDescription
end_datestring-
start_datestring-
recurring_parameters​
NameTypeDescription
custom_periodintegerCustom period, used when "period" field is "custom"
estimated_secondsintegerEstimated seconds
parameter_end_datestringnull
parameter_start_datestringRecurring start date
periodstringPeriod
project_start_datestringProject start date

400​

Possible errors:

  • Client with the ID {client ID} isn't present in workspace {workspace ID}
  • Error in validating color '{color}'. Project color must be a hex value in the form of #[0-9a-f]{6}.

403​

Possible errors:

  • Only admins may create projects in this workspace
  • Only admins may create private projects in this workspace
  • User does not have access to this resource.

500​

Internal Server Error

DELETE WorkspaceProject​

https://api.track.toggl.com/api/v9/workspaces/{workspace_id}/projects/{project_id}

Delete project for given workspace.

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

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueNumeric ID of the workspace
project_idintegertrueNumeric ID of the project

Query​

nametyperequireddescription
teDeletionModestringfalseTime entries deletion mode: 'delete' or 'unassign'

Response​

200​

Successful operation.

400​

Possible errors:

  • Invalid project_id

403​

User does not have access to this resource.

500​

Internal Server Error

© 2026 Toggl. All rights reserved.