GET
Get Usage History
Returns a paginated list of runs across all agents in your organization, including duration, cost, and usage details for each run. Use start_date and end_date (ISO 8601) to scope the window, and page / limit to paginate. Pass filters as a JSON-encoded string to narrow results further. To fetch the full transcript or recording for a specific run, use Retrieve Call Details.

Post-call extraction drill-down

Runs can also be filtered on the structured fields written by the post-call extraction task (workflow_runs.post_call_data.data.<field>). These params power the drill-down URL emitted by the extraction charts on the analytics dashboard тАФ see Post-Call Variables тЖТ Drill down for the source-side aggregate.
string
Restrict to runs whose extracted post_call_data.data contains this field with a non-null value. Combine with post_call_value (exact match) or post_call_value_min / post_call_value_max (numeric range).
string
Exact-match value for post_call_field. Booleans arrive as "true" / "false", numbers as their string form, text verbatim. Ignored when a numeric range is supplied.
number
Inclusive lower bound for a numeric post_call_field. Must be paired with post_call_value_max and requires post_call_field to be a number-typed field on at least one workflow in the callerтАЩs organization.
number
Inclusive upper bound for a numeric post_call_field. Must be paired with post_call_value_min.

Validation

Route-boundary checks return 400 for the following:
  • post_call_value or a post_call_value_* bound supplied without post_call_field.
  • post_call_value_min > post_call_value_max (inverted range).
  • A numeric range against a field that is not number-typed on any workflow in the organization тАФ the message is stripped of the offending value so it cannot leak back through the driver.

Authorizations

Authorization
string
header
required

Interactive user session: the login JWT, sent as Authorization: Bearer <token>.

Query Parameters

start_date
string | null

ISO 8601 date-time string (UTC). Lower bound (inclusive) on created_at.

Example:

"2026-04-01T00:00:00Z"

end_date
string | null

ISO 8601 date-time string (UTC). Upper bound (inclusive) on created_at.

Example:

"2026-05-01T00:00:00Z"

page
integer
default:1
Required range: x >= 1
limit
integer
default:50
Required range: 1 <= x <= 100
search
string | null

Free-text search across the agent/workflow name, run name and run id.

filters
string | null

JSON-encoded array of filter objects. Each object has the shape:

Supported attribute / type / value combinations:

Unknown attributes and unsupported type values are silently ignored.

Date filtering on this endpoint is done via the dedicated start_date / end_date query params, not via a dateRange filter object.

Example:

"[{\"attribute\":\"callerNumber\",\"type\":\"text\",\"value\":{\"value\":\"415555\"}}]"

post_call_field
string | null

Filter runs whose extracted post_call_data.data contains this field. Combine with post_call_value (exact match) or post_call_value_min/post_call_value_max (numeric range). If only post_call_field is set, matches runs where the field is present with a non-null value.

post_call_value
string | null

Exact-match value for the post-call field. Booleans arrive as "true"/"false", numbers as their string form.

post_call_value_min
number | null

Inclusive lower bound for a numeric post-call field.

post_call_value_max
number | null

Inclusive upper bound for a numeric post-call field.

Response

Successful Response

runs
WorkflowRunUsageResponse ┬╖ object[]
required
total_peachdesk_tokens
number
required
total_duration_seconds
integer
required
total_count
integer
required
page
integer
required
limit
integer
required
total_pages
integer
required