Skip to main content

Part 4 — Reference

← Contents · Previous: Part 3 — What the engine sends you · Next: Part 5 — Call flow reference

Every value the API returns or accepts, every error code, the limits and defaults.


Calls

type

Value Call
INCOMING Someone called one of the account's numbers
BROADCAST A quick call or broadcast call-out (also scheduled callbacks)
CAMPAIGN A campaign call-out
OTP A code read out (POST /v1/otp)
AGENT_CALL An agent called someone from the browser (POST /v1/calls/agent)
TEST A test call

direction

INBOUND (to us) · OUTBOUND (from us).

status (live state)

Value Means
QUEUED Waiting for a free line (call-out pacing, concurrency)
DIALING Dialling out
RINGING The person's phone is ringing
IN_SCRIPT Blocks are running
WAITING In a waiting room (for an agent, a reply, an app action)
CONNECTING An agent accepted; joining the call
LIVE Talking with an agent
ENDED Over

result (how it went)

Value Means
HANDLED_BY_SCRIPT The flow dealt with it to the end
HANDLED_BY_AGENT An agent talked to the caller
HANDLED_BY_AI An AI Agent dealt with it
VOICEMAIL The caller left a voicemail
MISSED Waited for an agent; nobody answered before the give-up time
ABANDONED Hung up while waiting for an agent
HUNG_UP_EARLY Hung up in the first seconds
REJECTED Refused before the flow ran (no flow, suspended, feature off, caller limit, can-call said no)
FAILED Something broke (see endReason)
ANSWERED Outgoing: the person answered
NO_ANSWER Outgoing: rang, nobody answered
BUSY Outgoing: line busy
DECLINED Outgoing: the person rejected the call (SIP 603); never retried
UNREACHABLE Outgoing: phone off or out of coverage
INVALID_NUMBER Outgoing: the number does not exist
NOT_DIALED Outgoing: never dialled (stopped, opted out, refused)

endReason

Value Means
SCRIPT_END The flow ended it (Goodbye, an end of the flow)
CALLER_HUNG_UP The caller hung up
AGENT_HUNG_UP The agent hung up
AI_ENDED The AI Agent ended it
WAIT_GAVE_UP The waiting room's give-up time passed
MAX_CALL_LENGTH limits.maxCallMinutes (or the can-call maxMinutes) reached
LOOP_GUARD limits.maxBlockVisits blocks without any input from the caller
NO_INPUT The caller never answered
LIMIT Refused by a limit or rule before the flow ran
TRANSFER_FAILED A transfer could not complete
NETWORK The phone network dropped the call
NOT_ANSWERED Outgoing: not answered (see result, hangupCause, sipStatus)
SYSTEM_ERROR An engine error; the caller heard an apology
LOST_FINAL_NOTIFICATION The end was never reported; closed by the engine's clean-up

endedBy

CALLER · AGENT · AI · SYSTEM · NETWORK · UNKNOWN.

handledBy

SCRIPT · AGENT · AI · VOICEMAIL.


Call-outs

Field Values
kind BROADCAST · CAMPAIGN
status DRAFT · SCHEDULED · RUNNING · PAUSED · COMPLETED · STOPPED · CANCELLED (last three are final)
pauseReason PAUSED_BY_CLIENT (or your text) · ACCOUNT_SUSPENDED · CLIENT_SUSPENDED · VERSION_REVOKED · FEATURE_OFF · CAN_CALL:<reason>
Recipient status PENDING · DIALING · DONE · SKIPPED
Recipient result A call result (above), or OPTED_OUT
Skipped reason (adding people) INVALID_NUMBER · NOT_TANZANIAN · DUPLICATE · OPTED_OUT

Agents and departments

Field Values
Agent status OFFLINE · AVAILABLE · RINGING · BUSY · WRAP_UP · AWAY
Department strategy RING_ALL · ROUND_ROBIN
Department ifNobodyOnline WAIT · EXIT_NO_ANSWER
Number ringMode BROWSER · MOBILE · BROWSER_AND_MOBILE
Desk signal type ring · ring_cancel · connecting
ring_cancel.reason answered_elsewhere · caller_left · timeout · declined · not_joined

