Skip to content

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.

A workspace contains agents, phone numbers, campaigns, contacts and integrations. An agent owns a voice, a knowledge base and tools. A campaign combines an agent, a phone number and contacts, and produces a conversation record. Integrations supply extra tools.WORKSPACEAgentdoes the talkingVoicehow it soundsKnowledge basewhat it knowsToolswhat it can doPhone numberhow it's reachedCampaignwho to call, whenContacta person to callConversationwhat happenedIntegrationyour other systemssupplies extra tools

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 see widget_id in 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 active campaigns are ever dialed. draft holds contacts without calling anyone; paused stops 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:

TriggerPath
Someone visits your siteBrowser widget → agent
Someone dials your numberPhone number → agent
You're calling themCampaign → 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 ​