Skip to main content

Reports

POST Generate flexible query report

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

Executes a flexible query against the analytics database and returns formatted results.

curl -X POST https://focus.toggl.com/api/reports/workspaces/{workspace_id}/query \
-H "Content-Type: application/json" \
-d '\{"aggregation_filters":[\{"aggregation":\{"function":"string","property":"string"\},"conditions":[\{"aggregation":\{"function":"string","property":"string"\},"conditions":[\{"aggregation":\{"function":"string","property":"string"\},"conditions":[\{"aggregation":\{\},"conditions":[\{\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"aggregations":[\{"function":"string","property":"string"\}],"attributes":[\{"property":"string"\}],"conversion_date":\{\},"currency":"string","filters":[\{"conditions":[\{"conditions":[\{"conditions":[\{"conditions":[\{\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"groupings":[\{"property":"string","show_empty":"boolean"\}],"limit":"integer","modifiers":\{\},"ordinations":[\{"direction":"string","nulls":"string","property":"string"\}],"pagination":\{"page":"integer","per_page":"integer"\},"period":\{"from":"string","preset":"string","to":"string"\},"transformations":[\{"name":"string","parameters":[\{\}]\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
workspace_idintegertrueworkspace ID

Query

nametyperequireddescription
response_formatstringfalseresponse data format
include_dictsbooleanfalseinclude dictionary data in response

Body

NameTypeDescription
aggregation_filtersArray of object-
aggregationsArray of object-
attributesArray of object-
conversion_dateobjectConversionDate is the profitability report's optional "as of" date: every converted value is looked up at this one date instead of each row's own business/fee date. Optional — omitted means each row uses its own date. Applies to actuals and fixed fees; the forecast always converts at today. A date past our latest published rate falls back to that latest rate (no error). Has no effect unless the request selects a converted property (converted_revenue / converted_labor_cost).
currencystringCurrency is the profitability report's FX-conversion target (ISO 4217). Optional: when omitted, the converted properties target the workspace's configured currency. Malformed input is a 400. Has no effect unless the request selects a converted property (converted_revenue / converted_labor_cost).
filtersArray of object-
groupingsArray of object-
limitinteger-
modifiersobject-
ordinationsArray of object-
paginationobject-
periodobject-
transformationsArray of object-
aggregation_filters
NameTypeDescription
aggregationobject-
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
aggregation
NameTypeDescription
functionstring-
propertystring-
conditions
NameTypeDescription
aggregationobject-
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
aggregation
NameTypeDescription
functionstring-
propertystring-
conditions
NameTypeDescription
aggregationobject-
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
aggregation
NameTypeDescription
functionstring-
propertystring-
conditions
NameTypeDescription
aggregationobject-
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
aggregations
NameTypeDescription
functionstring-
propertystring-
attributes
NameTypeDescription
propertystring-
conversion_date
filters
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
groupings
NameTypeDescription
propertystring-
show_emptyboolean-
modifiers
ordinations
NameTypeDescription
directionstring-
nullsstring-
propertystring-
pagination
NameTypeDescription
pageinteger-
per_pageinteger-
period
NameTypeDescription
fromstring-
presetstring-
tostring-
transformations
NameTypeDescription
namestring-
parametersArray of Object-

Response

200

Report as JSON

NameTypeDescription
data_hierarchicalobject-
data_json_rowArray of object-
data_tableobject-
dictionariesobject-
total_countinteger-
data_hierarchical
data_json_row
dictionaries
NameTypeDescription
clientsobject-
custom_field_optionsobject-
custom_fieldsobject-
groupsobject-
projectsobject-
statusobject-
tagsobject-
tasksobject-
user_tagsobject-
usersobject-
clients
custom_field_options
custom_fields
groups
projects
status
tags
tasks
user_tags
users

400

Invalid request parameters

401

Unauthorized

402

Report view quota exceeded

403

Forbidden — the plan lacks the report export entitlement

422

Currency conversion requested but an FX rate is missing for the period

500

Internal server error

POST Generate dictionary from filters

https://focus.toggl.com/api/reports/workspaces/{workspace_id}/query/dictionary

Generates a dictionary containing task, project, client, and status information based on the provided filters.

curl -X POST https://focus.toggl.com/api/reports/workspaces/{workspace_id}/query/dictionary \
-H "Content-Type: application/json" \
-d '[\{"conditions":[\{"conditions":[\{"conditions":[\{"conditions":[\{"conditions":[\{\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}]' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
itemsArray of object-
items
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-

Response

200

Successfully generated dictionary

NameTypeDescription
clientsobject-
custom_field_optionsobject-
custom_fieldsobject-
groupsobject-
projectsobject-
statusobject-
tagsobject-
tasksobject-
user_tagsobject-
usersobject-
clients
custom_field_options
custom_fields
groups
projects
status
tags
tasks
user_tags
users

400

Invalid request parameters

401

Unauthorized

403

Forbidden

500

Internal server error

POST Generate workload report

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

