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
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
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:
{
"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.