Skip to main content

Detailed reports

POST Search time entries

https://api.track.toggl.com/reports/api/v3/workspace/{workspace_id}/search/time_entries

Returns time entries for detailed report according to the given filters. Supports pagination via X-Next-ID and X-Next-Row-Number headers returned in the response. See Overview

curl -X POST https://api.track.toggl.com/reports/api/v3/workspace/{workspace_id}/search/time_entries \
-H "Content-Type: application/json" \
-d '\{"billable":"boolean","client_ids":[\{\}],"description":"string","end_date":"string","enrich_response":"boolean","first_id":"integer","first_row_number":"integer","first_timestamp":"integer","group_ids":[\{\}],"grouped":"boolean","hide_amounts":"boolean","max_duration_seconds":"integer","min_duration_seconds":"integer","order_by":"string","order_dir":"string","page_size":"integer","project_ids":[\{\}],"rounding":"integer","rounding_minutes":"integer","start_date":"string","tag_ids":[\{\}],"task_ids":[\{\}],"time_entry_ids":[\{\}],"user_ids":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
workspace_idintegertrueWorkspace ID

Body

NameTypeDescription
billablebooleanWhether the time entry is set as billable, optional, premium feature.
client_idsArray of integerClient IDs, optional, filtering attribute. To filter records with no clients, use [null].
descriptionstringDescription, optional, filtering attribute.
end_datestringEnd date, example time.DateOnly. Should be greater than Start date. Inclusive calendar date: the whole day is covered, evaluated in each time entry creator's own Toggl profile time zone (UTC when that user has none set). Entries are matched on their start, so an entry starting on End date is included even if it stops after it.
enrich_responsebooleanEnrichResponse, optional, default false. It will force the detailed report to return as much information as possible, as it does for the export.
first_idinteger-
first_row_numberinteger-
first_timestampinteger-
group_idsArray of integerGroup IDs, optional, filtering attribute.
groupedbooleanWhether time entries should be grouped, optional, default false.
hide_amountsbooleanWhether amounts should be hidden, optional, default false.
max_duration_secondsintegerMax duration seconds, optional, filtering attribute. Time Audit only, should be greater than MinDurationSeconds.
min_duration_secondsintegerMin duration seconds, optional, filtering attribute. Time Audit only, should be less than MaxDurationSeconds.
order_bystringOrder by field, optional, default "date". Can be "date", "user", "duration", "description" or "last_update".
order_dirstringOrder direction, optional. Can be ASC or DESC.
page_sizeintegerPageSize defines the number of items per page, optional, default 50.
project_idsArray of integerProject IDs, optional, filtering attribute. To filter records with no projects, use [null].
roundingintegerWhether time should be rounded, optional, default from user preferences.
rounding_minutesintegerRounding minutes value, optional, default from user preferences. Should be 0, 1, 5, 6, 10, 12, 15, 30, 60 or 240.
start_datestringStart date, example time.DateOnly. Should be less than End date. Inclusive calendar date: it is evaluated in each time entry creator's own Toggl profile time zone (UTC when that user has none set), not in the caller's or the workspace's time zone.
tag_idsArray of integerTag IDs, optional, filtering attribute. To filter records with no tags, use [null].
task_idsArray of integerTask IDs, optional, filtering attribute. To filter records with no tasks, use [null].
time_entry_idsArray of integerTimeEntryIDs filters by time entries. This was added to support retro-compatibility with reports v2.
user_idsArray of integerUser IDs, optional, filtering attribute.

Response

200

Returns grouped time entries for detailed report

400

Possible error messages:

  • At least one parameter must be set
  • Invalid workspace id
  • Invalid '{parameter}' value, allowed values are: '{valid_values}'

402

Workspace needs to have this feature enabled

403

Workspace not found/accessible

500

Internal Server Error

POST Export detailed report

https://api.track.toggl.com/reports/api/v3/workspace/{workspace_id}/search/time_entries.pdf

Downloads detailed report in pdf format.

curl -X POST https://api.track.toggl.com/reports/api/v3/workspace/{workspace_id}/search/time_entries.pdf \
-H "Content-Type: application/json" \
-d '\{"billable":"boolean","cents_separator":"string","client_ids":[\{\}],"date_format":"string","description":"string","display_mode":"string","duration_format":"string","end_date":"string","enrich_response":"boolean","first_id":"integer","first_row_number":"integer","first_timestamp":"integer","group_ids":[\{\}],"grouped":"boolean","hide_amounts":"boolean","hour_format":"string","max_duration_seconds":"integer","min_duration_seconds":"integer","order_by":"string","order_dir":"string","page_size":"integer","project_ids":[\{\}],"rounding":"integer","rounding_minutes":"integer","start_date":"string","tag_ids":[\{\}],"task_ids":[\{\}],"time_entry_ids":[\{\}],"user_ids":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
workspace_idintegertrueWorkspace ID

Body

