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-
per_pageinteger-
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
include_calendar_integrationbooleanfalseInclude whether each member has a calendar integration connected. Requires the workspaces param to name exactly one workspace and the view_external_calendar_integrations permission on it

Response​

200​

NameTypeDescription
itemsArray of object-
items​
NameTypeDescription
2fa_enabledboolean-
account_locked_atstring-
accounts_role_idinteger-
activeboolean-
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-
has_calendar_integrationbooleanHasCalendarIntegration is true when the member has a calendar connected in Focus. The field is present only when the request sets include_calendar_integration to true and the calendar lookup succeeded. The field is absent when the lookup failed. Absent means unknown. It does not mean false. A member who connected a calendar in another product stays false here until they open the Focus calendar integrations page.
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.