Numbers, accounts, flows, media

Field Values
Number status POOL (owner's, not given out) · ALLOCATED (the client app's, free) · ASSIGNED (on an account)
Number type REGULAR · TOLL_FREE
Account status ACTIVE · SUSPENDED
Account recording.mode OFF · LIVE_PARTS
Flow direction INCOMING (start key call) · OUTGOING (start key out)
Media kind UPLOAD · RECORDING · SYSTEM
Media status PENDING · PROCESSING · READY · FAILED
Knowledge document status READY · REMOVED
Transcript status READY · FAILED
Transcript sentiment positive · neutral · negative
Client app features INBOUND · CALLOUTS · OTP · AI · NUMBERS
App action param type text · phone · money · number · choice
Languages sw · en
TTS voices (messages) marin · coral · shimmer · sage · cedar · ash · echo · ballad · verse; speed 0.7–1.5

Timeline events

What GET /v1/calls/{callId}/timeline can contain (type), by area. data holds the details.

Area Events
Start and end CALL_RECEIVED (incoming) · DIALING · RINGING · ANSWERED · NOT_ANSWERED (with sipStatus, reason) · DIAL_FAILED · LIMIT (refused: kind) · SCRIPT_END · CALLER_LEFT · ENDED (result, endReason, endedBy)
Flow BLOCK_ENTER (type) · SAY (text, voice) · PLAY (audio) · OUTCOME (tag) · CONDITION (test, result) · VARIABLE_MISSING · LANGUAGE · TRANSFER_OUT / TRANSFER_IN (to another flow) · EXIT_UNCONNECTED (the call ended at an unwired exit) · ERROR (code, e.g. ACTION_UNKNOWN, AI_FEATURE_OFF, DEPARTMENT_MISSING)
Caller input KEY · INPUT (Collect: value, valid, by) · SPEECH (text) · MATCH (menu speech → option) · NO_INPUT · NOT_UNDERSTOOD · RETRY (attempt) · LATER ("call me later" words) · POLL · PICK · PICK_MORE · PICK_EMPTY · ANSWER_FROM_MENU · OPTED_OUT
Schedule call SCHEDULE_HEARD (said, at) · SCHEDULE_CHANGED · SCHEDULE_REFUSED (reason) · CALL_SCHEDULED (at, script, said)
Waiting room WAIT_START (reason) · WAIT_UPDATE · WAIT_OPTION (key, exit) · WAIT_END (seconds, gaveUp)
Agents NOBODY_ONLINE · QUEUED (department) · RING (agents) · RING_TIMEOUT · RING_DECLINED · ACCEPTED (agent) · CONNECTING · AGENT_JOINED · LIVE_START · AGENT_LEFT · AGENT_NO_SHOW · HOLD · UNHOLD · TRANSFER (from, to) · AGENT_HANGUP
Recording RECORDING_NOTICE · RECORDING_STARTED · VOICEMAIL (recorded) · RECORDING_READY (kind, seconds) · RECORDING_FAILED · TRANSCRIPT_READY (language, sentiment)
Integrations REQUEST · REQUEST_SENT · REQUEST_QUEUED · REQUEST_CALLBACK · REPLY_NOT_JSON · ACTION_REQUESTED (name, actionId) · ACTION_RESULT (name, outcome, late)
AI Agent AI_VOICE_DISCLOSURE · AI_AGENT_START · AI_STAGE · AI_HEARD · AI_SAID · AI_TOOL · AI_KNOWLEDGE · AI_FIELD · AI_HANDOVER · AI_FAREWELL · AI_EXIT · AI_ERROR · AI_ENDED · AI_USAGE
OTP OTP_SENT (the code masked: ••••) · OTP_READ
Voice worker WORKER_JOINED · WORKER_LEFT · WORKER_ERROR · WORKER_USAGE

New event types may be added; ignore types you don't know.


Error codes

The code field of an error response.

General

