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
with_group_membersbooleanfalseInclude group members

Response

[
{
"at": {
"description": "When was last modified",
"type": "string"
},
"gid": {
"description": "Group ID, legacy field",
"type": "integer"
},
"group_id": {
"description": "Group ID",
"type": "integer"
},
"id": {
"description": "Project User ID",
"type": "integer"
},
"labour_cost": {
"description": "Labour cost for this project user",
"type": "integer"
},
"manager": {
"description": "Whether the user is manager of the project",
"type": "boolean"
},
"project_id": {
"description": "Project ID",
"type": "integer"
},
"rate": {
"description": "Custom rate for project user",
"type": "number",
"nullable": true
},
"rate_last_updated": {
"description": "Date for rate last updated",
"type": "string"
},
"user_id": {
"description": "User ID",
"type": "integer"
},
"workspace_id": {
"description": "Workspace ID",
"type": "integer"
}
}
]

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 '{"labour_cost":"integer","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
labour_costintegerLabour cost for this project user
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

{
"at": {
"description": "When was last modified",
"type": "string"
},
"gid": {
"description": "Group ID, legacy field",
"type": "integer"
},
"group_id": {
"description": "Group ID",
"type": "integer"
},
"id": {
"description": "Project User ID",
"type": "integer"
},
"labour_cost": {
"description": "Labour cost for this project user",
"type": "integer"
},
"manager": {
"description": "Whether the user is manager of the project",
"type": "boolean"
},
"project_id": {
"description": "Project ID",
"type": "integer"
},
"rate": {
"description": "Custom rate for project user",
"type": "number",
"nullable": true
},
"rate_last_updated": {
"description": "Date for rate last updated",
"type": "string"
},
"user_id": {
"description": "User ID",
"type": "integer"
},
"workspace_id": {
"description": "Workspace ID",
"type": "integer"
}
}

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

Query

nametyperequireddescription
project_user_ids[]integertrueNumeric IDs of the project users

Response

{
"failure": {
"description": "List of found errors",
"items": [
{
"id": {
"description": "Organization user ID",
"type": "integer"
},
"message": {
"description": "Found error message",
"type": "string"
}
}
]
},
"success": {
"description": "List of org user IDs that were successfully patched",
"type": [
"integer"
]
}
}

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 '{"labour_cost":"integer","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
labour_costintegerLabour cost for this project user
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

{
"at": {
"description": "When was last modified",
"type": "string"
},
"gid": {
"description": "Group ID, legacy field",
"type": "integer"
},
"group_id": {
"description": "Group ID",
"type": "integer"
},
"id": {
"description": "Project User ID",
"type": "integer"
},
"labour_cost": {
"description": "Labour cost for this project user",
"type": "integer"
},
"manager": {
"description": "Whether the user is manager of the project",
"type": "boolean"
},
"project_id": {
"description": "Project ID",
"type": "integer"
},
"rate": {
"description": "Custom rate for project user",
"type": "number",
"nullable": true
},
"rate_last_updated": {
"description": "Date for rate last updated",
"type": "string"
},
"user_id": {
"description": "User ID",
"type": "integer"
},
"workspace_id": {
"description": "Workspace ID",
"type": "integer"
}
}

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

Successful operation.

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
activebooleanfalseactive
sinceintegerfalseRetrieve projects created/modified/deleted since this date using UNIX timestamp.
billablebooleanfalsebillable
user_idsarrayfalseuser_ids
client_idsarrayfalseclient_ids
group_idsarrayfalsegroup_ids
namestringtruename
pageintegertruepage
sort_fieldstringtruesort_field
sort_orderstringtruesort_order
only_templatesbooleantrueonly_templates
per_pageintegerfalseNumber of records per page.

Response

