{"openapi":"3.1.0","info":{"title":"RowCall API","version":"1","description":"Start calls to shoppers with your flows, read what they said, and keep your contacts in step. Use an API key (`Authorization: Bearer rc_…`) for your own org, or OAuth 2 when your app acts for merchants. Test credentials never call anyone.","contact":{"name":"RowCall support","email":"support@rowcall.ai"},"termsOfService":"https://rowcall.ai/legal/terms"},"servers":[{"url":"https://app.rowcall.ai/v1"}],"tags":[{"name":"Connection","description":"Check a credential: the org it acts for, its mode and what it may do."},{"name":"Flows","description":"The calls RowCall can make for you. Install a ready-made flow from the library, or make your own, publish it, and start runs with it."},{"name":"Runs","description":"One shopper to call with one flow. A run places up to `maxAttempts` calls within calling hours and ends with the shopper’s answers and an outcome."},{"name":"Calls","description":"Each attempt of a run: how it went, its transcript and its recording."},{"name":"Contacts","description":"The shoppers you call, with their consent and opt-outs."},{"name":"Actions","description":"What the agent may do for a shopper during a call (look up an order, confirm it, change the address), and how your system answers."},{"name":"Events","description":"What RowCall posts to your webhook URL as things happen."},{"name":"Action requests","description":"What RowCall posts to your action URL when the agent uses an action."}],"security":[{"apiKey":[]},{"oauth2":[]}],"paths":{"/me":{"get":{"operationId":"getMe","tags":["Connection"],"summary":"Who you are","description":"The org this credential acts for and what it may do: an API key, or an app connected over OAuth with the scopes the merchant granted.","security":[{"apiKey":[]},{"oauth2":[]}],"parameters":[],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"org":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"caller":{"$ref":"#/components/schemas/Caller"}},"required":["ok","org","caller"],"additionalProperties":false},"example":{"ok":true,"org":{"id":"org_t1y3u5i7o9p1a3s5d7f9","name":"Halden"},"caller":{"kind":"api_key","name":"Order system","mode":"live","scopes":["runs","flows","contacts","calls"]}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/flows":{"get":{"operationId":"listFlows","tags":["Flows"],"summary":"List flows","description":"The flows you can start runs with: each one’s published version, by name.","x-scope":"flows","security":[{"apiKey":[]},{"oauth2":["flows"]}],"parameters":[],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"flows":{"type":"array","items":{"$ref":"#/components/schemas/Flow"}}},"required":["ok","flows"],"additionalProperties":false},"example":{"ok":true,"flows":[{"id":"flw_k3j9x2m4q8w1z7p5n6b0","libraryKey":"order_verification","name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional","version":3,"publishedAt":"2026-10-12T06:30:00.000Z","languages":{"allowed":["hi-IN","en-IN"],"default":"hi-IN"},"inputs":[{"key":"customer_name","label":"Name","type":"text","required":true},{"key":"order_id","label":"Order","type":"text","required":true},{"key":"order_total","label":"Total","type":"money","required":true},{"key":"address","label":"Delivery address","type":"text","required":true}],"inputSchema":{"type":"object","required":["customer_name","order_id","order_total","address"],"properties":{"customer_name":{"type":"string","title":"Name"},"order_id":{"type":"string","title":"Order"},"order_total":{"type":"string","title":"Total"},"address":{"type":"string","title":"Delivery address"}}},"answers":[{"key":"placed_order","question":"Did you place this order?","type":"yes_no","choices":[]},{"key":"address_correct","question":"Should we deliver it to 12 MG Road, Pune?","type":"yes_no","choices":[]}],"outcomes":[{"key":"confirmed","label":"Confirmed"},{"key":"address_changed","label":"Address changed"},{"key":"cancelled","label":"Cancelled"},{"key":"needs_team","label":"Needs the team"}],"actions":["get_order","confirm_order","cancel_order","update_delivery_address"]}]}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createFlow","tags":["Flows"],"summary":"Make a flow","description":"A new flow from a whole definition, saved as its first draft. A half-written definition is fine: the response lists its problems. Publish it when there are none.","x-scope":"flows","security":[{"apiKey":[]},{"oauth2":["flows"]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: the same key and request get the same response for 24 hours.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"definition":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"type":"string","maxLength":500},"callType":{"type":"string","enum":["transactional","service","promotional"]}},"required":["name","callType"],"additionalProperties":{}}},"required":["definition"],"additionalProperties":false},"example":{"definition":{"name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional"}}}}},"responses":{"201":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"flow":{"$ref":"#/components/schemas/FlowDraft"}},"required":["ok","flow"],"additionalProperties":false},"example":{"ok":true,"flow":{"flowId":"flw_k3j9x2m4q8w1z7p5n6b0","name":"Order verification","publishedVersion":3,"draft":{"version":4,"revision":2,"definition":{"name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional"},"problems":[{"path":["steps"],"message":"Add at least one step."}],"updatedAt":"2026-10-13T09:02:41.000Z"}}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/flows/{flowId}":{"get":{"operationId":"getFlow","tags":["Flows"],"summary":"Get a flow","description":"One published flow: the inputs a run brings, the answers it collects, its outcomes and actions.","x-scope":"flows","security":[{"apiKey":[]},{"oauth2":["flows"]}],"parameters":[{"name":"flowId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"flow":{"$ref":"#/components/schemas/Flow"}},"required":["ok","flow"],"additionalProperties":false},"example":{"ok":true,"flow":{"id":"flw_k3j9x2m4q8w1z7p5n6b0","libraryKey":"order_verification","name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional","version":3,"publishedAt":"2026-10-12T06:30:00.000Z","languages":{"allowed":["hi-IN","en-IN"],"default":"hi-IN"},"inputs":[{"key":"customer_name","label":"Name","type":"text","required":true},{"key":"order_id","label":"Order","type":"text","required":true},{"key":"order_total","label":"Total","type":"money","required":true},{"key":"address","label":"Delivery address","type":"text","required":true}],"inputSchema":{"type":"object","required":["customer_name","order_id","order_total","address"],"properties":{"customer_name":{"type":"string","title":"Name"},"order_id":{"type":"string","title":"Order"},"order_total":{"type":"string","title":"Total"},"address":{"type":"string","title":"Delivery address"}}},"answers":[{"key":"placed_order","question":"Did you place this order?","type":"yes_no","choices":[]},{"key":"address_correct","question":"Should we deliver it to 12 MG Road, Pune?","type":"yes_no","choices":[]}],"outcomes":[{"key":"confirmed","label":"Confirmed"},{"key":"address_changed","label":"Address changed"},{"key":"cancelled","label":"Cancelled"},{"key":"needs_team","label":"Needs the team"}],"actions":["get_order","confirm_order","cancel_order","update_delivery_address"]}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/flows/library/{libraryKey}/install":{"post":{"operationId":"installLibraryFlow","tags":["Flows"],"summary":"Install a library flow","description":"Copies one of RowCall’s ready-made flows (order_verification, live_checkout_help, …) into this org and publishes it, so runs can start with it by flowKey. Installing again returns the same flow.","x-scope":"flows","security":[{"apiKey":[]},{"oauth2":["flows"]}],"parameters":[{"name":"libraryKey","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"flow":{"$ref":"#/components/schemas/Flow"},"isNew":{"type":"boolean"}},"required":["ok","flow","isNew"],"additionalProperties":false},"example":{"ok":true,"flow":{"id":"flw_k3j9x2m4q8w1z7p5n6b0","libraryKey":"order_verification","name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional","version":3,"publishedAt":"2026-10-12T06:30:00.000Z","languages":{"allowed":["hi-IN","en-IN"],"default":"hi-IN"},"inputs":[{"key":"customer_name","label":"Name","type":"text","required":true},{"key":"order_id","label":"Order","type":"text","required":true},{"key":"order_total","label":"Total","type":"money","required":true},{"key":"address","label":"Delivery address","type":"text","required":true}],"inputSchema":{"type":"object","required":["customer_name","order_id","order_total","address"],"properties":{"customer_name":{"type":"string","title":"Name"},"order_id":{"type":"string","title":"Order"},"order_total":{"type":"string","title":"Total"},"address":{"type":"string","title":"Delivery address"}}},"answers":[{"key":"placed_order","question":"Did you place this order?","type":"yes_no","choices":[]},{"key":"address_correct","question":"Should we deliver it to 12 MG Road, Pune?","type":"yes_no","choices":[]}],"outcomes":[{"key":"confirmed","label":"Confirmed"},{"key":"address_changed","label":"Address changed"},{"key":"cancelled","label":"Cancelled"},{"key":"needs_team","label":"Needs the team"}],"actions":["get_order","confirm_order","cancel_order","update_delivery_address"]},"isNew":true}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/flows/{flowId}/draft":{"get":{"operationId":"getFlowDraft","tags":["Flows"],"summary":"Get a flow’s draft","description":"Any flow of the org’s, published or not: its draft (if it has one), its problems, and the version runs use.","x-scope":"flows","security":[{"apiKey":[]},{"oauth2":["flows"]}],"parameters":[{"name":"flowId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"flow":{"$ref":"#/components/schemas/FlowDraft"}},"required":["ok","flow"],"additionalProperties":false},"example":{"ok":true,"flow":{"flowId":"flw_k3j9x2m4q8w1z7p5n6b0","name":"Order verification","publishedVersion":3,"draft":{"version":4,"revision":2,"definition":{"name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional"},"problems":[{"path":["steps"],"message":"Add at least one step."}],"updatedAt":"2026-10-13T09:02:41.000Z"}}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"saveFlowDraft","tags":["Flows"],"summary":"Save a flow’s draft","description":"Replaces the draft with this definition, or starts a draft from it. Runs keep using the published version until you publish.","x-scope":"flows","security":[{"apiKey":[]},{"oauth2":["flows"]}],"parameters":[{"name":"flowId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"definition":{"$ref":"#/components/schemas/FlowDefinition"}},"required":["definition"],"additionalProperties":false},"example":{"definition":{"name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional"}}}}},"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"flow":{"$ref":"#/components/schemas/FlowDraft"}},"required":["ok","flow"],"additionalProperties":false},"example":{"ok":true,"flow":{"flowId":"flw_k3j9x2m4q8w1z7p5n6b0","name":"Order verification","publishedVersion":3,"draft":{"version":4,"revision":2,"definition":{"name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional"},"problems":[{"path":["steps"],"message":"Add at least one step."}],"updatedAt":"2026-10-13T09:02:41.000Z"}}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/flows/{flowId}/publish":{"post":{"operationId":"publishFlow","tags":["Flows"],"summary":"Publish a flow","description":"The draft becomes the version runs use (the one before is retired). Refused while the draft has problems. Try it first with a test credential: test runs walk the flow without calling anyone.","x-scope":"flows","security":[{"apiKey":[]},{"oauth2":["flows"]}],"parameters":[{"name":"flowId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"flow":{"$ref":"#/components/schemas/Flow"}},"required":["ok","flow"],"additionalProperties":false},"example":{"ok":true,"flow":{"id":"flw_k3j9x2m4q8w1z7p5n6b0","libraryKey":"order_verification","name":"Order verification","description":"Confirms a cash-on-delivery order and its delivery address before it ships.","callType":"transactional","version":3,"publishedAt":"2026-10-12T06:30:00.000Z","languages":{"allowed":["hi-IN","en-IN"],"default":"hi-IN"},"inputs":[{"key":"customer_name","label":"Name","type":"text","required":true},{"key":"order_id","label":"Order","type":"text","required":true},{"key":"order_total","label":"Total","type":"money","required":true},{"key":"address","label":"Delivery address","type":"text","required":true}],"inputSchema":{"type":"object","required":["customer_name","order_id","order_total","address"],"properties":{"customer_name":{"type":"string","title":"Name"},"order_id":{"type":"string","title":"Order"},"order_total":{"type":"string","title":"Total"},"address":{"type":"string","title":"Delivery address"}}},"answers":[{"key":"placed_order","question":"Did you place this order?","type":"yes_no","choices":[]},{"key":"address_correct","question":"Should we deliver it to 12 MG Road, Pune?","type":"yes_no","choices":[]}],"outcomes":[{"key":"confirmed","label":"Confirmed"},{"key":"address_changed","label":"Address changed"},{"key":"cancelled","label":"Cancelled"},{"key":"needs_team","label":"Needs the team"}],"actions":["get_order","confirm_order","cancel_order","update_delivery_address"]}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/runs":{"post":{"operationId":"startRun","tags":["Runs"],"summary":"Start a run","description":"Calls one shopper with a flow. Every check a call needs happens first: the shopper’s consent (send it with the run, or record it on the contact), opt-outs, the flow’s required inputs and calling hours. Outside calling hours the run waits for them to open, unless `whenClosed` is `refuse`. A test key’s run calls no one.","x-scope":"runs","security":[{"apiKey":[]},{"oauth2":["runs"]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: the same key and request get the same response for 24 hours.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"flowId":{"description":"The flow to call with; its published version runs.","type":"string","pattern":"^flw_[a-z0-9]{20}$"},"flowKey":{"description":"Instead of flowId: a library flow installed for this org (POST /v1/flows/library/{libraryKey}/install), by its key, e.g. order_verification.","type":"string","pattern":"^[a-z][a-z0-9_]{1,59}$"},"contactId":{"description":"A contact to call, instead of a phone number.","type":"string","pattern":"^con_[a-z0-9]{20}$"},"phone":{"description":"Who to call, if not a contact id.","type":"string"},"name":{"description":"Saves the number as a contact with this name.","type":"string","maxLength":120},"inputs":{"default":{},"description":"The flow’s inputs, as its `inputSchema` describes.","type":"object","propertyNames":{"type":"string","maxLength":60},"additionalProperties":{"type":"string","maxLength":500}},"language":{"description":"The language to start in, when the flow allows it; else the flow’s default.","type":"string","enum":["hi-IN","en-IN","ta-IN","te-IN","mr-IN","gu-IN","bn-IN","kn-IN","ml-IN","pa-IN","od-IN"]},"consent":{"description":"The shopper’s consent, recorded on their contact before the call.","type":"object","properties":{"scope":{"type":"string","enum":["service","promotional"]},"givenAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"note":{"type":"string","minLength":1,"maxLength":500},"source":{"type":"string","enum":["form","checkout","import","verbal","other"]}},"required":["scope","givenAt","note","source"],"additionalProperties":false},"transactionAt":{"description":"When the shopper’s own purchase happened: allows a transactional call within 30 minutes.","type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"whenClosed":{"default":"schedule","description":"Outside calling hours: wait for them to open (default), or refuse.","type":"string","enum":["schedule","refuse"]},"metadata":{"default":{},"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":200},"description":"Your own references (order id, merchant id): sent back with every event."},"testAnswers":{"description":"Test keys only: the answer each question gets, by its key (\"yes\"/\"no\", a choice, a number, text). Questions left out get a sample.","type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"additionalProperties":{"type":"string","maxLength":500}}},"additionalProperties":false},"example":{"flowKey":"order_verification","phone":"+919812345678","name":"Asha Rao","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"consent":{"scope":"service","source":"checkout","givenAt":"2026-10-13T09:20:00+05:30","note":"Ticked \"Call me about this order\" at checkout."},"transactionAt":"2026-10-13T09:20:00+05:30","metadata":{"shopify_order_id":"5523981"}}}}},"responses":{"201":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"run":{"$ref":"#/components/schemas/Run"}},"required":["ok","run"],"additionalProperties":false},"example":{"ok":true,"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"scheduled","attempts":0,"maxAttempts":3,"nextAttemptAt":"2026-10-13T09:31:02.000Z","lastError":null,"outcome":null,"answers":{},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:31:02.000Z","calls":[],"actions":[]}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"listRuns","tags":["Runs"],"summary":"List runs","description":"Your runs, newest first, 50 a page (up to 100). A test key lists test runs only.","x-scope":"runs","security":[{"apiKey":[]},{"oauth2":["runs"]}],"parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","pattern":"^run_[a-z0-9]{20}$"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"flowId","in":"query","required":false,"schema":{"type":"string","pattern":"^flw_[a-z0-9]{20}$"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["scheduled","dialing","done","gave_up","canceled"]}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"runs":{"type":"array","items":{"$ref":"#/components/schemas/Run"}},"nextCursor":{"type":["string","null"]}},"required":["ok","runs","nextCursor"],"additionalProperties":false},"example":{"ok":true,"runs":[{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"done","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":"confirmed","answers":{"placed_order":true,"address_correct":true},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:32:20.000Z","calls":[{"callId":"cal_r4t6y8u0i2o4p6a8s0d2","attempt":1,"status":"completed","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","outcome":"confirmed"}],"actions":[{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}]}],"nextCursor":null}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/runs/{runId}":{"get":{"operationId":"getRun","tags":["Runs"],"summary":"Get a run","description":"Where the run is, each attempt, and once the shopper answered, their answers and the outcome.","x-scope":"runs","security":[{"apiKey":[]},{"oauth2":["runs"]}],"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"run":{"$ref":"#/components/schemas/Run"}},"required":["ok","run"],"additionalProperties":false},"example":{"ok":true,"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"done","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":"confirmed","answers":{"placed_order":true,"address_correct":true},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:32:20.000Z","calls":[{"callId":"cal_r4t6y8u0i2o4p6a8s0d2","attempt":1,"status":"completed","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","outcome":"confirmed"}],"actions":[{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}]}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/runs/{runId}/cancel":{"post":{"operationId":"cancelRun","tags":["Runs"],"summary":"Cancel a run","description":"No more attempts. A call already on carries on to its end. A finished run stays as it is.","x-scope":"runs","security":[{"apiKey":[]},{"oauth2":["runs"]}],"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: the same key and request get the same response for 24 hours.","schema":{"type":"string","maxLength":255}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"run":{"$ref":"#/components/schemas/Run"}},"required":["ok","run"],"additionalProperties":false},"example":{"ok":true,"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"canceled","attempts":0,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":null,"answers":{},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:31:02.000Z","calls":[],"actions":[]}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/calls/{callId}":{"get":{"operationId":"getCall","tags":["Calls"],"summary":"Get a call","description":"One attempt of a run: how it went, its transcript, and a link to its recording.","x-scope":"calls","security":[{"apiKey":[]},{"oauth2":["calls"]}],"parameters":[{"name":"callId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"call":{"$ref":"#/components/schemas/Call"}},"required":["ok","call"],"additionalProperties":false},"example":{"ok":true,"call":{"id":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","attempt":1,"status":"completed","endReason":"completed","toNumber":"+919812345678","language":"hi-IN","languagesHeard":["hi-IN"],"answers":{"placed_order":true,"address_correct":true},"outcome":"confirmed","talkSeconds":68,"isTest":false,"createdAt":"2026-10-13T09:31:03.000Z","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","recordingUrl":"https://recordings.rowcall.ai/cal_r4t6y8u0i2o4p6a8s0d2.mp3?expires=1760348840&signature=…","transcript":[{"speaker":"agent","language":"hi-IN","text":"नमस्ते आशा जी, मैं Halden की ओर से RowCall बोल रही हूँ। क्या आपने ऑर्डर 4821 दिया था?","textEn":"Hello Asha, this is RowCall calling for Halden. Did you place order 4821?","startMs":400,"endMs":5200},{"speaker":"shopper","language":"hi-IN","text":"हाँ, मैंने दिया था।","textEn":"Yes, I did.","startMs":5900,"endMs":7100}]}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/contacts":{"put":{"operationId":"upsertContact","tags":["Contacts"],"summary":"Add or update a contact","description":"By phone number: a new number is added (201); a known one gets what you send (fields are merged). Send `consent` to record the shopper’s consent at the same time.","x-scope":"contacts","security":[{"apiKey":[]},{"oauth2":["contacts"]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phone":{"type":"string"},"name":{"type":"string","maxLength":120},"language":{"anyOf":[{"type":"string","enum":["hi-IN","en-IN","ta-IN","te-IN","mr-IN","gu-IN","bn-IN","kn-IN","ml-IN","pa-IN","od-IN"]},{"type":"null"}]},"fields":{"description":"Merged into the contact’s fields.","type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40,"pattern":"^[\\p{L}\\p{N} _.-]+$"},"additionalProperties":{"type":"string","maxLength":500}},"consent":{"type":"object","properties":{"scope":{"type":"string","enum":["service","promotional"]},"givenAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"note":{"type":"string","minLength":1,"maxLength":500},"source":{"type":"string","enum":["form","checkout","import","verbal","other"]}},"required":["scope","givenAt","note","source"],"additionalProperties":false}},"required":["phone"],"additionalProperties":false},"example":{"phone":"98123 45678","name":"Asha Rao","language":"hi-IN","fields":{"city":"Pune"},"consent":{"scope":"service","source":"checkout","givenAt":"2026-10-13T09:20:00+05:30","note":"Ticked \"Call me about this order\" at checkout."}}}}},"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"contact":{"$ref":"#/components/schemas/Contact"},"isNew":{"type":"boolean","description":"Whether the number was added just now."}},"required":["ok","contact","isNew"],"additionalProperties":false},"example":{"ok":true,"contact":{"id":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","name":"Asha Rao","language":"hi-IN","fields":{"city":"Pune"},"isOptedOut":false,"consents":[{"id":"cns_h2g4f6d8s0a2p4o6i8u0","scope":"service","source":"checkout","givenAt":"2026-10-13T03:50:00.000Z","note":"Ticked \"Call me about this order\" at checkout.","expiresAt":"2026-10-20T03:50:00.000Z","isStanding":true}],"createdAt":"2026-09-28T11:04:00.000Z","updatedAt":"2026-10-13T09:20:00.000Z"},"isNew":false}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/actions":{"get":{"operationId":"listActions","tags":["Actions"],"summary":"List actions","description":"The actions your flows can use: yours first, then RowCall’s suggestions (presets). An action that isn’t connected (`transport: none`) answers calls with its sample reply.","x-scope":"actions","security":[{"apiKey":[]},{"oauth2":["actions"]}],"parameters":[],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"actions":{"type":"array","items":{"$ref":"#/components/schemas/Action"}}},"required":["ok","actions"],"additionalProperties":false},"example":{"ok":true,"actions":[{"name":"confirm_order","kind":"write","description":"Marks the order as confirmed by the shopper, so it ships.","parameters":{"order_id":{"type":"string","description":"The order number."}},"sample":{"confirmed":true},"isPreset":false,"isSaved":true,"transport":"rowcall","http":null,"requiresConfirmation":true,"timeoutMs":4000,"maxPerCall":2}]}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/actions/{name}":{"put":{"operationId":"saveAction","tags":["Actions"],"summary":"Create or change an action","description":"Defines an action of yours, or changes one: what it does, read or write, its parameters, a sample reply, and how it’s taken: `rowcall` (RowCall’s signed request to your action URL) or `http` (your own HTTP request, a template). A preset starts from its own definition. Parameters can’t change while a published flow uses it.","x-scope":"actions","security":[{"apiKey":[]},{"oauth2":["actions"]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"description":"What it does: the AI reads it.","type":"string","minLength":1,"maxLength":300},"kind":{"type":"string","enum":["read","write"]},"parameters":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,39}$"},"additionalProperties":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean"]},"description":{"type":"string","maxLength":200}},"required":["type","description"],"additionalProperties":false}},"sample":{"description":"What a successful call returns in simulations and while it isn’t connected.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"transport":{"description":"`rowcall`: RowCall’s signed request to your action URL. `http`: your own request.","type":"string","enum":["none","rowcall","http"]},"http":{"anyOf":[{"$ref":"#/components/schemas/ActionHttp"},{"type":"null"}]},"requiresConfirmation":{"description":"Send it only after the shopper agreed at a confirm step in this call (off by default).","type":"boolean"},"timeoutMs":{"description":"How long RowCall waits for a reply: 1500 for reads, 2500 for writes by default.","type":"integer","minimum":500,"maximum":5000},"maxPerCall":{"description":"How often one call may use it (2).","type":"integer","minimum":1,"maximum":10}},"additionalProperties":false},"example":{"description":"Marks the order as confirmed by the shopper, so it ships.","kind":"write","parameters":{"order_id":{"type":"string","description":"The order number."}},"sample":{"confirmed":true},"transport":"rowcall","requiresConfirmation":true}}}},"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"action":{"$ref":"#/components/schemas/Action"}},"required":["ok","action"],"additionalProperties":false},"example":{"ok":true,"action":{"name":"confirm_order","kind":"write","description":"Marks the order as confirmed by the shopper, so it ships.","parameters":{"order_id":{"type":"string","description":"The order number."}},"sample":{"confirmed":true},"isPreset":false,"isSaved":true,"transport":"rowcall","http":null,"requiresConfirmation":true,"timeoutMs":4000,"maxPerCall":2}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteAction","tags":["Actions"],"summary":"Delete an action","description":"Removes one of your actions. A changed preset goes back to RowCall’s suggestion. Refused while a published flow uses an action whose parameters only you defined.","x-scope":"actions","security":[{"apiKey":[]},{"oauth2":["actions"]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false},"example":{"ok":true}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/runs/{runId}/actions/{actionId}/result":{"post":{"operationId":"finishAction","tags":["Actions"],"summary":"Finish a pending action","description":"For an action your system answered with 202 `{ \"pending\": true }`: how it ended.","x-scope":"actions","security":[{"apiKey":[]},{"oauth2":["actions"]}],"parameters":[{"name":"runId","in":"path","required":true,"schema":{"type":"string"}},{"name":"actionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Retry safely: the same key and request get the same response for 24 hours.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether it was done."},"result":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"errorCode":{"description":"Why not, when `ok` is false.","type":"string","maxLength":60},"say":{"type":"string","maxLength":300}},"required":["ok"],"additionalProperties":false},"example":{"ok":true,"result":{"confirmed":true}}}}},"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true},"actionCall":{"$ref":"#/components/schemas/ActionCall"}},"required":["ok","actionCall"],"additionalProperties":false},"example":{"ok":true,"actionCall":{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}}}}},"default":{"description":"Refused or failed: `errorCode` says why (see `x-errors`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{"run.queued":{"post":{"operationId":"event.run.queued","tags":["Events"],"summary":"A run is waiting","description":"A run was started and waits for its next attempt (or for calling hours to open).","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"run.queued"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"}},"required":["run"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"run.queued","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"scheduled","attempts":0,"maxAttempts":3,"nextAttemptAt":"2026-10-13T09:31:02.000Z","lastError":null,"outcome":null,"answers":{},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:31:02.000Z","calls":[],"actions":[]}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"run.ringing":{"post":{"operationId":"event.run.ringing","tags":["Events"],"summary":"The shopper’s phone is ringing","description":"An attempt reached the shopper’s phone.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"run.ringing"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"}},"required":["run"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"run.ringing","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"dialing","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":null,"answers":{},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:31:02.000Z","calls":[],"actions":[]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2"}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"run.answered":{"post":{"operationId":"event.run.answered","tags":["Events"],"summary":"The shopper answered","description":"The shopper picked up; the agent is talking to them.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"run.answered"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"}},"required":["run"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"run.answered","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"dialing","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":null,"answers":{},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:31:02.000Z","calls":[],"actions":[]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2"}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"run.no_answer":{"post":{"operationId":"event.run.no_answer","tags":["Events"],"summary":"An attempt went unanswered","description":"Nobody answered, or the line was busy. The run tries again if it has attempts left.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"run.no_answer"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"}},"required":["run"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"run.no_answer","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"scheduled","attempts":1,"maxAttempts":3,"nextAttemptAt":"2026-10-13T10:01:30.000Z","lastError":"no_answer","outcome":null,"answers":{},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:31:02.000Z","calls":[],"actions":[]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2"}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"run.completed":{"post":{"operationId":"event.run.completed","tags":["Events"],"summary":"A run finished","description":"The shopper finished the call: `run.answers` and `run.outcome` hold what they said.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"run.completed"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"}},"required":["run"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"run.completed","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"done","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":"confirmed","answers":{"placed_order":true,"address_correct":true},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:32:20.000Z","calls":[{"callId":"cal_r4t6y8u0i2o4p6a8s0d2","attempt":1,"status":"completed","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","outcome":"confirmed"}],"actions":[{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2"}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"run.failed":{"post":{"operationId":"event.run.failed","tags":["Events"],"summary":"A run gave up","description":"The run stopped without reaching the shopper; `run.lastError` says why.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"run.failed"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"}},"required":["run"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"run.failed","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"gave_up","attempts":3,"maxAttempts":3,"nextAttemptAt":null,"lastError":"no_answer","outcome":null,"answers":{},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:31:02.000Z","calls":[],"actions":[]}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"run.canceled":{"post":{"operationId":"event.run.canceled","tags":["Events"],"summary":"A run was cancelled","description":"Someone cancelled the run before it finished.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"run.canceled"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"}},"required":["run"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"run.canceled","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"canceled","attempts":0,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":null,"answers":{},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:31:02.000Z","calls":[],"actions":[]}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"action.completed":{"post":{"operationId":"event.action.completed","tags":["Events"],"summary":"An action succeeded","description":"The agent used an action during a call and it succeeded.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"action.completed"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"},"action":{"$ref":"#/components/schemas/ActionCall"}},"required":["run","action"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"action.completed","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"done","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":"confirmed","answers":{"placed_order":true,"address_correct":true},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:32:20.000Z","calls":[{"callId":"cal_r4t6y8u0i2o4p6a8s0d2","attempt":1,"status":"completed","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","outcome":"confirmed"}],"actions":[{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2","action":{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"action.failed":{"post":{"operationId":"event.action.failed","tags":["Events"],"summary":"An action failed","description":"An action was refused, timed out or isn’t connected; `action.status` and `action.errorCode` say how.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"action.failed"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"},"action":{"$ref":"#/components/schemas/ActionCall"}},"required":["run","action"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"action.failed","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"done","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":"confirmed","answers":{"placed_order":true,"address_correct":true},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:32:20.000Z","calls":[{"callId":"cal_r4t6y8u0i2o4p6a8s0d2","attempt":1,"status":"completed","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","outcome":"confirmed"}],"actions":[{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2","action":{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"refused","result":null,"say":"This order has already shipped.","errorCode":"ALREADY_SHIPPED","httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"handoff.requested":{"post":{"operationId":"event.handoff.requested","tags":["Events"],"summary":"A person is wanted","description":"The call should go to a person: the shopper asked for one, or your team took it over.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"handoff.requested"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"},"handoff":{"$ref":"#/components/schemas/Handoff"}},"required":["run","handoff"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"handoff.requested","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"done","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":"confirmed","answers":{"placed_order":true,"address_correct":true},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:32:20.000Z","calls":[{"callId":"cal_r4t6y8u0i2o4p6a8s0d2","attempt":1,"status":"completed","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","outcome":"confirmed"}],"actions":[{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2","handoff":{"transferId":"trf_b1n3m5k7j9h1g3f5d7s9","reason":"asked_for_person","to":{"userId":"usr_p2o4i6u8y0t2r4e6w8q0","phone":null}}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"handoff.connected":{"post":{"operationId":"event.handoff.connected","tags":["Events"],"summary":"A person took the call","description":"A teammate or a phone number took the call from the agent.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"handoff.connected"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"},"handoff":{"$ref":"#/components/schemas/Handoff"}},"required":["run","handoff"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"handoff.connected","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"done","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":"confirmed","answers":{"placed_order":true,"address_correct":true},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:32:20.000Z","calls":[{"callId":"cal_r4t6y8u0i2o4p6a8s0d2","attempt":1,"status":"completed","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","outcome":"confirmed"}],"actions":[{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2","handoff":{"transferId":"trf_b1n3m5k7j9h1g3f5d7s9","reason":"asked_for_person","to":{"userId":"usr_p2o4i6u8y0t2r4e6w8q0","phone":null}}}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"optout.received":{"post":{"operationId":"event.optout.received","tags":["Events"],"summary":"A shopper opted out","description":"The shopper asked not to be called again. RowCall won’t call the number until they ask to be.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"optout.received"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"run":{"$ref":"#/components/schemas/Run"},"callId":{"description":"The call it’s about.","type":"string"},"phone":{"type":"string","example":"+919812345678"}},"required":["run","phone"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"optout.received","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"run":{"id":"run_8hq2x2m4q8w1z7p5n6b0","flowId":"flw_k3j9x2m4q8w1z7p5n6b0","flowVersionId":"flv_z2x4c6v8b0n2m4l6k8j0","contactId":"con_m5n7b9v1c3x5z7l9k1j3","phone":"+919812345678","inputs":{"customer_name":"Asha","phone":"+919812345678","order_id":"4821","items":"a pair of running shoes","order_total":"2499","address":"12 MG Road, Pune"},"language":"hi-IN","status":"done","attempts":1,"maxAttempts":3,"nextAttemptAt":null,"lastError":null,"outcome":"confirmed","answers":{"placed_order":true,"address_correct":true},"metadata":{"shopify_order_id":"5523981"},"isTest":false,"createdAt":"2026-10-13T09:31:02.000Z","updatedAt":"2026-10-13T09:32:20.000Z","calls":[{"callId":"cal_r4t6y8u0i2o4p6a8s0d2","attempt":1,"status":"completed","answeredAt":"2026-10-13T09:31:12.000Z","endedAt":"2026-10-13T09:32:20.000Z","outcome":"confirmed"}],"actions":[{"id":"act_q1w3e5r7t9y1u3i5o7p9","callId":"cal_r4t6y8u0i2o4p6a8s0d2","runId":"run_8hq2x2m4q8w1z7p5n6b0","name":"confirm_order","args":{"order_id":"4821"},"status":"success","result":{"confirmed":true},"say":null,"errorCode":null,"httpStatus":200,"durationMs":412,"createdAt":"2026-10-13T09:31:48.000Z","finishedAt":"2026-10-13T09:31:48.412Z"}]},"callId":"cal_r4t6y8u0i2o4p6a8s0d2","phone":"+919812345678"}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"ping":{"post":{"operationId":"event.ping","tags":["Events"],"summary":"A test event","description":"Sent only by “Send a test event” in Developers → Webhooks, to check your endpoint.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"ping"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"ping","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"message":"A test event from RowCall. Verify its signature, then answer with any 2xx."}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"app.installed":{"post":{"operationId":"event.app.installed","tags":["Events"],"summary":"A merchant connected your app","description":"Apps only, always sent: a merchant connected your app to their org with these scopes.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"app.installed"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"app":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"scopes":{"type":"array","items":{"type":"string","enum":["runs","flows","contacts","calls","actions"]}}},"required":["app","scopes"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"app.installed","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"app":{"id":"app_g7f5d3s1a9p7o5i3u1y9","name":"Glood"},"scopes":["runs","flows","actions"]}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"app.uninstalled":{"post":{"operationId":"event.app.uninstalled","tags":["Events"],"summary":"A merchant disconnected your app","description":"Apps only, always sent: the merchant disconnected your app, and its tokens for the org stop working.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Unique per event: use it to ignore a repeat delivery.","example":"evt_…"},"type":{"type":"string","const":"app.uninstalled"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string","description":"The org it’s about (an app hears every connected org at one URL)."},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:32:20.000Z"},"data":{"type":"object","properties":{"app":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"scopes":{"type":"array","items":{"type":"string","enum":["runs","flows","contacts","calls","actions"]}}},"required":["app","scopes"],"additionalProperties":false}},"required":["id","type","mode","orgId","createdAt","data"],"additionalProperties":false},"example":{"id":"evt_c8v6b4n2m0l8k6j4h2g0","type":"app.uninstalled","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","createdAt":"2026-10-13T09:32:20.000Z","data":{"app":{"id":"app_g7f5d3s1a9p7o5i3u1y9","name":"Glood"},"scopes":["runs","flows","actions"]}}}}},"responses":{"2XX":{"description":"Received. Anything else is retried with backoff for 24 hours."}}}},"action.request":{"post":{"operationId":"action.request","tags":["Action requests"],"summary":"The agent uses an action","description":"During a call, for an action taken by RowCall’s request (`transport: rowcall`): RowCall posts to your action URL and waits until `deadline` for your answer. A read is tried once more on a timeout or 5xx when time allows; the `Idempotency-Key` header (`<callId>:<actionId>`) is the same both times.","parameters":[{"name":"RowCall-Signature","in":"header","required":true,"description":"`t=<unix seconds>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with your signing secret. Check it, and that `t` is within 5 minutes, before trusting the body. During a secret rotation there are two `v1` values.","schema":{"type":"string","example":"t=1760348000,v1=5f2b…"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"actionId":{"type":"string","description":"Finish a pending action with it.","example":"act_q1w3e5r7t9y1u3i5o7p9"},"action":{"type":"string","example":"confirm_order"},"mode":{"type":"string","enum":["live","test"]},"orgId":{"type":"string"},"runId":{"type":["string","null"]},"callId":{"type":"string"},"contact":{"type":"object","properties":{"phone":{"type":["string","null"]}},"required":["phone"],"additionalProperties":false},"args":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"The action’s parameters, as the agent filled them."},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"The run’s metadata, as you started it."},"isConfirmed":{"type":"boolean","description":"Whether the shopper confirmed, for actions that need it."},"deadline":{"type":"string","description":"Answer before this, or the action times out.","example":"2026-10-13T09:32:20.000Z"}},"required":["actionId","action","mode","orgId","runId","callId","contact","args","metadata","isConfirmed","deadline"],"additionalProperties":false},"example":{"actionId":"act_q1w3e5r7t9y1u3i5o7p9","action":"confirm_order","mode":"live","orgId":"org_t1y3u5i7o9p1a3s5d7f9","runId":"run_8hq2x2m4q8w1z7p5n6b0","callId":"cal_r4t6y8u0i2o4p6a8s0d2","contact":{"phone":"+919812345678"},"args":{"order_id":"4821"},"metadata":{"shopify_order_id":"5523981"},"isConfirmed":true,"deadline":"2026-10-13T09:31:52.000Z"}}}},"responses":{"200":{"description":"Done (`ok: true`, with any `result` the agent may use), or refused (`ok: false`).","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"ok":{"type":"boolean","const":true},"result":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["ok"],"additionalProperties":false},{"type":"object","properties":{"ok":{"type":"boolean","const":false},"errorCode":{"type":"string","maxLength":60,"example":"ALREADY_SHIPPED"},"say":{"description":"What the agent may tell the shopper.","type":"string","maxLength":300}},"required":["ok","errorCode"],"additionalProperties":false}]},"examples":{"done":{"value":{"ok":true,"result":{"confirmed":true}}},"refused":{"value":{"ok":false,"errorCode":"ALREADY_SHIPPED","say":"This order has already shipped."}}}}}},"202":{"description":"Taking longer: finish it with POST /runs/{runId}/actions/{actionId}/result.","content":{"application/json":{"schema":{"type":"object","properties":{"pending":{"type":"boolean","const":true}},"required":["pending"],"additionalProperties":false},"example":{"pending":true}}}}}}}},"x-errors":[{"code":"INVALID_INPUT","meaning":"A field is missing or wrong (`error` names it), or a required flow input is missing.","whatToDo":"Fix the request. Don’t retry it as it is.","status":400},{"code":"UNAUTHENTICATED","meaning":"No credential, or the key or token is revoked or expired.","whatToDo":"Check the `Authorization` header; refresh an OAuth token.","status":401},{"code":"NO_CREDIT","meaning":"The org’s balance can’t cover a minute of calling. Test runs are never refused for credit.","whatToDo":"Top up in Settings → Billing.","status":402},{"code":"FORBIDDEN","meaning":"The credential lacks the route’s scope.","whatToDo":"Use a key, or ask for a connection, with the right scope.","status":403},{"code":"NOT_VERIFIED","meaning":"RowCall hasn’t approved the business yet, so live calls can’t start. Test runs aren’t affected.","whatToDo":"Send the business details for approval.","status":403},{"code":"ORG_SUSPENDED","meaning":"The org is suspended.","whatToDo":"Contact RowCall support.","status":403},{"code":"NO_CONSENT","meaning":"No standing consent for the flow’s call type: service consent from the last 7 days, or for a transactional flow, a purchase within 30 minutes (`transactionAt`).","whatToDo":"Send `consent` with the run, or record it on the contact first.","status":403},{"code":"OPTED_OUT","meaning":"The shopper asked not to be called.","whatToDo":"Don’t call them. The opt-out stays until they ask to be called again.","status":403},{"code":"NOT_FOUND","meaning":"No such flow, run, call, contact or action, or it belongs to the other mode (live or test).","whatToDo":"Check the id and the credential’s mode.","status":404},{"code":"CONFLICT","meaning":"The change clashes with what’s there, such as finishing an action that already has its result.","whatToDo":"Read the current state first.","status":409},{"code":"NOT_PUBLISHED","meaning":"The flow has no published version.","whatToDo":"Publish it, or start the run with a published flow.","status":409},{"code":"OUTSIDE_CALLING_HOURS","meaning":"It’s outside calling hours and the run asked to be refused then (`whenClosed: \"refuse\"`).","whatToDo":"Try again when calling hours open, or let the run wait (the default).","status":409},{"code":"NO_NUMBER","meaning":"The org has no phone number for this kind of call yet. RowCall assigns one when it approves the business.","whatToDo":"Wait for approval. Promotional flows never get a number.","status":409},{"code":"IDEMPOTENCY_IN_PROGRESS","meaning":"A request with this `Idempotency-Key` is still running.","whatToDo":"Wait a moment, then retry.","status":409},{"code":"IDEMPOTENCY_MISMATCH","meaning":"The same `Idempotency-Key` came with a different request.","whatToDo":"Use a new key for a new request.","status":422},{"code":"FLOW_INVALID","meaning":"The draft still has problems, so it can’t be published.","whatToDo":"Fix each problem the draft lists, then publish.","status":422},{"code":"PAYLOAD_TOO_LARGE","meaning":"The body is over 64 KB.","whatToDo":"Send less.","status":413},{"code":"RATE_LIMITED","meaning":"Too many requests for this credential.","whatToDo":"Wait, then retry with backoff.","status":429},{"code":"NOT_CONFIGURED","meaning":"The first attempt couldn’t be placed: nothing is set up to place it. The run ends as `gave_up`.","whatToDo":"Contact RowCall support.","status":501},{"code":"PHONE_UNAVAILABLE","meaning":"The first attempt couldn’t be placed: no phone line was free. The run ends as `gave_up`.","whatToDo":"Retry with backoff.","status":503},{"code":"INTERNAL","meaning":"Something failed on RowCall’s side.","whatToDo":"Retry with backoff; contact support if it persists.","status":500}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"An API key from Developers → API keys: `rc_live_…` or `rc_test_…`, limited to the scopes chosen for it."},"oauth2":{"type":"oauth2","description":"For apps that act for merchants (registered by RowCall). Authorization code with PKCE; access tokens last an hour and refresh tokens rotate.","flows":{"authorizationCode":{"authorizationUrl":"https://app.rowcall.ai/oauth/authorize","tokenUrl":"https://app.rowcall.ai/v1/oauth/token","refreshUrl":"https://app.rowcall.ai/v1/oauth/token","scopes":{"runs":"Start, read and cancel calls to shoppers","flows":"Read, make and publish flows","contacts":"Add and update contacts and their consent","calls":"Read calls, transcripts and recordings","actions":"Define, change and delete actions, and finish pending ones"}}}}},"schemas":{"Error":{"$ref":"#/components/schemas/Error"},"Caller":{"type":"object","properties":{"kind":{"type":"string","enum":["api_key","app"],"description":"An org’s API key, or an app connected over OAuth."},"name":{"type":"string"},"mode":{"type":"string","enum":["live","test"]},"scopes":{"type":"array","items":{"type":"string","enum":["runs","flows","contacts","calls","actions"]}}},"required":["kind","name","mode","scopes"],"additionalProperties":false},"Flow":{"type":"object","properties":{"id":{"type":"string","example":"flw_k3j9x2m4q8w1z7p5n6b0"},"libraryKey":{"description":"The library flow it was copied from (start runs with it as flowKey); null if made here.","type":["string","null"]},"name":{"type":"string"},"description":{"type":"string"},"callType":{"type":"string","enum":["transactional","service","promotional"]},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The published version runs use."},"publishedAt":{"type":["string","null"]},"languages":{"type":"object","properties":{"allowed":{"type":"array","items":{"type":"string"}},"default":{"type":"string"}},"required":["allowed","default"],"additionalProperties":false},"inputs":{"type":"array","items":{"$ref":"#/components/schemas/FlowInput"}},"inputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"A JSON Schema for a run’s `inputs` (every value is a string)."},"answers":{"type":"array","items":{"$ref":"#/components/schemas/FlowAnswer"}},"outcomes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"}},"required":["key","label"],"additionalProperties":false}},"actions":{"type":"array","items":{"type":"string"},"description":"The actions this flow may call."}},"required":["id","libraryKey","name","description","callType","version","publishedAt","languages","inputs","inputSchema","answers","outcomes","actions"],"additionalProperties":false},"FlowInput":{"type":"object","properties":{"key":{"type":"string","example":"order_id"},"label":{"type":"string","example":"Order number"},"type":{"type":"string","enum":["text","phone","number","money","date","choice","yes_no"]},"required":{"type":"boolean"},"choices":{"type":"array","items":{"type":"string"}}},"required":["key","label","type","required"],"additionalProperties":false},"FlowAnswer":{"type":"object","properties":{"key":{"type":"string","example":"address_correct"},"question":{"type":"string","description":"In the flow’s default language."},"type":{"type":"string","enum":["yes_no","text","choice","date","number"]},"choices":{"type":"array","items":{"type":"string"}}},"required":["key","question","type","choices"],"additionalProperties":false},"FlowDraft":{"type":"object","properties":{"flowId":{"type":"string","example":"flw_k3j9x2m4q8w1z7p5n6b0"},"name":{"type":"string"},"publishedVersion":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"What runs use now; null until published."},"draft":{"anyOf":[{"type":"object","properties":{"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"revision":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Goes up with every save."},"definition":{"$ref":"#/components/schemas/FlowDefinition"},"problems":{"type":"array","items":{"$ref":"#/components/schemas/FlowProblem"},"description":"Empty when it can be published."},"updatedAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"}},"required":["version","revision","definition","problems","updatedAt"],"additionalProperties":false},{"type":"null"}],"description":"null when there is no draft (the published version is current)."}},"required":["flowId","name","publishedVersion","draft"],"additionalProperties":false},"FlowDefinition":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"A flow definition (see the docs for every field)."},"FlowProblem":{"type":"object","properties":{"path":{"type":"array","items":{"type":["string","number"]},"example":["steps",2,"question"]},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false},"Run":{"type":"object","properties":{"id":{"type":"string","example":"run_8hq2x2m4q8w1z7p5n6b0"},"flowId":{"type":"string"},"flowVersionId":{"type":"string","description":"The exact published version the run follows."},"contactId":{"type":["string","null"]},"phone":{"type":"string"},"inputs":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"language":{"type":"string"},"status":{"type":"string","enum":["scheduled","dialing","done","gave_up","canceled"]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxAttempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextAttemptAt":{"anyOf":[{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},{"type":"null"}]},"lastError":{"description":"Why it’s waiting or stopped without reaching the shopper.","example":"no_answer","type":["string","null"]},"outcome":{"description":"The run’s outcome once it ends (its last attempt’s).","type":["string","null"]},"answers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number","boolean","null"]},"description":"The last attempt’s answers, by question key."},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"isTest":{"type":"boolean"},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},"updatedAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},"calls":{"type":"array","items":{"$ref":"#/components/schemas/RunAttempt"}},"actions":{"type":"array","items":{"$ref":"#/components/schemas/ActionCall"},"description":"Every action its calls asked for, oldest first."}},"required":["id","flowId","flowVersionId","contactId","phone","inputs","language","status","attempts","maxAttempts","nextAttemptAt","lastError","outcome","answers","metadata","isTest","createdAt","updatedAt","calls","actions"],"additionalProperties":false},"RunAttempt":{"type":"object","properties":{"callId":{"type":"string"},"attempt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","example":"completed"},"answeredAt":{"anyOf":[{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},{"type":"null"}]},"outcome":{"type":["string","null"]}},"required":["callId","attempt","status","answeredAt","endedAt","outcome"],"additionalProperties":false},"ActionCall":{"type":"object","properties":{"id":{"type":"string","example":"act_k3j9x2m4q8w1z7p5n6b0"},"callId":{"type":"string"},"runId":{"type":["string","null"]},"name":{"type":"string","example":"confirm_order"},"args":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"status":{"type":"string","enum":["sent","success","refused","pending","timeout","sample"],"description":"`sample`: not registered, so the catalogue’s sample reply was used."},"result":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"say":{"type":["string","null"]},"errorCode":{"type":["string","null"]},"httpStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},"finishedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},{"type":"null"}]}},"required":["id","callId","runId","name","args","status","result","say","errorCode","httpStatus","durationMs","createdAt","finishedAt"],"additionalProperties":false},"Call":{"type":"object","properties":{"id":{"type":"string","example":"cal_k3j9x2m4q8w1z7p5n6b0"},"runId":{"type":["string","null"]},"attempt":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"status":{"type":"string"},"endReason":{"type":["string","null"]},"toNumber":{"type":["string","null"]},"language":{"type":"string"},"languagesHeard":{"type":"array","items":{"type":"string"}},"answers":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["string","number","boolean","null"]}},"outcome":{"type":["string","null"]},"talkSeconds":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isTest":{"type":"boolean"},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},"answeredAt":{"anyOf":[{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},{"type":"null"}]},"recordingUrl":{"description":"Plays the recording for 15 minutes; fetch again after.","type":["string","null"]},"transcript":{"type":"array","items":{"$ref":"#/components/schemas/TranscriptLine"}}},"required":["id","runId","attempt","status","endReason","toNumber","language","languagesHeard","answers","outcome","talkSeconds","isTest","createdAt","answeredAt","endedAt","recordingUrl","transcript"],"additionalProperties":false},"TranscriptLine":{"type":"object","properties":{"speaker":{"type":"string","enum":["agent","shopper"]},"language":{"type":"string"},"text":{"type":"string"},"textEn":{"description":"In English, when said in another language.","type":["string","null"]},"startMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"From the start of the call."},"endMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["speaker","language","text","textEn","startMs","endMs"],"additionalProperties":false},"Contact":{"type":"object","properties":{"id":{"type":"string","example":"con_k3j9x2m4q8w1z7p5n6b0"},"phone":{"type":"string"},"name":{"type":"string"},"language":{"type":["string","null"]},"fields":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"isOptedOut":{"type":"boolean"},"consents":{"type":"array","items":{"$ref":"#/components/schemas/Consent"}},"createdAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},"updatedAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"}},"required":["id","phone","name","language","fields","isOptedOut","consents","createdAt","updatedAt"],"additionalProperties":false},"Consent":{"type":"object","properties":{"id":{"type":"string"},"scope":{"type":"string","enum":["service","promotional"]},"source":{"type":"string"},"givenAt":{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},"note":{"type":"string"},"expiresAt":{"anyOf":[{"type":"string","description":"ISO 8601 time.","example":"2026-10-13T09:31:12.000Z"},{"type":"null"}]},"isStanding":{"type":"boolean"}},"required":["id","scope","source","givenAt","note","expiresAt","isStanding"],"additionalProperties":false},"Action":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["read","write"]},"description":{"type":"string"},"parameters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}},"required":["type","description"],"additionalProperties":false}},"sample":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"isPreset":{"type":"boolean","description":"One of RowCall’s suggestions, as suggested (not changed by you)."},"isSaved":{"type":"boolean","description":"Whether it’s saved as yours (a preset doesn’t have to be)."},"transport":{"type":"string","enum":["none","rowcall","http"],"description":"How it’s taken; `none`: calls get the sample reply."},"http":{"anyOf":[{"type":"object","properties":{"method":{"type":"string"},"url":{"type":"string"},"body":{"type":["string","null"]},"headerNames":{"type":"array","items":{"type":"string"}},"successField":{"type":["string","null"]},"resultFields":{"type":"array","items":{"type":"string"}},"sayField":{"type":["string","null"]}},"required":["method","url","body","headerNames","successField","resultFields","sayField"],"additionalProperties":false},{"type":"null"}]},"requiresConfirmation":{"type":"boolean"},"timeoutMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxPerCall":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","kind","description","parameters","sample","isPreset","isSaved","transport","http","requiresConfirmation","timeoutMs","maxPerCall"],"additionalProperties":false},"ActionHttp":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]},"url":{"type":"string","minLength":8,"maxLength":500},"body":{"default":null,"description":"A JSON template, or null for none.","anyOf":[{"type":"string","maxLength":5000},{"type":"null"}]},"headers":{"description":"Sent with every request; stored encrypted and never shown again. Leave out to keep.","type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z0-9-]{1,60}$"},"additionalProperties":{"type":"string","maxLength":1000}},"successField":{"default":null,"description":"A reply field that must be true (or \"ok\", \"success\") for success; null: any 2xx.","anyOf":[{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9_.-]*$"},{"type":"null"}]},"resultFields":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_.-]*$"}},"sayField":{"default":null,"description":"A reply field to tell the shopper when it fails.","anyOf":[{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9_.-]*$"},{"type":"null"}]}},"required":["method","url"],"additionalProperties":false},"Handoff":{"type":"object","properties":{"transferId":{"description":"null while nobody has been asked yet.","type":["string","null"]},"reason":{"type":"string","enum":["manual","asked_for_person"],"description":"`manual`: your team took the call over. `asked_for_person`: the shopper asked for one."},"to":{"anyOf":[{"type":"object","properties":{"userId":{"type":["string","null"]},"phone":{"type":["string","null"]}},"required":["userId","phone"],"additionalProperties":false},{"type":"null"}],"description":"Who the call goes to: a teammate in the dashboard, or a phone number."}},"required":["transferId","reason","to"],"additionalProperties":false}}}}