> ## Documentation Index
> Fetch the complete documentation index at: https://docs.slng.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Voice agents on SLNG

> Voice Agents pair an LLM with SLNG's STT and TTS models. Create an agent once, then dispatch it to phone calls or web sessions, with tools, webhooks, and template variables.

Voice Agents are server-managed configurations that pair an LLM with SLNG's STT and TTS models. You create an agent once, then dispatch it to phone calls or web sessions. Agents support tools, built-in utilities like current date/time lookup, webhooks, human transfer, and dynamic prompts via template variables.

<Note>
  The Voice Agents API is served from <code>[https://api.agents.slng.ai](https://api.agents.slng.ai)</code>{" "}
  under <code>/v1/agents</code>.
</Note>

## Where to go next

This page is the orientation. The detail lives in four places:

<CardGroup cols={2}>
  <Card title="Build your first agent" icon="code" href="/examples/agents-api">
    Create, update, duplicate, and delete agents in cURL, JavaScript, and Python.
  </Card>

  <Card title="Configuration & Tools" icon="sliders" href="/examples/agents-config">
    System prompts, models, tools, tool personalization, and template variables.
  </Card>

  <Card title="Calls, telephony & web sessions" icon="phone" href="/examples/agents-calls">
    Dispatch outbound calls, run batch campaigns, and test with web sessions.
  </Card>

  <Card title="Agent Infra" icon="paintbrush" href="/dashboard/agent-infra">
    Build and test agents with the visual Dashboard UI.
  </Card>
</CardGroup>

## Dashboard or API

You can build agents either way, and the two stay in sync. Start in [Agent Infra](/dashboard/agent-infra) for a UI (and to set up [Telephony](/dashboard/telephony)), or manage everything through the API. Everything in the Dashboard maps to public API endpoints.

<Tip>
  If you already have an agent configured the way you want, you can duplicate it
  from the API or from Agent Infra. Duplication preserves the stored configuration,
  but it does not copy call history or the inbound connection. After duplicating,
  reconnect inbound routing if needed, verify the outbound trunk, and test the copy
  with a web session or test call.
</Tip>

## Agent regions

Voice Agents use logical region values that correspond to the Agent Settings region menu. The selected region controls where the agent session runs and how the agent routes its model requests. For model requests, routing is constrained to the selected compliance area, and the exact deployment can vary based on model availability inside that area.

| Agent Settings label | API `region` value | LiveKit runtime location | Routing override applied to model requests |
| -------------------- | ------------------ | ------------------------ | ------------------------------------------ |
| Europe               | `eu-central`       | Frankfurt, Germany       | `X-World-Part-Override: eu`                |
| United States        | `us-east`          | Ashburn, Virginia, USA   | `X-World-Part-Override: na`                |
| Asia                 | `ap-south`         | Mumbai, India            | `X-Region-Override: ap-south-1`            |

`region` is required when you create an agent. It differs from the platform-level [region overrides](/region-override): the agent region `ap-south`, for example, routes to the platform region `ap-south-1`, but you set it through a different field.

## Example agent patterns

Common production-style tool combinations (configured in [Configuration & Tools](/examples/agents-config#tools)):

* **Scheduling assistant**: `current_datetime` + `hangup` + idle nudges. The agent needs accurate local time before offering appointment slots.
* **Support router**: contextual webhook lookup + `human_transfer`. Resolves routine cases, escalates exceptions.
* **Collections follow-up**: `voicemail_detection` + system webhook on `call_end`. Every completed call posts a summary to your CRM.
* **Restaurant host**: `current_datetime` + availability webhook. Reservation and booking lookups that depend on real-time availability.
* **After-hours clinic router**: system-injected `current_datetime` on `call_start` + `human_transfer` + `hangup`. Business-hour logic is available to the model before the first turn.

## Calls and sessions

| Endpoint                                    | Purpose                                                               |
| ------------------------------------------- | --------------------------------------------------------------------- |
| `POST /v1/agents/{agent_id}/calls`          | Dispatch an outbound call (requires telephony)                        |
| `POST /v1/agents/{agent_id}/web-sessions`   | Create a web (non-telephony) session                                  |
| `POST /v1/agents/{agent_id}/duplicate`      | Server-side copy (inbound connection and call history are not copied) |
| `GET /v1/agents/{agent_id}/calls`           | List calls (paginated)                                                |
| `GET /v1/agents/{agent_id}/calls/{call_id}` | Fetch a call record                                                   |

For code, see [dispatching calls](/examples/agents-calls) and the [agent lifecycle examples](/examples/agents-api). For a friendly transcript view, use the Dashboard [calls page](/dashboard/agent-infra#calls).

### Tool execution tracking

Record webhook, template, human-transfer, and built-in tool activity against a call by posting to the [tool executions endpoint](/api-reference/calls/submit-tool-execution). Each record carries the outcome, duration, and HTTP status, and surfaces on the [call detail response](/api-reference/calls/get-call) for debugging or analytics.

## API reference

See the **Voice Agents API** group in the [API Reference](/api-reference) for the complete OpenAPI spec.
