Skip to main content
Create an IVR flow

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.

Body

application/json

A new flow is created with draft_revision 1, no published revision, and a single entry node, so it opens as a valid canvas rather than a blank one the designer cannot start from.

name
string
required

What the IVR is called, in lists and in the designer.

campaign_kind
enum<string>

Only valid with direction=outbound; sending it on an inbound flow is refused rather than ignored. Omit it to make the flow usable by both campaign kinds.

Available options:
voice_broadcast,
auto_dial
description
string

A note for the people who maintain it.

direction
enum<string>
default:inbound

Defaults to inbound. An outbound flow's entry node is labelled for the moment a campaign's contact answers rather than for an incoming call.

Available options:
inbound,
outbound
organisation_id
string<uuid>

The organisation the number belongs to. May be left out by a caller with exactly one organisation.

team_id
string<uuid>

The team that owns the IVR, if any.

Response

Created

A call flow as a graph. published_revision is the revision answering calls; a flow with none takes no traffic. draft_revision is what the designer edits.

created_at
string<date-time>
required
direction
enum<string>
required

Which way the call is going when this graph runs. An inbound flow answers a number; an outbound one runs after a campaign's contact picks up. A campaign will not accept an inbound flow.

Available options:
inbound,
outbound
draft_revision
integer
required
id
string<uuid>
required
name
string
required
organisation_id
string<uuid>
required
updated_at
string<date-time>
required
campaign_kind
enum<string> | null

Which campaign kind an outbound flow was drawn for. Null means it suits both, and is the only valid value on an inbound flow.

Available options:
voice_broadcast,
auto_dial
description
string | null
published_revision
integer | null

The revision currently answering calls. Null means the flow has never been published and must not receive traffic.

team_id
string<uuid> | null
test_caller
string

Who a test call tells the flow is calling, E.164 (read in the organisation's region when typed without +). Null for the tester's own extension.

test_number
string

3-8 digits any extension of the organisation dials to walk through this flow as a test. Never reachable from outside. Refused if it is an extension, a park slot (701-799) or another flow's test number. Null to remove.

test_revision
enum<string>

Which version a test call runs. Default draft.

Available options:
draft,
published