[
{
"active": {
"description": "Whether the project is active or archived",
"type": "boolean"
},
"actual_hours": {
"description": "Actual hours",
"type": "integer",
"nullable": true
},
"at": {
"description": "Last updated date",
"type": "string"
},
"auto_estimates": {
"description": "Whether estimates are based on task hours, premium feature",
"type": "boolean",
"nullable": true
},
"billable": {
"description": "Whether the project is billable, premium feature",
"type": "boolean",
"nullable": true
},
"cid": {
"description": "Client ID legacy field",
"type": "integer"
},
"client_id": {
"description": "Client ID",
"type": "integer",
"nullable": true
},
"color": {
"description": "Color",
"type": "string"
},
"created_at": {
"description": "Creation date",
"type": "string"
},
"currency": {
"description": "Currency, premium feature",
"type": "string",
"nullable": true
},
"current_period": {
"object": {
"end_date": {
"type": "string"
},
"start_date": {
"type": "string"
}
},
"description": "Current project period, premium feature"
},
"end_date": {
"description": "End date",
"type": "string"
},
"estimated_hours": {
"description": "Estimated hours",
"type": "integer",
"nullable": true
},
"first_time_entry": {
"description": "First time entry for this project. Only included if it was requested with with_first_time_entry",
"type": "string"
},
"fixed_fee": {
"description": "Fixed fee, premium feature",
"type": "number"
},
"id": {
"description": "Project ID",
"type": "integer"
},
"is_private": {
"description": "Whether the project is private",
"type": "boolean"
},
"name": {
"description": "Name",
"type": "string"
},
"rate": {
"description": "Hourly rate",
"type": "number"
},
"rate_last_updated": {
"description": "Last date for rate change",
"type": "string",
"nullable": true
},
"recurring": {
"description": "Whether the project is recurring, premium feature",
"type": "boolean"
},
"recurring_parameters": {
"description": "Project recurring parameters, premium feature",
"items": [
{
"custom_period": {
"description": "Custom period, used when \"period\" field is \"custom\"",
"type": "integer"
},
"estimated_seconds": {
"description": "Estimated seconds",
"type": "integer"
},
"parameter_end_date": {
"description": "Recurring end date",
"type": "string",
"nullable": true
},
"parameter_start_date": {
"description": "Recurring start date",
"type": "string"
},
"period": {
"description": "Period",
"type": "string"
},
"project_start_date": {
"description": "Project start date",
"type": "string"
}
}
]
},
"server_deleted_at": {
"description": "Deletion date",
"type": "string",
"nullable": true
},
"start_date": {
"description": "Start date",
"type": "string"
},
"template": {
"description": "Whether the project is used as template, premium feature",
"type": "boolean",
"nullable": true
},
"wid": {
"description": "Workspace ID legacy field",
"type": "integer"
},
"workspace_id": {
"description": "Workspace ID",
"type": "integer"
}
}
]

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","fixed_fee":"number","is_private":"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
fixed_feenumberProject fixed fee, optional, premium feature
is_privatebooleanWhether the project is private or not
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_parameters
nametypedescription
custom_periodintegerRecurring custom period, the "period" field must be "custom"
periodstringRecurring period, example "monthly"
project_start_datestringRecurring start date
Project recurring parameters, optional, premium feature
start_datestringStart date of a project timeframe
templatebooleanProject is template, optional, premium feature
template_idintegerTemplate ID, optional

Response

