Skip to main content

Organization

POST Create organization group

https://focus.toggl.com/api/organizations/{organization_id}/groups

Creates a group under an organization for the given users and workspaces.

curl -X POST https://focus.toggl.com/api/organizations/{organization_id}/groups \
-H "Content-Type: application/json" \
-d '\{"emoji":"string","name":"string","organization_users":[\{\}],"workspaces":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID

Body

NameTypeDescription
emojistring-
namestring-
organization_usersArray of integer-
workspacesArray of integer-

Response

201

Successful operation

400

Invalid request

403

User does not have access

500

Server error

GET Get current user's groups

https://focus.toggl.com/api/organizations/{organization_id}/groups/me

Get groups the current user belongs to

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID

Response

200

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
emojistring-
idinteger-
namestring-

400

Invalid request

403

User does not have access to the organization

500

Server error

PUT Update organization group

https://focus.toggl.com/api/organizations/{organization_id}/groups/{group_id}

Updates a group under an organization.

curl -X PUT https://focus.toggl.com/api/organizations/{organization_id}/groups/{group_id} \
-H "Content-Type: application/json" \
-d '\{"emoji":"string","name":"string","organization_users":[\{\}],"workspaces":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
group_idintegertruegroup ID

Body

NameTypeDescription
emojistring-
namestring-
organization_usersArray of integer-
workspacesArray of integer-

Response

200

NameTypeDescription
created_atstring-
deleted_atstring-
emojistring-
idinteger-
namestring-
organization_idinteger-
updated_atstring-
usersArray of object-
workspacesArray of object-
users
NameTypeDescription
created_atstring-
deleted_atstring-
display_namestring-
focus_role_idinteger-
organization_user_idinteger-
track_role_idinteger-
updated_atstring-
user_account_idinteger-
user_group_idinteger-
work_role_idinteger-
workspaces
NameTypeDescription
created_atstring-
deleted_atstring-
focus_role_idinteger-
namestring-
productsArray of string-
updated_atstring-
workspace_group_idinteger-
workspace_idinteger-

400

Invalid request

403

User does not have access

404

Group not found

500

Server error

DELETE Delete organization group

https://focus.toggl.com/api/organizations/{organization_id}/groups/{group_id}

Deletes a group from an organization.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID
group_idintegertruegroup ID

Query

nametyperequireddescription
workspace_idintegertrueworkspace ID (required for permission check)

Response

200

Successful operation

400

Invalid request

403

User does not have access

404

Group not found

500

Server error

GET Get organization roles

https://focus.toggl.com/api/organizations/{organization_id}/roles

Get organization roles

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID

Response

200

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
codestring-
default_for_levelsArray of stringDefaultForLevels lists every level this role is the default at, and is nil when it is not one — never an empty list, which the stored column rejects.
descriptionstring-
entitystringValid values: organization, workspace, project, group.
namestring-
organization_idinteger-
permissionsArray of object-
privilege_levelinteger-
require_groupbooleanRequireGroup is true when the role is only conferred through a group, whatever Entity says. Its permissions still cover Entity — a team role's cover the workspace — so a caller listing the roles assignable directly at an entity has to drop the ones that carry it, while a caller listing what a team can confer does not.
role_idinteger-
typestringValid values: owner, admin, manager, guest.
permissions
NameTypeDescription
category_idinteger-
category_namestring-
conditionstring-
descriptionstring-
entitystringValid values: organization, workspace, project, group.
namestring-
permission_idinteger-

400

Invalid request

403

User does not have access to the organization

500

Server error

GET Get organization teams.

https://focus.toggl.com/api/organizations/{organization_id}/teams

Gets groups for a workspace, checking view_user_groups permission.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID

Query

nametyperequireddescription
workspace_idintegertrueworkspace ID (required for permission check)
pageintegerfalsepage number
per_pageintegerfalseresults per page
sort_dirstringfalseDirection to sort by (asc/desc)
filterstringfalseFilter by name
querystringfalseFilter by team name and its members' names
organization_user_idintegerfalseFilter groups that contain this organization user
group_ids[]integerfalseFilter by group IDs
active_members_onlybooleanfalseFilter by active members only

Response

200

