Skip to main content

Tags

GET List tags​

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

Returns a list of tags based on the workspace ID. With include_usage, each tag carries usage counts of the projects, tasks and time entries directly tagged with it; usage is omitted for callers whose project access is restricted.

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

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueworkspace ID

Query​

nametyperequireddescription
namestringfalsefilter by name
pageintegerfalsepage number
per_pageintegerfalseresults per page
order_by[]stringfalseorder by
tag_id[]integerfalsefilter by tag IDs
include_usagebooleanfalsehydrate per-tag usage counts (settings surface only; adds a warehouse read)
include_archivedbooleanfalselist archived tags alongside active ones; an explicit archived param still wins
archivedbooleanfalsefilter by archived state (true = archived only, false = active only, omit = active only, empty = all tags). Omitting it alongside tag_id returns those ids whatever their state, so an archived tag still attached to an entity resolves.

Response​

200​

NameTypeDescription
dataArray of object-
pageinteger-
per_pageinteger-
totalinteger-
data​
NameTypeDescription
archived_atstringAn archived tag disappears from the apply affordance but stays attached to and readable on every existing entity. Nothing cascades.
colorstring-
created_atstring-
deleted_atstring-
idinteger-
namestring-
updated_atstring-
usageobjectCounts of the projects, tasks and time entries whose tag set directly contains this tag. Only present on the tags list, for callers with unrestricted project access.
workspace_idinteger-
usage​
NameTypeDescription
projectsinteger-
tasksinteger-
time_entriesinteger-

400​

Invalid request

500​

Internal Server Error

POST Create a new tag​

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

Creates a new tag with the provided details.

curl -X POST https://focus.toggl.com/api/workspaces/{workspace_id}/tags \
-H "Content-Type: application/json" \
-d '\{"color":"string","name":"string"\}' \
-u <email>:<password>

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueworkspace ID

Body​

NameTypeDescription
colorstring-
namestring-

Response​

201​

Tag created successfully

400​

Invalid request

500​

Internal Server Error

GET Get tag by ID​

https://focus.toggl.com/api/workspaces/{workspace_id}/tags/{tag_id}

Returns a tag with the provided ID.

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

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueworkspace ID
tag_idintegertruetag ID

Response​

200​

NameTypeDescription
archived_atstringAn archived tag disappears from the apply affordance but stays attached to and readable on every existing entity. Nothing cascades.
colorstring-
created_atstring-
deleted_atstring-
idinteger-
namestring-
updated_atstring-
usageobjectCounts of the projects, tasks and time entries whose tag set directly contains this tag. Only present on the tags list, for callers with unrestricted project access.
workspace_idinteger-
usage​
NameTypeDescription
projectsinteger-
tasksinteger-
time_entriesinteger-

400​

Invalid request

500​

Internal Server Error

PUT Update tag​

https://focus.toggl.com/api/workspaces/{workspace_id}/tags/{tag_id}

Update an existing tag

curl -X PUT https://focus.toggl.com/api/workspaces/{workspace_id}/tags/{tag_id} \
-H "Content-Type: application/json" \
-d '\{"color":"string","name":"string"\}'

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueworkspace ID
tag_idintegertrueTag ID

Body​

NameTypeDescription
colorstring-
namestring-

Response​

200​

Successfully updated tag

NameTypeDescription
archived_atstringAn archived tag disappears from the apply affordance but stays attached to and readable on every existing entity. Nothing cascades.
colorstring-
created_atstring-
deleted_atstring-
idinteger-
namestring-
updated_atstring-
usageobjectCounts of the projects, tasks and time entries whose tag set directly contains this tag. Only present on the tags list, for callers with unrestricted project access.
workspace_idinteger-
usage​
NameTypeDescription
projectsinteger-
tasksinteger-
time_entriesinteger-

400​

Invalid request

500​

Internal Server Error

DELETE Delete a tag by ID​

https://focus.toggl.com/api/workspaces/{workspace_id}/tags/{tag_id}

Deletes a tag with the provided ID.

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

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueworkspace ID
tag_idintegertruetag ID

Response​

204​

Successfully deleted tag

400​

Invalid request

500​

Internal Server Error

PATCH Restore a tag by ID​

https://focus.toggl.com/api/workspaces/{workspace_id}/tags/{tag_id}/restore

Restores a tag by the provided ID.

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

Parameters​

Path​

nametyperequireddescription
workspace_idintegertrueworkspace ID
tag_idintegertruetag ID

Response​

204​

Successfully restored tag

400​

Invalid request

409​

Another tag already holds this integration identity

500​

Internal Server Error

© 2026 Toggl. All rights reserved.