zoxaAI
Homepage

Key Concepts

The core building blocks of zoxaAI -- agents, calls, runs, campaigns, tools, knowledge bases, and providers -- explained with examples, tables, and practical context.

In this guide

This page explains every major concept in zoxaAI. Read it end to end to build a solid mental model of the platform, or jump to a specific section when you need a reference.

Understanding these concepts will make everything else in the platform click into place. Each section below covers what the concept is, when you use it, and how it connects to the rest of the system.


Agents

An agent is a voice AI persona. It defines how the AI presents itself during a call -- what it says, how it reasons, what voice it speaks in, and what actions it can take. Every call in zoxaAI is powered by an agent.

Core settings

Every agent has three required settings:

SettingWhat it controlsExample
System promptThe instructions that tell the language model how to behave -- role, personality, knowledge, boundaries, response style."You are a support agent for Acme Inc. Help callers reset their passwords..."
VoiceThe TTS voice the caller hears. Each voice belongs to a TTS provider.ElevenLabs Rachel, Cartesia Sophia, Inworld Ashley
Language modelThe AI model that generates responses during the conversation.GPT-5.4-mini, Claude Sonnet 4.6, Gemini 2.5 Flash

Beyond these three, agents have extensive configuration across five editor tabs (Agent, Engine, Tools, Call, Analytics) covering welcome messages, interruption behavior, silence detection, speech speed, temperature, tool attachments, call duration limits, and more. See the full Agent configuration reference.


Calls

A call is the real-time audio connection between a person and your agent. zoxaAI supports three call types, each suited to a different scenario.

TypeTransportHow it startsLatencyPhone number requiredTypical use case
Web CallWebRTC (browser)User clicks "Web Call" in the dashboardLowest (no telephony hop)NoTesting, in-app voice support
Phone CallTelephony (Twilio, Vonage, etc.)Inbound: caller dials your connected phone number. Outbound: you trigger via the dashboard or API.Low (telephony adds ~200ms)YesProduction support lines, outbound sales, appointment reminders
Campaign CallTelephonyzoxaAI dials automatically as part of a batch campaignLowYesOutbound campaigns: surveys, reminders, sales cadences

All three call types produce the same run record when they end, so your analytics, transcripts, and recordings are consistent regardless of how the call was initiated.

How to start a call

MethodCall typeDetails
Dashboard Web Call buttonWeb CallClick "Web Call" on any agent page. Uses your browser microphone.
Inbound phone numberPhone CallA caller dials your connected number. The agent answers automatically.
Dashboard outbound callPhone CallEnter a phone number in the dashboard and click "Call".
API POST /callPhone CallTrigger an outbound call programmatically with type: "outbound".
CampaignCampaign CallUpload a CSV of contacts and start the campaign. zoxaAI dials each contact.

Web calls are free of telephony charges

Web calls use WebRTC directly from the browser, so there are no telephony provider charges -- you only pay for STT, LLM, and TTS usage. This makes web calls ideal for testing and for use cases where your users are already on your website or app.


Runs

A run is the complete record of a single call. Every call -- regardless of type -- creates a run when it ends. Runs are the primary unit of data in zoxaAI: they contain everything you need to evaluate agent performance, debug issues, and extract business value.

Run record fields

FieldTypeDescription
Call IDstringUnique identifier for the run.
AgentstringWhich agent handled the call.
TransportstringHow the call connected: webrtc, outbound, or inbound.
StatusstringHow the call ended (see status table below).
TranscriptarrayFull text of the conversation, speaker-labeled (AI and Human), with timestamps per turn.
RecordingurlAudio file of the complete call. Downloadable from the dashboard or API.
DurationfloatLength of the call in seconds.
CostfloatTotal cost of the run in USD.
Cost breakdownobjectItemized cost by component: LLM tokens, TTS characters, STT minutes, telephony minutes.
Platform numberstringYour phone number (caller ID for outbound, inbound number for inbound). Null for web calls.
Customer numberstringThe other party's phone number. Null for web calls.
Telephony providerstringWhich provider handled the call (twilio, vonage, etc.). Null for web calls.
TagsarrayLabels like outbound, inbound, campaign, agent.
CampaignstringThe campaign that initiated the call, if applicable.
Ended reasonstringSpecific reason the call ended (e.g., completed, hung_up, error, max_duration).
Started atdatetimeWhen the call started.
Ended atdatetimeWhen the call ended.

