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.