Skip to main content
Ring a number into an IVR

Authorizations

Authorization
string
header
required

Every request sends Authorization: Bearer <token>. The token is either a panel session (a JWT from /auth/login, 12 hours) or an API key ft_<id>_<secret>. An API key is accepted only from an address on its IP allowlist (403 ip_not_allowed otherwise; 403 ip_allowlist_required for an old key that has none), is limited to its rate per minute (429 rate_limited with Retry-After; X-RateLimit-Limit/Remaining/Reset on every response), and at most 60 call placements a minute.

Headers

Idempotency-Key
string

Any string up to 255 characters. A retry with the same key and the same body gets the first answer again (with Idempotent-Replayed: true) instead of doing it twice; the same key with a different body is 409 idempotency_mismatch; while the first is still running, 409 idempotency_in_progress. Kept 24 hours.

Maximum string length: 255

Query Parameters

dry_run
boolean

true: check everything, place nothing, and return the plan.

Body

application/json
flow_id
string<uuid>
required

The IVR to run for whoever answers. It must be published.

to
string
required

The number to ring. An outside number, not one of your own.

Example:

"+61412345678"

callback_url
string

Where this call's events are posted, signed with your callback secret.

caller_id
string

The number of yours the person sees. Optional when you have exactly one.

Example:

"+61298765432"

organisation_id
string<uuid>

Not needed: the IVR settles the organisation. If given, it must be the IVR's.

reference
string

Your own id for this call. It comes back on the request, the callbacks and the call record.

Maximum string length: 128
variables
object

Values for this call, available to the IVR's steps as {{name}}.

Example:

Response

A dry run's plan: dry_run is always true, and nothing was placed or billed.

dry_run
boolean
required
plan
object
required