Core concepts
You only need five ideas to build a useful agent: an agent that talks, its voice, knowledge, and tools, plus a channel that lets someone reach it. The other objects on this page support operating that agent at scale: workspace, contacts, campaigns, conversations, and integrations.
Read the first five sections before building. Come back to phone numbers, contacts, and campaigns when you are ready to deploy or make outbound calls.
Unfamiliar with a term anywhere in these guides? See the glossary.
Workspace
The top-level container. Agents, phone numbers, campaigns, contacts and integrations all belong to exactly one workspace.
A user can belong to more than one — agencies managing several clients, or a company separating production from testing. Nothing is shared between workspaces. A contact added to one is invisible to another, and an agent can only use a phone number from its own workspace.
Every API call resolves to exactly one workspace:
- In the dashboard, it's whichever workspace is currently selected.
- Over the public API, it's fixed when the credential is created — see Authentication.
Full detail: Workspaces.
Agent
The thing that actually talks. An agent bundles everything that determines how a conversation goes: a system prompt, a first message, a voice, an LLM, a knowledge base, and a set of tools.
Internally an agent is a
VoiceWidget, and you'll seewidget_idin API payloads and the embed snippet. Same object.
An agent is either Live or Paused. New agents are created Live. Pausing one stops it answering or placing calls without deleting any of its configuration.
Each agent also gets, automatically:
- A
widget_id— a 12-character id used by the browser widget embed. - An extension — a short dialable number so the agent can be reached directly over a SIP trunk.
Anatomy of an agent breaks down every part.
Voice
How the agent sounds: a specific voice from a specific TTS provider, plus speed, pitch, volume and optionally an emotion, and the language it speaks.
Voices are browsable under Voices in the dashboard, with samples you can play before choosing. Provider choice affects more than timbre — it changes latency and cost too. See Choosing a voice.
Knowledge base
Documents the agent can search during a call. You upload files; they're chunked, embedded and indexed.
The important part: knowledge is not loaded into the prompt. The agent searches it on demand, as a tool call, when the conversation needs it. That's what keeps the prompt small and the agent fast. See Knowledge base.
Tools
Actions the agent can take mid-call, beyond speaking. Two kinds:
- Built-in — end the call, transfer it, look up a contact, search the knowledge base, schedule a follow-up, blacklist a number.
- Integration-backed — anything reachable through a connected integration: create a Salesforce record, book a Google Calendar slot, post to Slack, append a row to Sheets.
Tools are assigned per agent. An agent only ever sees the tools you've given it. See Tools.
Channel: phone number or web widget
A provisioned number, from Twilio or Telnyx, that routes inbound calls to an agent or acts as the caller ID on outbound calls.
You don't need one to get started — the dashboard Test tab lets you talk to the agent before you deploy it. When you are ready for callers, choose one of these channels:
- A phone number for inbound calls and outbound caller ID.
- The web widget for a call button on your website.
- A campaign for scheduled outbound calls to contacts.
See Phone numbers or Outbound campaigns.
Contact
A person the agent can call or has called. When you add an outbound contact through the supported queueing flow, an existing outbound contact with the same phone number in that workspace is updated instead of creating another one. Do not treat that as a universal database uniqueness guarantee: other import or admin paths can still create duplicates.
Every contact carries a consent status — implied, granted, unknown or revoked — and can be blacklisted. Both are checked before any outbound call is placed. A blocked contact is never dialed, and the API rejects the attempt rather than silently skipping it.
Campaign
A scheduled batch-calling job: a queue of contacts, an agent to call them, and rules about when dialing is allowed (timezone, date range, time of day, weekdays, excluded dates).
Three rules worth knowing up front:
- Only
activecampaigns are ever dialed.draftholds contacts without calling anyone;pausedstops an in-flight campaign. - Concurrency is clamped, not rejected. Ask for more simultaneous calls than your plan allows and it's quietly reduced to your limit. The applied value comes back in the response.
- Leaving the schedule empty means no restriction — the campaign may dial at any hour, any day.
See Outbound campaigns.
Conversation
The record of a call that happened: transcript turn by turn, which tools were called, how long each turn took, the recording if enabled, and how the call ended.
This is where you go to find out why an agent did something. Browse them under Conversations.
Integration
A connection to a system you already use — Slack, Salesforce, HubSpot, Google Calendar, Google Sheets, Twilio, Telnyx, Make.com. Connected once per workspace, then available to any agent in it.
Integrations serve two directions: they give agents tools to act with, and they let outside systems trigger calls. See Integrations.
How a call gets made
Putting it together — the three ways a conversation starts:
| Trigger | Path |
|---|---|
| Someone visits your site | Browser widget → agent |
| Someone dials your number | Phone number → agent |
| You're calling them | Campaign → contact → agent + phone number |
All three end in the same place: an agent running the pipeline from How a voice agent works, and a conversation record afterwards.
Next
- Anatomy of an agent — the parts of an agent in detail
- The dashboard, page by page — where each of these lives
- What happens during a call — the runtime view
- Quickstart — build one