NameTypeDescription
billablebooleanWhether the time entry is set as billable, optional, premium feature.
cents_separatorstring-
client_idsArray of integerClient IDs, optional, filtering attribute. To filter records with no clients, use [null].
date_formatstringValid values: MM/DD/YYYY, DD-MM-YYYY, MM-DD-YYYY, YYYY-MM-DD, DD/MM/YYYY, DD.MM.YYYY.
descriptionstringDescription, optional, filtering attribute.
display_modestring-
duration_formatstringDuration format, optional, default "classic". Can be "classic", "decimal" or "improved".
end_datestringEnd date, example time.DateOnly. Should be greater than Start date. Inclusive calendar date: the whole day is covered, evaluated in each time entry creator's own Toggl profile time zone (UTC when that user has none set). Entries are matched on their start, so an entry starting on End date is included even if it stops after it.
enrich_responsebooleanEnrichResponse, optional, default false. It will force the detailed report to return as much information as possible, as it does for the export.
first_idinteger-
first_row_numberinteger-
first_timestampinteger-
group_idsArray of integerGroup IDs, optional, filtering attribute.
groupedbooleanWhether time entries should be grouped, optional, default false.
hide_amountsbooleanWhether amounts should be hidden, optional, default false.
hour_formatstring-
max_duration_secondsintegerMax duration seconds, optional, filtering attribute. Time Audit only, should be greater than MinDurationSeconds.
min_duration_secondsintegerMin duration seconds, optional, filtering attribute. Time Audit only, should be less than MaxDurationSeconds.
order_bystringOrder by field, optional, default "date". Can be "date", "user", "duration", "description" or "last_update".
order_dirstringOrder direction, optional. Can be ASC or DESC.
page_sizeintegerPageSize defines the number of items per page, optional, default 50.
project_idsArray of integerProject IDs, optional, filtering attribute. To filter records with no projects, use [null].
roundingintegerWhether time should be rounded, optional, default from user preferences.
rounding_minutesintegerRounding minutes value, optional, default from user preferences. Should be 0, 1, 5, 6, 10, 12, 15, 30, 60 or 240.
start_datestringStart date, example time.DateOnly. Should be less than End date. Inclusive calendar date: it is evaluated in each time entry creator's own Toggl profile time zone (UTC when that user has none set), not in the caller's or the workspace's time zone.
tag_idsArray of integerTag IDs, optional, filtering attribute. To filter records with no tags, use [null].
task_idsArray of integerTask IDs, optional, filtering attribute. To filter records with no tasks, use [null].
time_entry_idsArray of integerTimeEntryIDs filters by time entries. This was added to support retro-compatibility with reports v2.
user_idsArray of integerUser IDs, optional, filtering attribute.

Response

200

Returns the detailed report in pdf format

400

Possible error messages:

  • At least one parameter must be set
  • Invalid workspace id
  • Invalid '{parameter}' value, allowed values are: '{valid_values}'

402

Workspace needs to have this feature enabled

403

Workspace not found/accessible

500

Internal Server Error

POST Export detailed report

https://api.track.toggl.com/reports/api/v3/workspace/{workspace_id}/search/time_entries.{extension}

Downloads detailed report in the specified format: csv or xlsx.

curl -X POST https://api.track.toggl.com/reports/api/v3/workspace/{workspace_id}/search/time_entries.{extension} \
-H "Content-Type: application/json" \
-d '\{"billable":"boolean","client_ids":[\{\}],"description":"string","duration_format":"string","end_date":"string","enrich_response":"boolean","first_id":"integer","first_row_number":"integer","first_timestamp":"integer","group_ids":[\{\}],"grouped":"boolean","hide_amounts":"boolean","max_duration_seconds":"integer","min_duration_seconds":"integer","order_by":"string","order_dir":"string","page_size":"integer","project_ids":[\{\}],"rounding":"integer","rounding_minutes":"integer","start_date":"string","tag_ids":[\{\}],"task_ids":[\{\}],"time_entry_ids":[\{\}],"user_ids":[\{\}]\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
workspace_idintegertrueWorkspace ID
extensionstringtruecsv,xlsx

Body

