Now inviting stores. Join the waitlist to hear the agent call you.

Join the waitlist

Search the docs

Find a docs page

API reference

Calls and results

Preview

Read 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:

  • status and lastError: where it is, and why it's waiting or stopped (below).
  • outcome and answers: how it ended and what the shopper said, by question key. A yes/no answer is true or false; the rest are text, a choice, a number or a date.
  • calls: every attempt, in brief, with its callId.
  • actions: every action its calls used, oldest first, and how each went: success, refused, pending, timeout, or sample when 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

StatusMeaning
scheduledWaiting for its time: calling hours, a busy line, or the gap before a retry
dialingAn attempt is on: ringing, or the shopper is talking
doneThe shopper answered and the call ended; see outcome
gave_upNo attempt reached the shopper, or it couldn't be placed. See lastError
canceledYou 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.
  • recordingUrl plays 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 stepWebhooks

Get these updates pushed to you instead.