Skip to main content
Runs describe automation execution. Calls describe individual voice legs created by campaigns, ad-hoc requests, inbound routes, forwarding, or flow sub-runs. All endpoints on this page accept Admin, Manager, and Agent API keys.

Endpoint summary

List organization runs

GET /executions
Example list item:
Response: 200 with { data, meta }. Clients must tolerate new run statuses, triggers, and failure reasons. Tests are hidden by default. Set includeTests=true to include them; explicitly filtering triggeredBy=manual_test also selects test runs. Use contact here, rather than the contactId parameter accepted by the flow-specific run list.

Get a run report

GET /flows/executions/:id
The response includes:
  • execution: status, trigger, contact, timestamps, failure, request variables, final non-system variables, graph hash, and campaign/binding/parent links;
  • nodeRuns: ordered node-level execution facts;
  • children: direct sub-flow runs;
  • leg: the run’s own call outcome when present;
  • messages: SMS and WhatsApp activity;
  • cost items and total; and
  • nextReadInMs for polling.
A null polling interval means this execution and its own call leg meet the endpoint’s settlement check. It does not guarantee that every child execution or asynchronous enrichment is complete. Example partial response:

Request an outbound call

POST /calls/request This asynchronous endpoint creates a run for a Voice (call) flow and wakes the call driver.
Example 201 response:
This places a real outbound call and consumes credits. Use an approved test contact, caller number, Voice flow, calling time, and consent process. Setting recordCall: true adds recording obligations.
Poll GET /flows/executions/:id for the outcome. Repeated POST requests can create additional calls. Check the original run before retrying a request whose result is uncertain.

List calls

GET /calls Query parameters include standard pagination/search/sort plus:
  • outcome;
  • inclusive from and to ISO timestamps;
  • source (campaign, adhoc, forward, or inbound);
  • contactId, campaignId, didId, bindingId, flowId, agentId, or audienceId; and
  • hasRecording=true|false.
Supported sort fields are startedAt, durationMs, and contactName. Newest calls appear first by default.
Example list item:

Get a call report

GET /calls/:id
Response: 200 with leg facts, derived outcome, merged technical and node-run timeline, recording metadata, cost breakdown, and the flow or agent context that drove the call. Returns 404 CALL_NOT_FOUND for an unknown or cross-organization call.
A call report can contain phone numbers, transcripts, facts, and recording metadata. Automated transcripts can be inaccurate. Review recordings through the available call details in Gomobile.

Export calls

POST /calls/export The body accepts the same filters as GET /calls plus search, but no pagination or sorting. The entire filtered set is exported newest-first.
The 201 response contains the export ID and initial status. An overly broad export can return 422 CALL_EXPORT_TOO_LARGE. Poll it with:
When status becomes completed, the response includes a short-lived presigned download URL. Store the downloaded CSV securely; it contains the full matching set rather than one page.

Endpoint catalog

Find the documented operations for each resource.

Pagination and request retries

Page-based lists use page=1 and limit=20 by default, with a maximum limit of 100, unless the endpoint above specifies an exception. Follow the response’s pagination metadata. See pagination for the response envelope. If a request returns 429, wait for Retry-After when supplied before retrying. For a mutation that times out, check the resource or run before repeating the request; repeating it can duplicate work. See errors for authentication and validation failures.