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-
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, or a binary XLSX workbook when X-Toggl-Report-Export=xlsx (Swagger 2 cannot model the header-dependent binary body)

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

Export result exceeds the row limit

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.

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-
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

500

Internal server error

© 2026 Toggl. All rights reserved.