NameTypeDescription
billablebooleanWhether the time entry is set as billable, optional, premium feature.
client_idsArray of integerClient IDs, optional, filtering attribute. To filter records with no clients, use [null].
descriptionstringDescription, optional, filtering attribute.
duration_formatstringDuration format, optional, default "classic". Can be "classic", "decimal" or "improved".
end_datestringEnd date, example time.DateOnly. Should be greater than Start date. Inclusive calendar date: the whole day is covered, evaluated in each time entry creator's own Toggl profile time zone (UTC when that user has none set). Entries are matched on their start, so an entry starting on End date is included even if it stops after it.
enrich_responsebooleanEnrichResponse, optional, default false. It will force the detailed report to return as much information as possible, as it does for the export.
first_idinteger-
first_row_numberinteger-
first_timestampinteger-
group_idsArray of integerGroup IDs, optional, filtering attribute.
groupedbooleanWhether time entries should be grouped, optional, default false.
hide_amountsbooleanWhether amounts should be hidden, optional, default false.
max_duration_secondsintegerMax duration seconds, optional, filtering attribute. Time Audit only, should be greater than MinDurationSeconds.
min_duration_secondsintegerMin duration seconds, optional, filtering attribute. Time Audit only, should be less than MaxDurationSeconds.
order_bystringOrder by field, optional, default "date". Can be "date", "user", "duration", "description" or "last_update".
order_dirstringOrder direction, optional. Can be ASC or DESC.
page_sizeintegerPageSize defines the number of items per page, optional, default 50.
project_idsArray of integerProject IDs, optional, filtering attribute. To filter records with no projects, use [null].
roundingintegerWhether time should be rounded, optional, default from user preferences.
rounding_minutesintegerRounding minutes value, optional, default from user preferences. Should be 0, 1, 5, 6, 10, 12, 15, 30, 60 or 240.
start_datestringStart date, example time.DateOnly. Should be less than End date. Inclusive calendar date: it is evaluated in each time entry creator's own Toggl profile time zone (UTC when that user has none set), not in the caller's or the workspace's time zone.
tag_idsArray of integerTag IDs, optional, filtering attribute. To filter records with no tags, use [null].
task_idsArray of integerTask IDs, optional, filtering attribute. To filter records with no tasks, use [null].
time_entry_idsArray of integerTimeEntryIDs filters by time entries. This was added to support retro-compatibility with reports v2.
user_idsArray of integerUser IDs, optional, filtering attribute.

Response

200

Returns the detailed report in the specified format: csv or xlsx

400

Possible error messages:

  • At least one parameter must be set
  • Invalid workspace id
  • Invalid '{parameter}' value, allowed values are: '{valid_values}'

402

Workspace needs to have this feature enabled

403

Workspace not found/accessible

500

Internal Server Error

POST Load totals detailed report

https://api.track.toggl.com/reports/api/v3/workspace/{workspace_id}/search/time_entries/totals

Returns totals sums for detailed report.

curl -X POST https://api.track.toggl.com/reports/api/v3/workspace/{workspace_id}/search/time_entries/totals \
-H "Content-Type: application/json" \
-d '\{"billable":"boolean","client_ids":[\{\}],"description":"string","end_date":"string","granularity":"string","group_ids":[\{\}],"grouped":"boolean","max_duration_seconds":"integer","min_duration_seconds":"integer","project_ids":[\{\}],"resolution":"string","rounding":"integer","rounding_minutes":"integer","start_date":"string","tag_ids":[\{\}],"task_ids":[\{\}],"time_entry_ids":[\{\}],"user_ids":[\{\}],"with_graph":"boolean"\}' \
-u <email>:<password>

Parameters

Path

nametyperequireddescription
workspace_idintegertrueWorkspace ID

Body

NameTypeDescription
billablebooleanWhether the time entry is set as billable, optional, premium feature.
client_idsArray of integerClient IDs, optional, filtering attribute. To filter records with no clients, use [null].
descriptionstringDescription, optional, filtering attribute.
end_datestringEnd date, example time.DateOnly. Should be greater than Start date. Inclusive calendar date: the whole day is covered, evaluated in each time entry creator's own Toggl profile time zone (UTC when that user has none set). Entries are matched on their start, so an entry starting on End date is included even if it stops after it.
granularitystringTotals granularity, optional, overrides resolution values. Possible values: day, week and month.
group_idsArray of integerGroup IDs, optional, filtering attribute.
groupedbooleanWhether time entries should be grouped, optional, default false.
max_duration_secondsintegerMax duration seconds, optional, filtering attribute. Time Audit only, should be greater than MinDurationSeconds.
min_duration_secondsintegerMin duration seconds, optional, filtering attribute. Time Audit only, should be less than MaxDurationSeconds.
project_idsArray of integerProject IDs, optional, filtering attribute. To filter records with no projects, use [null].
resolutionstringGraph resolution, optional. Allow clients to explicitly request a resolution.
roundingintegerWhether time should be rounded, optional, default from user preferences.
rounding_minutesintegerRounding minutes value, optional, default from user preferences. Should be 0, 1, 5, 6, 10, 12, 15, 30, 60 or 240.
start_datestringStart date, example time.DateOnly. Should be less than End date. Inclusive calendar date: it is evaluated in each time entry creator's own Toggl profile time zone (UTC when that user has none set), not in the caller's or the workspace's time zone.
tag_idsArray of integerTag IDs, optional, filtering attribute. To filter records with no tags, use [null].
task_idsArray of integerTask IDs, optional, filtering attribute. To filter records with no tasks, use [null].
time_entry_idsArray of integerTime entry IDs, optional.
user_idsArray of integerUser IDs, optional, filtering attribute.
with_graphbooleanWhether Graph information should be loaded, optional, default false.

Response

200

Returns totals values sums for detailed report

400

Possible error messages:

  • At least one parameter must be set
  • Invalid workspace id
  • Invalid '{parameter}' value, allowed values are: '{valid_values}'

402

Workspace needs to have this feature enabled

403

Workspace not found/accessible

500

Internal Server Error

© 2026 Toggl. All rights reserved.