Skip to content
DocsStart free

Flow Node Reference

This is the complete reference for the 19 node types in the call-flow DSL. Each node’s data object is discriminated by its kind. The outcomes column lists the sourceHandle values you can draw edges from.

{ "kind": "entry", "trigger": "inbound" }
FieldTypeNotes
trigger"inbound" | "internal" | "api"How the flow was entered.

Outcomes: default.

Play a pre-recorded audio file (a media_file).

{ "kind": "play", "audioId": "welcome-msg" }
FieldTypeNotes
audioIdstringMedia id to play.

Outcomes: default.

Speak text via TTS.

{ "kind": "say", "text": "Thanks for calling.", "voice": "en-US-neural-male" }
FieldTypeNotes
textstringText to synthesize.
voicestring?Optional voice override.

Outcomes: default.

Play a prompt and branch on a DTMF keypress. Re-prompts on invalid/timeout up to the configured limits.

{ "kind": "menu", "promptText": "Press 1 for sales, 2 for support",
"maxDigits": 1, "timeoutSec": 5, "maxFailures": 2, "bargeIn": true }
FieldTypeNotes
promptAudioId / promptTextstring?First-entry prompt (audio or text).
repromptAudioIdstring?Played on re-prompt.
invalidAudioIdstring?Played before re-prompt on an unmapped key.
minDigits / maxDigitsnumberDigit count bounds (maxDigits required).
terminatorsstring?e.g. "#".
timeoutSecnumberFirst-digit wait.
interDigitTimeoutSecnumber?Wait between digits.
maxFailures / maxTimeoutsnumber?Give-up counters.
bargeInboolean?A keypress interrupts the prompt (default true).

Outcomes: digit:0digit:9, digit:*, digit:#, timeout, invalid.

Capture digits into a variable (PIN, account number), with optional regex validation.

{ "kind": "collect", "variable": "account_no", "maxDigits": 8,
"terminator": "#", "regex": "^[0-9]{6,8}$", "maxTries": 3 }
FieldTypeNotes
variablestringFlow variable to store the digits in.
promptAudioId / repromptAudioId / invalidAudioIdstring?Prompts.
minDigits / maxDigitsnumberBounds.
terminatorstring?e.g. "#".
timeoutSec / interDigitTimeoutSecnumber?Timeouts.
regexstring?Validation pattern.
maxTriesnumber?Retry budget.
bargeInboolean?Interrupt the prompt.

Outcomes: valid / default, invalid, timeout.

Dial a single target and bridge.

{ "kind": "dial", "target": "1001", "targetType": "user", "timeoutSec": 25 }
FieldTypeNotes
targetstringUser, extension, or PSTN number.
targetType"user" | "extension" | "pstn"What target is.
timeoutSecnumberRing timeout.

Outcomes: answered, no_answer, busy.

Fork to the members of a ring group.

{ "kind": "ringGroup", "ringGroupId": "rg_01jdr70g9apz69vke5at748d47", "strategy": "ring_all", "timeoutSec": 25 }
FieldTypeNotes
ringGroupIdstringThe ring group to fork to.
strategy"ring_all" | "sequential" | "round_robin"?Overrides the group’s strategy.
timeoutSecnumberOverall ring timeout.

Outcomes: answered, no_answer.

Place the caller into an ACD queue.

{ "kind": "enqueue", "queueId": "q_01j160r23gw5zkpfjme3fwzs5k", "priority": 0 }
FieldTypeNotes
queueIdstringThe queue to join.
prioritynumber?Higher priority is served first.

Outcomes: answered (bridged to agent), abandoned (caller hung up), timeout (max-wait exceeded), no_agents (no viable agent, overflow immediately), queue_full (at max_queued, deflected at join), ewt (estimated wait over threshold, deflected at join). See Overflow & Exit Destinations.

Record a message to a mailbox.

{ "kind": "voicemail", "mailboxId": "vm_01jg8asp59ps9rtt7azhrhvcre", "greetingAudioId": "vm-greeting" }
FieldTypeNotes
mailboxIdstringThe voicemail box.
greetingAudioIdstring?Custom greeting.

Outcomes: recorded, no_message.

Join a conference room (the media engine the conferencing module, also the 3-way primitive).

{ "kind": "conference", "roomId": "team-standup" }
FieldTypeNotes
roomIdstringConference room id.

Outcomes: ended.

Forward to an external number. See Call Forwarding for triggers, screening, and overflow.

{ "kind": "forward", "number": "12025550100", "cidMode": "did", "timeoutSec": 30, "confirm": true }
FieldTypeNotes
numberstringE.164 destination (dialed via outbound routing).
cidMode"passthrough" | "did"Caller-ID presentation.
timeoutSecnumberRing time before no-answer.
confirmbooleanPress-1 screening on the answered leg; unconfirmed → the overflow edge.

Outcomes: answered, no_answer.

Transfer the call. For agent-initiated blind/attended transfers, see Call Transfer.

{ "kind": "transfer", "target": "1002", "mode": "blind" }
FieldTypeNotes
targetstringTransfer destination.
mode"blind" | "attended"Transfer mode.

Outcomes: default.

Set a flow variable.

{ "kind": "setVar", "variable": "tier", "value": "gold" }

Outcomes: default.

Branch on an expression evaluated against the flow’s variables. Resolved inside the stateful edge object (no edge round-trip).

{ "kind": "condition", "expr": "tier == 'gold'" }

Outcomes: true, false.

Call an external API and branch on the result. Resolved inside the stateful edge object (the session object performs the fetch directly).

{ "kind": "httpRequest", "url": "https://api.example.com/lookup", "method": "GET", "saveAs": "lookup" }
FieldTypeNotes
urlstringEndpoint.
methodstringHTTP method.
saveAsstring?Save the response into this variable.

Outcomes: 2xx, error.

Branch on a business-hours schedule. Resolved inside the stateful edge object.

{ "kind": "timeCondition", "scheduleId": "sch_01j0jvpe0wzc6g05bktfew0xyx" }
FieldTypeNotes
scheduleIdstringThe time_schedule to evaluate.

Outcomes: in_hours, out_of_hours, holiday (falls back to out_of_hours if undrawn).

Request a callback (enqueue a dialer lead). Designed; currently falls through to default.

{ "kind": "callback", "listId": "pl_01jnk3j4cb1v4bd8hnydh0vsn0" }

Outcomes: default.

Route a repeat caller back to their previous agent (sticky agent). Designed; currently falls through to default.

{ "kind": "lastCalledUser", "timeframeMin": 1440, "fallbackNodeId": "supQ" }

Outcomes: routed, none.

End the call.

{ "kind": "hangup", "cause": "normal_clearing" }
FieldTypeNotes
causestring?Optional SIP/Q.850 cause.

Outcomes: terminal (no outgoing edges).