Run statuses

StatusMeaningWhat happened
startedIn progressThe call is currently active. This status is temporary.
completedFinished normallyThe conversation reached its natural end. The agent or caller ended the call gracefully.
failedErrorAn error occurred that ended the call unexpectedly -- pipeline failure, provider timeout, etc.
busyBusy signalThe number dialed returned a busy signal. Only applies to outbound phone/campaign calls.
no_answerNot picked upThe call was not answered within the timeout window. Only applies to outbound phone/campaign calls.

Where to find runs

  • Agent Runs tab: Shows runs for a specific agent.
  • Calls page (sidebar): Shows all runs across all agents. Supports filtering by status, transport, date range, and tags. See Call History.
  • API: Query runs programmatically via the API.

Campaigns

A campaign is a batch of outbound calls made to a list of contacts. Instead of triggering calls one by one, you upload a CSV of phone numbers, assign an agent, and zoxaAI works through the list automatically.

Campaign lifecycle

Create the campaign

Go to Campaigns in the sidebar and click Create New Campaign. Set a name, select the target agent, and upload a CSV file.

The CSV must have a phone_number column (E.164 format recommended). Any additional columns become context variables available during the call:

phone_number,first_name,account_id,appointment_date
+14155552671,Sarah,ACC-1234,2026-06-15
+14155552672,James,ACC-5678,2026-06-16

In this example, first_name, account_id, and appointment_date are injected into the agent's context so it can personalize the conversation (e.g., "Hi Sarah, I'm calling about your appointment on June 15th").

Configure settings

Optionally set advanced parameters:

SettingWhat it controlsDefault
Telephony configurationWhich provider account + phone-number pool the campaign dials fromOrg default
ConcurrencyHow many calls run in parallelPlatform default
RetriesHow many times to reattempt busy or no_answer callsConfigurable
Retry delayWait time between retry attemptsConfigurable
ScheduleStart time and calling hours windowImmediate
Circuit breakerAuto-pause the campaign if failure rate exceeds a thresholdEnabled

The from-number pool is keyed per telephony configuration, so two campaigns running on different configs never share or steal each other's outbound caller IDs.

Start the campaign

Click Start. The campaign moves through these states:

StateDescription
createdConfigured but not started. You can still edit settings.
syncingCSV data is being processed and contacts are being queued.
runningActively dialing contacts.
pausedTemporarily stopped. Can be resumed. Also triggered automatically by circuit breaker.
completedAll contacts have been processed.
failedCritical error occurred.

Monitor and review

Each contact call produces its own run record. You can monitor progress on the campaign detail page and review individual call transcripts and recordings. The detail page also shows a structured event log for the campaign — circuit-breaker trips (with the last 20 failures attached), phone-pool exhaustion retries, and CSV sync issues all show up there.

Circuit breaker protection

If an unusual number of calls fail in a short period (e.g., wrong numbers, provider outages), the circuit breaker automatically pauses the campaign. This prevents runaway errors and wasted spend. The trip event includes the last 20 failed runs so you can see exactly what went wrong — review the failures and resume manually.


Tools

Tools give your agent the ability to take actions during a call, beyond just speaking. When the LLM determines that a tool is needed based on the conversation context and your instructions, it triggers the tool automatically.

ToolWhat it doesExample
HTTP APIMakes an HTTP request (GET, POST, PUT, PATCH, DELETE) to any URL during the call. Values extracted from the conversation are injected into the request as parameters.Check appointment availability, look up account data, submit a form, create a CRM record.
Call TransferTransfers the caller to a phone number -- for example, a human agent, a department extension, or a payment line."Let me transfer you to our billing department."
End CallEnds the call programmatically when a condition is met.End the call after the agent has collected all required information and confirmed with the caller.
Knowledge BaseSearches uploaded documents using RAG and returns relevant content to the LLM."What is your refund policy?" — agent searches the uploaded policy document and answers accurately.

How tools work

  1. You define tools with a name, description, and parameters (for HTTP API tools).
  2. You attach them to an agent.
  3. During the call, the LLM reads the tool name and description to decide when to use it.
  4. When triggered, the platform executes the tool (e.g., sends the HTTP request) and returns the result to the LLM.
  5. The LLM incorporates the result into its next response.

For detailed configuration, see the Tools reference.


Knowledge Base

