I’m using the API (v9) to interact with Toggl, and I can see that the documentation shows different information about the data defining a workspace, depending if you are getting all workspaces o a specific one.
When getting the list of workspaces as in Workspaces | Toggl Engineering you are expected to get the following information according to the docs:
Name | Type | Description |
---|---|---|
active_users | integer | - |
created_at | string | Timestamp of workspace creation |
deleted_at | string | Timestamp of workspace deletion |
id | integer | Identifier of the workspace |
name | string | Name of the workspace |
organization_id | integer | Identifier of the organization |
organization_name | string | Name of the organization |
role_code | string | - |
role_id | integer | - |
role_name | string | - |
status | string | - |
total_users | integer | - |
updated_at | string | Timestamp of last workspace update |
user_status | string | - |
But what you actually get is closer (but not exactly the same) to what is declared in the endpoint to get the data of a specific workspace as detailed in Workspaces | Toggl Engineering :
Name | Type | Description |
---|---|---|
admin | boolean | Current user is workspace admin Deprecated |
api_token | string | deprecated |
at | string | Timestamp of last workspace change |
business_ws | boolean | Workspace on Premium subscription |
default_currency | string | Default currency, premium feature, optional, only for existing WS, will be ‘USD’ initially |
default_hourly_rate | number | The default hourly rate, premium feature, optional, only for existing WS, will be 0.0 initially |
disable_approvals | boolean | - |
disable_timesheet_view | boolean | - |
hide_start_end_times | boolean | - |
ical_enabled | boolean | Calendar integration enabled |
ical_url | string | URL of calendar |
id | integer | Identifier of the workspace |
last_modified | string | Last modification of data in the workspace |
limit_public_project_data | boolean | Limit public projects data in reports to admins. |
logo_url | string | URL of workspace logo |
name | string | Name of the workspace |
only_admins_may_create_projects | boolean | Only admins will be able to create projects, optional, only for existing WS, will be false initially |
only_admins_may_create_tags | boolean | Only admins will be able to create tags, optional, only for existing WS, will be false initially |
only_admins_see_team_dashboard | boolean | Only admins will be able to see the team dashboard, optional, only for existing WS, will be false initially |
organization_id | integer | Identifier of the organization |
premium | boolean | Workspace on Starter subscription |
profile | integer | deprecated |
projects_billable_by_default | boolean | New projects billable by default |
projects_enforce_billable | boolean | Whether tracking time to projects will enforce billable setting to be respected. |
projects_private_by_default | boolean | Workspace setting for default project visbility. |
rate_last_updated | string | Timestamp of last workspace rate update |
reports_collapse | boolean | Whether reports should be collapsed by default, optional, only for existing WS, will be true initially |
role | string | Role of the current user in the workspace |
rounding | integer | Default rounding, premium feature, optional, only for existing WS. 0 - nearest, 1 - round up, -1 - round down |
rounding_minutes | integer | Default rounding in minutes, premium feature, optional, only for existing WS |
suspended_at | string | Timestamp of suspension |
working_hours_in_minutes | integer | Working hours in minutes |
This is what I am actually getting as JSON when retrieving all workspaces for the user (note that I am getting a field with the active_project_count that is not in the documentation):
{
"id": 123123,
"organization_id": 456456,
"name": "Foo",
"premium": false,
"business_ws": false,
"admin": true,
"role": "admin",
"suspended_at": null,
"server_deleted_at": null,
"default_hourly_rate": null,
"rate_last_updated": null,
"default_currency": "USD",
"only_admins_may_create_projects": false,
"only_admins_may_create_tags": false,
"only_admins_see_team_dashboard": false,
"projects_billable_by_default": true,
"projects_private_by_default": true,
"projects_enforce_billable": false,
"limit_public_project_data": false,
"last_modified": "2025-05-23T00:00:00Z",
"reports_collapse": false,
"rounding": 1,
"rounding_minutes": 0,
"api_token": "blablablablabla",
"at": "2025-05-23T04:54:14+00:00",
"logo_url": "https://assets.track.toggl.com/images/workspace.jpg",
"ical_url": "/ical/workspace_user/blablabla",
"ical_enabled": true,
"csv_upload": null,
"subscription": null,
"hide_start_end_times": false,
"disable_timesheet_view": false,
"disable_approvals": false,
"working_hours_in_minutes": null,
"active_project_count": 22
}
Is is only that the documentation shows just an abstract of what you will get? Or there is something else I’m missing?