HTTP code When
400 BAD_REQUEST Invalid JSON; a missing or wrong query parameter; a value not allowed (message says which)
401 UNAUTHORIZED Missing or invalid API key
403 CLIENT_SUSPENDED The client app is suspended by the owner
403 FEATURE_OFF The client app doesn't have the feature: CALLOUTS (call-outs, quick calls), AI (flows using AI), OTP, NUMBERS
403 CAN_CALL_REFUSED The client app's can-call check refused an agent call
404 NOT_FOUND No such object, or it belongs to another client app
422 VALIDATION_FAILED Field errors (data: {"field": "message"}), a script's error list, or a list of problems
429 RATE_LIMITED Over the app's requests per second, or too many OTPs to one number
500 INTERNAL_ERROR An engine bug

By area (409 unless noted)

code Endpoint Means
ACCOUNT_EXISTS create account externalRef already used
ACCOUNT_NOT_ACTIVE transfer number The target account is suspended
NUMBER_ALREADY_YOURS add number Already in the client app's numbers
NUMBER_TAKEN add number Another client app has it
NUMBER_ASSIGNED assign / remove number On another account (release it first) / still on an account
NUMBER_NOT_ASSIGNED transfer number Not on an account: assign it instead
SAME_ACCOUNT transfer number Already on that account
NUMBER_BUSY release / remove / transfer A call is in progress on it
NUMBER_IN_CALLOUT release / remove / transfer An open call-out calls from it
DIRECTION_FIXED create flow A flow keeps its direction
VERSION_EXISTS push version Same number, different document
VERSION_NOT_RUNNABLE put flow on number Not approved, or stopped
VERSION_REVOKED approve version, create call-out The version was stopped
SCRIPT_IN_USE delete flow Numbers, call-outs or other flows use it (data lists them)
MEDIA_IN_USE delete audio Live flow versions use it (data.usedBy)
STORAGE_QUOTA upload audio The account's 500 MB of audio is used
LIST_LOCKED add people The call-out has started
ALREADY_STARTED start call-out Not a draft any more
NO_RECIPIENTS start call-out Nobody to call
NOT_RUNNING pause call-out Only running or scheduled ones
NOT_PAUSED resume call-out Only paused ones
ALREADY_RUNNING cancel call-out Running call-outs are stopped, not cancelled
DEPARTMENT_IN_USE delete department Live flow versions connect to it (data.usedBy)
DEPARTMENT_BUSY delete department Callers are waiting in it
AGENT_BUSY set status, agent call The agent is on a call
NOT_RINGING accept, decline The call is not ringing for this agent any more
ALREADY_TAKEN accept Another agent answered
NOT_YOUR_CALL hold, unhold, transfer, hang up The call is not with this agent
ACTION_IN_USE register actions Removing or narrowing an action a flow or call-out uses
ACTION_ALREADY_RESOLVED action result A different answer was already given
ACTION_TIMED_OUT action result Too late: the call took the timeout exit

Script check codes

errors[].code / warnings[].code from checking or pushing a flow version. Errors stop the version from being stored; warnings don't. What each code means and how to fix it: Part 5 §5.9.

