API reference

POST /v1/outbound-ivr-calls · Start an outbound IVR call

Business accounts only. Dials a number directly and runs a published outbound flow on whoever answers. Use it for verification codes, order updates or any other scripted call. There's no agent leg and no bridge (this isn't a callback), and it's billed as one flat fee per attempt rather than per minute.

The flow itself is built in the dashboard (Business → Outbound IVR, the same block editor as the inbound builder). By default this endpoint runs whichever published flow is attached to the number you dial from, so you don't need a flow id in the request. Set that up under Business → Outbound IVR → "Number → flow".

Request

text
POST https://api.spoofey.com/v1/outbound-ivr-calls
Field Required Notes
destination yes The number to call.
caller_id yes Must be one of your business's own active numbers, checked the same way as a dashboard call. Whatever outbound flow is attached to this number runs, unless override_ivr_flow is set.
override_ivr_flow no Run a different published, outbound-kind flow owned by your business for this one call, instead of whatever is attached to caller_id. caller_id still has to be one of your business's own numbers, but it doesn't have to be the one this flow is attached to.
caller_id_name no Best-effort, same caveats as regular calls.
vars no An object of extra variables the flow can read while it runs, e.g. {"code":"482913"} for a verification call. Each name must be a plain identifier (letters/digits/underscore, starting with a letter or underscore) and can't be one of the flow builder's own built-in variable names.

If caller_id has no flow attached and you didn't pass override_ivr_flow, this returns a 400. Attach one in the dashboard, or override it per call. Look up a flow's id with GET /v1/ivr-flows.

Example

bash
curl https://api.spoofey.com/v1/outbound-ivr-calls \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"destination":"14165557890","caller_id":"12025559999","vars":{"code":"482913"}}'

Response

Returns 200:

json
{
  "id": "7c1a2b3d-9e4f-4a2c-8b11-3f6a7c9d0e12",
  "status": "calling",
  "flow_id": "9e2f1a3b-...",
  "destination": "14165557890",
  "caller_id": "12025559999",
  "fee_charged": 0.15
}

flow_id is the flow that actually ran: the one attached to caller_id, or override_ivr_flow if you passed it.

Errors

Errors come back as {"error":{"message":"...","code":"..."}}. See API errors and rate limits for every status code and the rate limit.

Was this helpful?Your answer helps us improve this page.
Still stuck?Ask Spoofey AI about your exact case, or a person on our team will reply by email.
Last modified on September 25, 2026 · 2 min read
Edit