Core concepts
Flows, agents, call jobs, applications, data stores and phone numbers — what each object is and which one you actually want.
Six objects account for most of the platform. Learning what each one owns saves a lot of guessing later, because the API names them exactly as the dashboard does.
Flow
The logic. A flow holds the instructions the model runs on, the conversation graph, the tools it may call, and the variables it collects.
Flows are identified by apiId — a stable, human-readable string such as
f_sales_voice. Use it rather than the numeric id: the apiId survives
environments, the numeric id does not.
A flow can also be passed inline on a request instead of referenced. That runs a one-off conversation without saving anything to the flow library, which is the right shape for a definition your own system generates per call.
Agent
The personification of a flow: voice, language, knowledge base, and the settings that decide how the logic sounds.
One flow can back many agents. Keeping them separate is what lets the same conversation ship in two languages without maintaining two copies of the logic.
Call job
A batch of calls sharing one flow. Rows come from an uploaded CSV or from JSON pushed over the API, and each row carries its own data into its own conversation.
A job tracks its rows individually, so a single failed number does not stall the batch, and each finished row keeps its transcript, recording and extracted fields.
Note
A single call placed through POST /outbound/calls is not a job — it is one
session, queued directly. Reach for a job when you have a list.
Application and data store
An application is a workspace-level container. Inside it, data stores hold your own records — contacts, bookings, inventory, whatever the conversation needs to read or write.
Stores are schema'd and indexed, so an agent can look a caller up mid-conversation rather than being handed everything in advance. They are writable from the API too, including bulk upsert and patch-by-filter, which is how most people keep a store in step with a system of record.
Phone number
A provisioned number, inbound or outbound. Numbers carry their own concurrency setting — the number of simultaneous calls allowed — which is what stops an outbound campaign from consuming the capacity your inbound line needs.
Concurrency has a real ceiling
Each number has both a default concurrency and a platform maximum. The maximum is enforced, so a value above it is rejected rather than quietly accepted.
Automation
Logic that runs around a conversation rather than inside it: before a call, during one, or after it finishes. Automations call your HTTP endpoints, write to data stores, and chain into further steps.
This is the seam to the rest of your stack. A flow decides what to say; an automation decides what happens to the result.
How they compose
A typical outbound setup is one flow, one agent per language, one phone number to call from, one data store holding the contact list, one call job to work through it, and one automation to post each result back to your CRM.
Nothing forces that shape — a single POST /outbound/calls with an inline flow skips
almost all of it — but it is the arrangement most production workspaces converge on.