Area Codes
Structure DIRECTION_MISSING · DIRECTION_MISMATCH · START_MISSING · START_UNKNOWN · TOO_MANY_BLOCKS · UNKNOWN_BLOCK_TYPE
Exits EXIT_TARGET_MISSING (points to no block) · ⚠ EXIT_UNCONNECTED (call ends there) · ⚠ EXIT_UNKNOWN (not an exit of that block) · GOTO_TARGET · RETRIES
Messages MESSAGE_MISSING · MESSAGE_SOURCE · MESSAGE_TEXT · MESSAGE_TOO_LONG · MEDIA · MEDIA_MISSING · UNKNOWN_VARIABLE · VARS_IN_INCOMING
Ask blocks MENU_KEY · MENU_KEYS · MENU_KEY_LANG · MENU_OPTION · ⚠ OPTION_WITHOUT_WORDS · DIGITS · PATTERN · SAVE_AS · POLL_ANSWERS · PICK_SOURCE · PICK_PAGE · ASK_LENGTH · VOICEMAIL_LENGTH
Connect, waiting room DEPARTMENT · WAIT_GIVE_UP · WAIT_OPTION · ⚠ WAIT_OPTIONS_UNANNOUNCED
Send request REQUEST_URL · REQUEST_HTTPS · REQUEST_METHOD · REQUEST_BODY · REQUEST_AUTH · REQUEST_MODE · REQUEST_TIMEOUT · CALLBACK_URL
App action ACTION (unknown action or a parameter missing)
Logic CONDITION_TEST · TRANSFER_TARGET · RETURN_EXIT · RETURN_OUTSIDE_SHARED
Schedule call SCHEDULE_TARGET (no runnable Outgoing flow by that ref and version) · SCHEDULE_TIME (exactly one of after, at, ask) · SCHEDULE_TRIES
AI Agent AGENT_START · AGENT_MOVE · AGENT_TOOL · AGENT_FIELD · AGENT_KB · AI_LANGUAGE
Features FEATURE_OFF (only from POST /v1/scripts/validate: the block uses AI and the client app has no AI feature)

⚠ = warning.


Limits and defaults

What Value
Requests per second per client app, set by the owner (429 above it)
Blocks per flow 60 · menu keys 10 · retries 3 · text 500 characters
Account limits defaults maxCallMinutes 15 · maxWaitSeconds 300 · callerCallsPer10Min 5 · otpPerDestinationPer10Min 3 · voicemailMaxSeconds 120 · maxBlockVisits 25
Account defaults language sw · zone Africa/Dar_es_Salaam · hours Mon–Fri 08:00–17:00, Sat 09:00–13:00 · quiet hours 21:00–07:00 · recording LIVE_PARTS + notice · retentionDays 90 (1–3650)
Quick call 1–1000 people · maxTries 1–3 (default 1) · retryGapSec 300–86400 (default 300)
Call-out maxTries 1–5 (default 1) · retryGapSec ≥ 300 (default 3600) · pacePerMin 1–600 (default 60) · ≤ 10,000 people per add
Scheduled callback 5 min to 30 days ahead · quiet hours move it forward · ≤ 3 pending per caller · a new one replaces the old for the same flow · needs CALLOUTS
Department ring time 10–60 s (20) · wrap-up 0–300 s (0) · missed rings before Away 0–20 (5; 0 = never)
Agent presence grace 30 s · join after accept 15 s · lobby / call tokens 10 min
App actions ≤ 50 · timeoutSec 10–1800 (default 120)
Audio upload ≤ 10 MB · ≤ 5 minutes · 500 MB per account
Knowledge document .txt .md .pdf · ≤ 10 MB · text cut at 200,000 characters
OTP code 4–10 digits
Stats / exports ≤ 400 days per request · default last 7 days · CSV ≤ 100,000 rows
Webhook retries 1 min, 5 min, 30 min, 2 h, 6 h, 12 h … until 24 h
Can-call check connect 0.7 s, answer 1.5 s
Pages calls: size default 50 · recipients: default 100, max 500
Numbers that can be called Tanzanian (+255) only

Glossary

Term Meaning
Account One business of a client app
Agent A person who answers calls (browser or mobile)
App action Something only the client app can do (SMS, payment), asked for by a flow
Block One step of a flow: say, menu, collect, connect, AI agent…
Call-out Calls placed by the engine to a list of people
Can-call check The engine asking the client app "may this call happen?"
Client app A product built on the engine, with its own API key
Department A group of agents a flow connects callers to
Exit A named way out of a block (next, noInput, an option id); wired to the next block in x
Flow / script What a call does, as blocks; stored in versions
Lobby The agent's LiveKit room for ring signals
Opt-out A number the account must never call
Outcome tag A label a flow puts on a call (paid, callback_scheduled) for reports
Quiet hours Times when no call-outs are made
Recipient One person on a call-out
Runnable A flow version that may run (approved)
Version A frozen copy of a flow; numbers and call-outs point at one
Waiting room Music, updates and key options while a caller waits (for an agent, a reply, a payment)
Wrap-up Quiet time after a call before an agent is rung again