NameTypeDescription
dataArray of object-
pageinteger-
rowsinteger-
totalinteger-
data
NameTypeDescription
created_atstring-
deleted_atstring-
emojistring-
idinteger-
namestring-
organization_idinteger-
updated_atstring-
usersArray of object-
workspacesArray of object-
users
NameTypeDescription
created_atstring-
deleted_atstring-
display_namestring-
focus_role_idinteger-
organization_user_idinteger-
track_role_idinteger-
updated_atstring-
user_account_idinteger-
user_group_idinteger-
work_role_idinteger-
workspaces
NameTypeDescription
created_atstring-
deleted_atstring-
focus_role_idinteger-
namestring-
productsArray of string-
updated_atstring-
workspace_group_idinteger-
workspace_idinteger-

400

Invalid request

403

User does not have permission to view groups

500

Server error

GET Get organization users

https://focus.toggl.com/api/organizations/{organization_id}/users

Proxies to accounts organization users endpoint with guest scoping. Guests only see users who share projects with them.

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

Parameters

Path

nametyperequireddescription
organization_idintegertrueorganization ID

Query

nametyperequireddescription
workspaces[]integerfalseFilter by workspace IDs
user_account_ids[]integerfalseFilter by user account IDs
org_user_ids[]integerfalseFilter by organization user IDs
groups[]integerfalseFilter by group IDs
toggl_products[]stringfalseFilter by toggl products
active_status[]stringfalseFilter by active status
roles[]integerfalseFilter by roles
only_adminsbooleanfalseOnly return admins
filterstringfalseFilter by name or email
sort_dirstringfalseSort direction (asc/desc)
pageintegerfalsePage number
per_pageintegerfalseResults per page
tag_ids[]integerfalseFilter by tag IDs
include_working_hoursbooleanfalseInclude working hours in response
include_ratesbooleanfalseInclude user rates data for each user
pinned_ids[]integerfalsePin specific users at the top (respects array order)
has_groupbooleanfalseFilters users that do or do not belong to a team
cf_filter[]stringfalseFilter members by user custom-field values, fieldID:value entries ANDed together; requires workspaces to name exactly one workspace
include_custom_fieldsbooleanfalseInclude each member's user custom-field values; requires workspaces to name exactly one workspace

Response

200

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
2fa_enabledboolean-
account_locked_atstring-
activeboolean-
adminboolean-
can_edit_personal_detailsboolean-
created_atstring-
custom_field_valuesArray of objectCustomFieldValues carries the member's user-level custom-field values. Present only when the list is called with include_custom_fields=true on a single workspace and the caller holds view_workspace_user_custom_fields with the beta enabled; omitted otherwise. Kept on this type (rather than a separate response type) so the generated client's OrganizationUserResponse keeps its name — FE code imports it directly.
deleted_atstring-
emailstring-
groupsArray of object-
idinteger-
invite_sentboolean-
joinedboolean-
namestring-
organization_idinteger-
ownerboolean-
permissionsobject-
rateobject-
tagsArray of object-
updated_atstring-
user_account_idinteger-
user_idstring-
working_hoursnumber-
workspacesArray of object-
custom_field_values
NameTypeDescription
custom_field_idinteger-
custom_field_namestring-
field_typestring-
selected_optionsArray of object-
valueobject-
selected_options
NameTypeDescription
is_deletedboolean-
option_idinteger-
option_namestring-
groups
NameTypeDescription
emojistring-
idinteger-
namestring-
workspace_idsArray of integer-
permissions
rate
NameTypeDescription
currencystring-
end_atstring-
hourly_ratenumber-
start_atstring-
workspace_idinteger-
workspace_rate_idinteger-
workspace_user_rate_idinteger-
tags
NameTypeDescription
colorstring-
idinteger-
labelstring-
workspaces
NameTypeDescription
focus_role_idinteger-
groupsArray of object-
idinteger-
namestring-
toggl_productsArray of string-
track_role_idinteger-
work_role_idinteger-
workspace_user_idinteger-
groups
NameTypeDescription
emojistring-
idinteger-
namestring-

400

Invalid request

403

User does not have access to the organization

422

cf_filter matches too many members; narrow the filter

500

Server error

© 2026 Toggl. All rights reserved.