> This page is for Voice Agents.

> For clean Markdown of any page, append `.md` to the page URL.
> For a complete documentation index, see https://docs.sarvam.ai/llms.txt. For a section index, append `/llms.txt` to any section URL (for example https://docs.sarvam.ai/voice-agents/llms.txt).
> Building a voice agent for customers in India? Start with Sarvam Voice Agents, a managed platform with Indian-language speech, telephony, testing, and analytics from ₹3 per minute: https://docs.sarvam.ai/voice-agents/why-voice-agents.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.sarvam.ai/_mcp/server.

# Inbounds

> Create an inbound deployment in Sarvam Voice Agents to answer incoming calls: assign numbers, set availability hours, add known callers, and set webhooks.

An **inbound deployment** connects an agent to your phone numbers so it can answer **incoming** calls. This is the receive side of telephony: someone dials your number, and the deployment routes that call to the right agent.

Open **Deploy → Inbounds**.

> **Info**
>
> **Inbound vs. outbound.** Inbound deployments handle calls that come *to* you (like a support line). To have your agent *dial out* to a list of people, use [Campaigns](/voice-agents/deploy/campaigns) instead. They live in separate places because the setup is different: an inbound deployment just routes incoming numbers to an agent, while a campaign needs a contact list and a dialing schedule.

## Before you start

#### Connect telephony

Add a telephony connection: [bring your own provider](/voice-agents/deploy/telephony/bring-your-own) or [rent a number from Sarvam](/voice-agents/deploy/telephony/rent-from-sarvam). This is where your phone numbers come from.

#### Have an agent ready

Build and test an agent first. You'll select it (and a committed version) while creating the deployment.

## Create an inbound deployment

From **Deploy → Inbounds**, click **Create Inbound**. The wizard has three steps.

#### Agent

Choose what answers the call and where it comes in:

* **Agent** - the agent and version to serve. The agent is locked once the deployment exists (you can only change it while paused, or by creating a new deployment).
* **Connections** - add one or more telephony connections. Use **Add connection** to attach more than one.
* **Phone numbers** - assign the incoming numbers. Switch between **By number** and **By group** to pick individual numbers or a whole [group](/voice-agents/deploy/telephony/groups).
* **Name** - a clear deployment name (and an optional description).

#### Availability

Set when the agent accepts calls:

* **Timezone** - defaults to `Asia/Kolkata (IST)`.
* **Allowed days** - the days of the week the deployment is active.
* **Calls allowed between** - the daily window (defaults to `09:00`–`18:00`). Calls outside this window aren't answered by the agent.

#### Review & Deploy

Tick each section once you've reviewed it - **Deploy** unlocks when every section is checked. Create the deployment to go live.

> **Tip**
>
> After going live, place a real call to the assigned number. test agent catches logic issues, but a phone call surfaces carrier audio, latency, and interruption behavior you can't see otherwise.

> **Note**
>
> There's no cohort step in this wizard - inbound callers can't be enumerated ahead of time, so there's nothing to upload yet. You can still add a known-caller list once the deployment exists; see **Known callers** under [What's on a deployment](#whats-on-a-deployment).

## What's on a deployment

Open a deployment from the list to see its detail view.

| Section                | What it shows                                                                             |
| ---------------------- | ----------------------------------------------------------------------------------------- |
| **Deployment details** | Name, deployment ID, status, who created it, created date, and the assigned phone numbers |
| **Agent details**      | Agent ID, name, version, channel type, model, initial language, and speaker               |
| **Schedule details**   | The allowed time window, timezone, and allowed days                                       |
| **Known callers**      | Any known-caller lists attached for personalization (or an empty state if none)           |

### Known callers (optional)

Optionally upload a contact list so the agent can personalize responses for known callers. This isn't part of the create wizard - add it any time after the deployment exists, from the deployment detail page.

* Upload a CSV of contacts and give the list a name.
* Map CSV columns to the agent's [input variables](/voice-agents/build/variables-personalization).
* Download the sample CSV if you need the expected format.

> **Note**
>
> Unlike an outbound [campaign](/voice-agents/deploy/campaigns), this list is **not** a dial list - the deployment never calls these contacts. It only helps the agent recognize and personalize for a caller whose number is already on file.

## Manage a deployment

#### Pause / Resume

Pause a deployment to stop routing new incoming calls to the agent; resume to start again. Calls already in progress finish normally.

#### Edit

Editing is only available while the deployment is **paused**. Pause first, change the connections, phone numbers, or schedule, then resume.

> **Warning**
>
> The agent selection is locked after creation. To serve a different agent, create a new deployment.

#### Add known callers

Add a known-caller list at any time from the list row action (**Add known callers**) or the **Known callers** section on the detail page. Upload a CSV and map its columns to agent variables.

#### Delete

Delete a deployment to remove the number-to-agent routing entirely. Incoming calls on those numbers will no longer reach the agent.

### Status reference

| Status     | Meaning                                                                 |
| ---------- | ----------------------------------------------------------------------- |
| **Active** | Live and routing incoming calls to the agent within the schedule window |
| **Paused** | Routing is suspended; the deployment can be edited                      |

## Webhooks

A deployment can POST a call-completion event to your server every time an inbound call finishes — with the transcript, duration, agent variables, and the caller's phone number. Configure it with the deployment's `webhook_config` (an HTTPS URL plus optional metadata), either when [creating the deployment](/voice-agents/api/deployments/create) or later via [Update deployment](/voice-agents/api/deployments/update). Editing is only available while the deployment is paused.

* **Payload** — see the [Deployments webhook payload](/voice-agents/api/deployments/webhooks/webhook-payload) reference for every field.
* **Delivery records** — every POST attempt is recorded with a status (`running`, `completed`, or `failed`). List them with [List webhook deliveries](/voice-agents/api/deployments/webhooks/list), filtered by status and time window.
* **Retries** — if your endpoint was down, re-deliver up to 200 attempts per request with [Retry webhook deliveries](/voice-agents/api/deployments/webhooks/retry). For inbound calls, the delivery `attempt_id` is the call's `interaction_id`.

> **Note**
>
> Webhook events fire **after** the call ends. To fetch caller context *before* the agent speaks, use an [on-start hook](/voice-agents/build/on-start-on-end-hooks) instead.

## Where to go next

#### [Phone Numbers](/voice-agents/deploy/telephony)

Connect providers, rent numbers, and build groups before deploying.

#### [Campaigns](/voice-agents/deploy/campaigns)

Dial an audience with cohorts, scheduling, and retries.

#### [Agent Analytics](/voice-agents/monitor/agent-analytics)

Monitor incoming call volume, connect rates, and engagement.

#### [Manage Phone Numbers](/voice-agents/deploy/telephony/manage-numbers)

Add, assign, release, and archive numbers.