Generates a workload report based on the given input. Breakdown reports (grouped by user_account_id) support optional pagination via 'page' and 'per_page'. Paginated response includes 'total_count' with the total number of users matching the filters. An ordination on 'user_account_id' ('asc' or 'desc') orders breakdown members by display name across the whole result, not just the current page; it defaults to ascending. Ordinations on other properties are passed through to the reporting engine. Totals rows, trend buckets, and breakdown nodes include working, scheduled, scheduled draft, and scheduled remaining sums in minutes. The fields are 'sum_working_minutes', 'sum_scheduled_minutes', 'sum_scheduled_draft_minutes', and 'sum_scheduled_remaining_minutes'. Scheduled minutes cover non-draft task estimates, projected unmaterialized recurring periods, and planned calendar events. Scheduled draft minutes are gross task estimates from visible draft projects. Zero means none or not visible. A draft legacy calendar task can overlap with its still-planned calendar event, so the draft and scheduled sums are not strictly additive. Scheduled remaining minutes net each assignee's tracked time and roll unfinished estimates forward from workspace-local today. Past and overdue task slices are zero, while planned events count only from today.

curl -X POST https://focus.toggl.com/api/reports/workspaces/{workspace_id}/workload \
-H "Content-Type: application/json" \
-d '\{"aggregation_filters":[\{"aggregation":\{"function":"string","property":"string"\},"conditions":[\{"aggregation":\{"function":"string","property":"string"\},"conditions":[\{"aggregation":\{"function":"string","property":"string"\},"conditions":[\{"aggregation":\{\},"conditions":[\{\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"aggregations":[\{"function":"string","property":"string"\}],"attributes":[\{"property":"string"\}],"conversion_date":\{\},"currency":"string","filters":[\{"conditions":[\{"conditions":[\{"conditions":[\{"conditions":[\{\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"operator":"string","property":"string","value":\{\}\}],"groupings":[\{"property":"string","show_empty":"boolean"\}],"limit":"integer","modifiers":\{\},"ordinations":[\{"direction":"string","nulls":"string","property":"string"\}],"pagination":\{"page":"integer","per_page":"integer"\},"period":\{"from":"string","preset":"string","to":"string"\},"transformations":[\{"name":"string","parameters":[\{\}]\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
workspace_idintegertrueworkspace ID

Body

NameTypeDescription
aggregation_filtersArray of object-
aggregationsArray of object-
attributesArray of object-
conversion_dateobjectConversionDate is the profitability report's optional "as of" date: every converted value is looked up at this one date instead of each row's own business/fee date. Optional — omitted means each row uses its own date. Applies to actuals and fixed fees; the forecast always converts at today. A date past our latest published rate falls back to that latest rate (no error). Has no effect unless the request selects a converted property (converted_revenue / converted_labor_cost).
currencystringCurrency is the profitability report's FX-conversion target (ISO 4217). Optional: when omitted, the converted properties target the workspace's configured currency. Malformed input is a 400. Has no effect unless the request selects a converted property (converted_revenue / converted_labor_cost).
filtersArray of object-
groupingsArray of object-
limitinteger-
modifiersobject-
ordinationsArray of object-
paginationobject-
periodobject-
transformationsArray of object-
aggregation_filters
NameTypeDescription
aggregationobject-
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
aggregation
NameTypeDescription
functionstring-
propertystring-
conditions
NameTypeDescription
aggregationobject-
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
aggregation
NameTypeDescription
functionstring-
propertystring-
conditions
NameTypeDescription
aggregationobject-
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
aggregation
NameTypeDescription
functionstring-
propertystring-
conditions
NameTypeDescription
aggregationobject-
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
aggregations
NameTypeDescription
functionstring-
propertystring-
attributes
NameTypeDescription
propertystring-
conversion_date
filters
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
conditions
NameTypeDescription
conditionsArray of object-
operatorstring-
propertystring-
valueobject-
groupings
NameTypeDescription
propertystring-
show_emptyboolean-
modifiers
ordinations
NameTypeDescription
directionstring-
nullsstring-
propertystring-
pagination
NameTypeDescription
pageinteger-
per_pageinteger-
period
NameTypeDescription
fromstring-
presetstring-
tostring-
transformations
NameTypeDescription
namestring-
parametersArray of Object-

Response

200

Successfully generated workload report

NameTypeDescription
data_hierarchicalobject-
data_json_rowArray of object-
data_tableobject-
dictionariesobject-
total_countinteger-
data_hierarchical
data_json_row
dictionaries
NameTypeDescription
clientsobject-
custom_field_optionsobject-
custom_fieldsobject-
groupsobject-
projectsobject-
statusobject-
tagsobject-
tasksobject-
user_tagsobject-
usersobject-
clients
custom_field_options
custom_fields
groups
projects
status
tags
tasks
user_tags
users

400

Invalid request parameters

403

Insufficient permissions

500

Internal server error

© 2026 Toggl. All rights reserved.