A knowledge base lets your agent look up information during a call using retrieval-augmented generation (RAG). You upload documents, zoxaAI indexes them, and when a caller asks something the agent does not know from its system prompt alone, the agent searches the knowledge base and uses the retrieved content to answer accurately.

Supported file types

FormatExtensionMax size
PDF.pdf5 MB
Word Document.docx, .doc5 MB
Plain Text.txt5 MB
JSON.json5 MB
Markdown.md5 MB
CSV.csv5 MB

Retrieval modes

When you upload a document, you choose one of two retrieval modes. This cannot be changed after upload.

ModeHow it worksBest for
Full DocumentThe entire document text is provided to the LLM on every retrieval. No chunking or embedding search.Small reference docs: menus, price lists, FAQs, short policy documents, product catalogs.
Chunked SearchThe document is split into chunks, each embedded using text-embedding-3-small. During calls, the agent's query is embedded and compared against chunks using vector similarity. Only the most relevant chunks are returned.Large documents: employee handbooks, technical manuals, legal policies, knowledge articles.

How it works during a call

  1. The caller asks a question the agent cannot answer from its system prompt alone.
  2. The LLM generates a search query based on the conversation context.
  3. zoxaAI searches the knowledge base and retrieves relevant content (full document or matching chunks).
  4. The retrieved content is injected into the LLM context.
  5. The LLM uses the content to generate an accurate, grounded response.

Shared across agents

A single knowledge base can be attached to multiple agents. You can add, remove, or replace documents at any time -- updates take effect on the next call.

For full configuration details, see the Knowledge Base reference.


Providers

zoxaAI provides managed access to a wide range of AI and telephony providers. You do not need to create separate accounts or manage API keys -- everything is included with your zoxaAI account.

Models are a curated catalog — you pick from the models each provider offers below. Every model carries latency, cost, and quality metadata, and off-catalog model ids are rejected at save time.

LLM providers (4)

ProviderExample models
OpenAIGPT-5.4, GPT-5.4-mini, GPT-5.4-nano, GPT-6 Luna, GPT-5.2, GPT-5.1, GPT-4.1, GPT-4.1-mini
Google (Gemini)Gemini 2.5 Flash, Gemini 2.5 Flash-Lite, Gemini 3.5 Flash-Lite, Gemini 3.1 Flash-Lite, Gemini 3 Flash Preview
Anthropic (Claude)Claude Sonnet 4.6, Claude Haiku 4.5
Qwen (Alibaba)qwen-flash, qwen3.6-flash, qwen3.7-plus

TTS providers (6)

ProviderNotable features
ElevenLabsMultilingual, voice cloning, stability/similarity controls
CartesiaSonic 3.6, speed/volume controls, low latency
SmallestLightning v3.1, strong Indian language support
SarvamBulbul v3, Indian language specialist
InworldInworld TTS 2, expressive voices, 22 languages
xAIGrok Voice TTS

STT providers (5)

ProviderNotable features
SonioxReal-time v5, 56+ languages, native code-switching across the agent's languages list
Deepgram FluxFlux general models, server-side end-of-turn detection, keyterm boosting
AssemblyAIUniversal-3.6 Pro Realtime, high accuracy with native code-switching
CartesiaInk-2, server-side turn detection
SarvamSaaras v3, Indian language specialist, code-mix

Telephony providers (8)

ProviderType
TwilioCloud telephony
VonageCloud telephony
TelnyxCloud telephony
PlivoCloud telephony
CloudonixCloud telephony
VoBizCloud telephony
Tata SmartfloCloud telephony (streaming-native)
Asterisk ARISelf-hosted PBX

For detailed provider configuration and model lists, see:


How everything connects

Here is how the core concepts relate to each other in practice:

Agent
  ├── System prompt, voice, LLM model
  ├── Tools (HTTP API, Call Transfer, End Call)
  ├── Knowledge Base (optional, shared across agents)
  │
  ├── Receives a Call (Web, Phone, or Campaign)
  │     └── Runs the STT → LLM → TTS pipeline in real time
  │     └── Uses tools and knowledge base as needed
  │
  └── Produces a Run when the call ends
        ├── Transcript, recording, duration, cost
        └── Accessible via dashboard or API

A Campaign is an orchestration layer on top of calls -- it takes a list of contacts and triggers one call (and therefore one run) per contact, with concurrency, retries, and scheduling handled automatically.


Next steps

On this page