{
"active": {
"description": "Whether the project is active or archived",
"type": "boolean"
},
"actual_hours": {
"description": "Actual hours",
"type": "integer",
"nullable": true
},
"at": {
"description": "Last updated date",
"type": "string"
},
"auto_estimates": {
"description": "Whether estimates are based on task hours, premium feature",
"type": "boolean",
"nullable": true
},
"billable": {
"description": "Whether the project is billable, premium feature",
"type": "boolean",
"nullable": true
},
"cid": {
"description": "Client ID legacy field",
"type": "integer"
},
"client_id": {
"description": "Client ID",
"type": "integer",
"nullable": true
},
"color": {
"description": "Color",
"type": "string"
},
"created_at": {
"description": "Creation date",
"type": "string"
},
"currency": {
"description": "Currency, premium feature",
"type": "string",
"nullable": true
},
"current_period": {
"object": {
"end_date": {
"type": "string"
},
"start_date": {
"type": "string"
}
},
"description": "Current project period, premium feature"
},
"end_date": {
"description": "End date",
"type": "string"
},
"estimated_hours": {
"description": "Estimated hours",
"type": "integer",
"nullable": true
},
"first_time_entry": {
"description": "First time entry for this project. Only included if it was requested with with_first_time_entry",
"type": "string"
},
"fixed_fee": {
"description": "Fixed fee, premium feature",
"type": "number"
},
"id": {
"description": "Project ID",
"type": "integer"
},
"is_private": {
"description": "Whether the project is private",
"type": "boolean"
},
"name": {
"description": "Name",
"type": "string"
},
"rate": {
"description": "Hourly rate",
"type": "number"
},
"rate_last_updated": {
"description": "Last date for rate change",
"type": "string",
"nullable": true
},
"recurring": {
"description": "Whether the project is recurring, premium feature",
"type": "boolean"
},
"recurring_parameters": {
"description": "Project recurring parameters, premium feature",
"items": [
{
"custom_period": {
"description": "Custom period, used when \"period\" field is \"custom\"",
"type": "integer"
},
"estimated_seconds": {
"description": "Estimated seconds",
"type": "integer"
},
"parameter_end_date": {
"description": "Recurring end date",
"type": "string",
"nullable": true
},
"parameter_start_date": {
"description": "Recurring start date",
"type": "string"
},
"period": {
"description": "Period",
"type": "string"
},
"project_start_date": {
"description": "Project start date",
"type": "string"
}
}
]
},
"server_deleted_at": {
"description": "Deletion date",
"type": "string",
"nullable": true
},
"start_date": {
"description": "Start date",
"type": "string"
},
"template": {
"description": "Whether the project is used as template, premium feature",
"type": "boolean",
"nullable": true
},
"wid": {
"description": "Workspace ID legacy field",
"type": "integer"
},
"workspace_id": {
"description": "Workspace ID",
"type": "integer"
}
}

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 '{"array":[{"op":{"description":"Patch operation to perform, one of "add", "remove", "replace"","type":"string"},"path":{"description":"Path to the field to patch, example: "/name"","type":"string"},"value":{"object":{},"description":"Value to set when operation is "add" or "replace", example: "New name". The value type actually depends on the field being patched."}}]}' \
-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
arrayArray of
nametypedescription
opstringPatch operation to perform, one of "add", "remove", "replace"
pathstringPath to the field to patch, example: "/name"
valueValue to set when operation is "add" or "replace", example: "New name". The value type actually depends on the field being patched.
Array of batch operations

Response

{
"failure": {
"items": [
{
"id": {
"type": "integer"
},
"message": {
"type": "string"
}
}
]
},
"success": {
"type": [
"integer"
]
}
}

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

Query

nametyperequireddescription
with_first_time_entrybooleanfalseWill include the first time entry date of the project

Response

{
"active": {
"description": "Whether the project is active or archived",
"type": "boolean"
},
"actual_hours": {
"description": "Actual hours",
"type": "integer",
"nullable": true
},
"at": {
"description": "Last updated date",
"type": "string"
},
"auto_estimates": {
"description": "Whether estimates are based on task hours, premium feature",
"type": "boolean",
"nullable": true
},
"billable": {
"description": "Whether the project is billable, premium feature",
"type": "boolean",
"nullable": true
},
"cid": {
"description": "Client ID legacy field",
"type": "integer"
},
"client_id": {
"description": "Client ID",
"type": "integer",
"nullable": true
},
"color": {
"description": "Color",
"type": "string"
},
"created_at": {
"description": "Creation date",
"type": "string"
},
"currency": {
"description": "Currency, premium feature",
"type": "string",
"nullable": true
},
"current_period": {
"object": {
"end_date": {
"type": "string"
},
"start_date": {
"type": "string"
}
},
"description": "Current project period, premium feature"
},
"end_date": {
"description": "End date",
"type": "string"
},
"estimated_hours": {
"description": "Estimated hours",
"type": "integer",
"nullable": true
},
"first_time_entry": {
"description": "First time entry for this project. Only included if it was requested with with_first_time_entry",
"type": "string"
},
"fixed_fee": {
"description": "Fixed fee, premium feature",
"type": "number"
},
"id": {
"description": "Project ID",
"type": "integer"
},
"is_private": {
"description": "Whether the project is private",
"type": "boolean"
},
"name": {
"description": "Name",
"type": "string"
},
"rate": {
"description": "Hourly rate",
"type": "number"
},
"rate_last_updated": {
"description": "Last date for rate change",
"type": "string",
"nullable": true
},
"recurring": {
"description": "Whether the project is recurring, premium feature",
"type": "boolean"
},
"recurring_parameters": {
"description": "Project recurring parameters, premium feature",
"items": [
{
"custom_period": {
"description": "Custom period, used when \"period\" field is \"custom\"",
"type": "integer"
},
"estimated_seconds": {
"description": "Estimated seconds",
"type": "integer"
},
"parameter_end_date": {
"description": "Recurring end date",
"type": "string",
"nullable": true
},
"parameter_start_date": {
"description": "Recurring start date",
"type": "string"
},
"period": {
"description": "Period",
"type": "string"
},
"project_start_date": {
"description": "Project start date",
"type": "string"
}
}
]
},
"server_deleted_at": {
"description": "Deletion date",
"type": "string",
"nullable": true
},
"start_date": {
"description": "Start date",
"type": "string"
},
"template": {
"description": "Whether the project is used as template, premium feature",
"type": "boolean",
"nullable": true
},
"wid": {
"description": "Workspace ID legacy field",
"type": "integer"
},
"workspace_id": {
"description": "Workspace ID",
"type": "integer"
}
}

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","fixed_fee":"number","is_private":"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
fixed_feenumberProject fixed fee, optional, premium feature
is_privatebooleanWhether the project is private or not
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_parameters
nametypedescription
custom_periodintegerRecurring custom period, the "period" field must be "custom"
periodstringRecurring period, example "monthly"
project_start_datestringRecurring start date
Project recurring parameters, optional, premium feature
start_datestringStart date of a project timeframe
templatebooleanProject is template, optional, premium feature
template_idintegerTemplate ID, optional

