Calls and results
PreviewRead where a run is, the shopper's typed answers and outcome, the actions taken, and each call's transcript and recording.
Webhooks tell you the moment something happens. When you need the full picture later, read the run, then any of its calls.
A run and its calls
A run is the job: one flow for one shopper. Each time RowCall rings the shopper, that attempt is a call. A run that went unanswered twice and was picked up on the third try has three calls, and its answers and outcome are the last attempt's.
GET /v1/runs/{runId} (runs scope) gives you the run with:
statusandlastError: where it is, and why it's waiting or stopped (below).outcomeandanswers: how it ended and what the shopper said, by question key. A yes/no answer istrueorfalse; the rest are text, a choice, a number or a date.calls: every attempt, in brief, with itscallId.actions: every action its calls used, oldest first, and how each went:success,refused,pending,timeout, orsamplewhen the action isn't connected.metadata: your own references, as you sent them.
const run = await rowcall.runs.get('run_8hq2x2m4q8w1z7p5n6b0')
if (run.status === 'done' && run.outcome === 'confirmed') await shipOrder(run.metadata.shopify_order_id)The whole shape is in the reference.
Where a run is
| Status | Meaning |
|---|---|
scheduled | Waiting for its time: calling hours, a busy line, or the gap before a retry |
dialing | An attempt is on: ringing, or the shopper is talking |
done | The shopper answered and the call ended; see outcome |
gave_up | No attempt reached the shopper, or it couldn't be placed. See lastError |
canceled | You cancelled it, or the shopper opted out before the next attempt |
A run can also wait while scheduled, keeping its attempts, with the reason in lastError: for credit, for business verification, or for one of your org's numbers to be declared for automated calls on DLT. See Registration (DLT).
A call's transcript and recording
GET /v1/calls/{callId} (calls scope) reads one attempt: how it ended, how long the shopper talked, the languages heard, and the transcript and recording.
- The transcript has every line in the language it was said, with an English version (
textEn) for other languages, and when each line started and ended. recordingUrlplays the recording for 15 minutes. Read the call again for a fresh link; don't store the link.- How long recordings are kept depends on your org's settings. See Recordings and data.
Listing runs
GET /v1/runs lists your runs, newest first, 50 a page (up to 100 with limit). Filter by flowId or status. When nextCursor isn't null, pass it as cursor for the next page.
A key sees only runs and calls of its own mode: a test key gets test runs, a live key live ones. To follow many runs, prefer webhooks to polling.
Next stepWebhooksGet these updates pushed to you instead.