curl --request GET \
--url https://app.dograh.com/api/v1/organizations/usage/runs{
"runs": [
{
"id": 123,
"workflow_id": 123,
"workflow_name": "<string>",
"name": "<string>",
"created_at": "<string>",
"dograh_token_usage": 123,
"call_duration_seconds": 123,
"recording_url": "<string>",
"transcript_url": "<string>",
"phone_number": "<string>",
"caller_number": "<string>",
"called_number": "<string>",
"call_type": "<string>",
"disposition": "<string>",
"initial_context": {},
"gathered_context": {},
"charge_usd": 123
}
],
"total_dograh_tokens": 123,
"total_duration_seconds": 123,
"total_count": 123,
"page": 123,
"limit": 123,
"total_pages": 123
}Paginated list of workflow runs across the organization with usage and cost
curl --request GET \
--url https://app.dograh.com/api/v1/organizations/usage/runs{
"runs": [
{
"id": 123,
"workflow_id": 123,
"workflow_name": "<string>",
"name": "<string>",
"created_at": "<string>",
"dograh_token_usage": 123,
"call_duration_seconds": 123,
"recording_url": "<string>",
"transcript_url": "<string>",
"phone_number": "<string>",
"caller_number": "<string>",
"called_number": "<string>",
"call_type": "<string>",
"disposition": "<string>",
"initial_context": {},
"gathered_context": {},
"charge_usd": 123
}
],
"total_dograh_tokens": 123,
"total_duration_seconds": 123,
"total_count": 123,
"page": 123,
"limit": 123,
"total_pages": 123
}Returns a paginated list of runs across all agents in your organization, including duration, cost, and usage details for each run. UseDocumentation Index
Fetch the complete documentation index at: https://docs.dograh.com/llms.txt
Use this file to discover all available pages before exploring further.
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.ISO 8601 date-time string (UTC). Lower bound (inclusive) on created_at.
"2026-04-01T00:00:00Z"
ISO 8601 date-time string (UTC). Upper bound (inclusive) on created_at.
"2026-05-01T00:00:00Z"
x >= 11 <= x <= 100JSON-encoded array of filter objects. Each object has the shape:
{ "attribute": "<name>", "type": "<type>", "value": <value> }Supported attribute / type / value combinations:
| attribute | type | value shape | matches |
|---|---|---|---|
runId | number | { "value": 12345 } | exact run id |
workflowId | number | { "value": 42 } | exact agent (workflow) id |
campaignId | number | { "value": 7 } | exact campaign id |
callerNumber | text | { "value": "415555" } | substring match on initial_context.caller_number |
calledNumber | text | { "value": "9911848" } | substring match on initial_context.called_number |
dispositionCode | multiSelect | { "codes": ["XFER", "DNC"] } | any of the codes in gathered_context.mapped_call_disposition |
duration | numberRange | { "min": 60, "max": 300 } | call duration (seconds), inclusive bounds |
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.
"[{\"attribute\":\"callerNumber\",\"type\":\"text\",\"value\":{\"value\":\"415555\"}}]"