Response

{
"active": {
"description": "Whether the project is active or archived",
"type": "boolean"
},
"actual_hours": {
"description": "Actual hours",
"type": "integer",
"nullable": true
},
"at": {
"description": "Last updated date",
"type": "string"
},
"auto_estimates": {
"description": "Whether estimates are based on task hours, premium feature",
"type": "boolean",
"nullable": true
},
"billable": {
"description": "Whether the project is billable, premium feature",
"type": "boolean",
"nullable": true
},
"cid": {
"description": "Client ID legacy field",
"type": "integer"
},
"client_id": {
"description": "Client ID",
"type": "integer",
"nullable": true
},
"color": {
"description": "Color",
"type": "string"
},
"created_at": {
"description": "Creation date",
"type": "string"
},
"currency": {
"description": "Currency, premium feature",
"type": "string",
"nullable": true
},
"current_period": {
"object": {
"end_date": {
"type": "string"
},
"start_date": {
"type": "string"
}
},
"description": "Current project period, premium feature"
},
"end_date": {
"description": "End date",
"type": "string"
},
"estimated_hours": {
"description": "Estimated hours",
"type": "integer",
"nullable": true
},
"first_time_entry": {
"description": "First time entry for this project. Only included if it was requested with with_first_time_entry",
"type": "string"
},
"fixed_fee": {
"description": "Fixed fee, premium feature",
"type": "number"
},
"id": {
"description": "Project ID",
"type": "integer"
},
"is_private": {
"description": "Whether the project is private",
"type": "boolean"
},
"name": {
"description": "Name",
"type": "string"
},
"rate": {
"description": "Hourly rate",
"type": "number"
},
"rate_last_updated": {
"description": "Last date for rate change",
"type": "string",
"nullable": true
},
"recurring": {
"description": "Whether the project is recurring, premium feature",
"type": "boolean"
},
"recurring_parameters": {
"description": "Project recurring parameters, premium feature",
"items": [
{
"custom_period": {
"description": "Custom period, used when \"period\" field is \"custom\"",
"type": "integer"
},
"estimated_seconds": {
"description": "Estimated seconds",
"type": "integer"
},
"parameter_end_date": {
"description": "Recurring end date",
"type": "string",
"nullable": true
},
"parameter_start_date": {
"description": "Recurring start date",
"type": "string"
},
"period": {
"description": "Period",
"type": "string"
},
"project_start_date": {
"description": "Project start date",
"type": "string"
}
}
]
},
"server_deleted_at": {
"description": "Deletion date",
"type": "string",
"nullable": true
},
"start_date": {
"description": "Start date",
"type": "string"
},
"template": {
"description": "Whether the project is used as template, premium feature",
"type": "boolean",
"nullable": true
},
"wid": {
"description": "Workspace ID legacy field",
"type": "integer"
},
"workspace_id": {
"description": "Workspace ID",
"type": "integer"
}
}

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

Response

Successful operation.
© 2023 Toggl. All rights reserved.