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

# Vapi

> Connect a Vapi account with an API key and stream every call into Zelto.

## Connect

1. Open **Settings → Integrations → Vapi** and click **Connect Vapi**.
2. Paste your Vapi API key — find it at
   [dashboard.vapi.ai](https://dashboard.vapi.ai) under **API Keys**. Zelto uses
   it to fetch assistant metadata and recordings.
3. Copy the **webhook URL** the card shows into Vapi so it pushes call events to
   Zelto. If you use [Hookdeck](https://hookdeck.com), an alternative
   Hookdeck-fronted URL is shown too — same destination, with extra delivery
   retries and replay.

You can connect multiple Vapi accounts to one organization. Each account's calls
land in the same place, tagged with the originating [agent](/docs/agents).

## What gets ingested

Vapi sends one **`end-of-call-report`** webhook per finished call. Zelto records
the raw payload first, then builds the [conversation](/docs/conversations) from it:
the turn-by-turn transcript, the recording, the call cost, and the ended reason.
Other Vapi event types are acknowledged and ignored.

Vapi returns a recording URL that stays valid, so Zelto stores it as-is — the
player on the conversation detail page keeps working without re-hosting.

## Verify the first call

Place a test call to your Vapi assistant, then open
[Conversations](/docs/conversations) — the call shows up within a few seconds with its
transcript. If it doesn't, the agent's **Connections** card shows whether calls
are arriving and flags the most recent delivery if it errored. See
[Connect a voice provider](/docs/guides/connect-a-voice-provider#troubleshoot-a-missing-call).

## Manage Vapi from chat

Once your Vapi account is connected, Ask Zelto can read and change
your Vapi account directly through your own Vapi API key:

* **list\_vapi\_assistants** — see every assistant in your account.
* **get\_vapi\_assistant** — fetch one assistant with current first
  message and system prompt.
* **list\_vapi\_calls** — recent calls (optionally for one assistant)
  to inspect how an agent has been performing.
* **list\_vapi\_evals** — the mock-conversation evals on your account.
* **update\_vapi\_assistant** — change `name`, `firstMessage`, or
  `systemPrompt` on an existing assistant.
* **create\_vapi\_assistant** — spin up a new assistant with a name,
  first message, and system prompt.
* **create\_vapi\_eval** — create a mock-conversation eval to score an
  assistant.

Reads run as soon as you ask. Writes (`update_*`, `create_*`) route
through a confirmation card — nothing is sent to Vapi until you click
**Confirm**.

### Control who can use these tools

Each voice integration has a **Chat tool access** setting in its
**Manage** dialog (Settings → Integrations → Vapi → Manage):

* **Everyone** (default) — any member can drive Vapi from chat.
* **Admins & owners** — only owners, admins, and global admins.
* **Disabled** — the Vapi tools disappear from chat for everyone.

Only owners and admins can change this setting. The gate is enforced
both when building the chat toolset and again when a write is
confirmed, so disabling it removes the capability completely.

## Connection status & disconnecting

The card shows the connected account, the connection date, and the webhook URL to
paste into Vapi, so you can tell at a glance that ingestion is wired up. The
**Disconnect** action removes the stored API key and stops ingesting new calls;
historical conversations stay in your organization.

## Related

* [Connect a voice provider](/docs/guides/connect-a-voice-provider) — pick a path and verify ingestion.
* [Conversations](/docs/conversations) — where Vapi calls land.
* [Agents](/docs/agents) — how Zelto models each assistant.
* [MCP](/docs/mcp) — manage assistants and query your data from your editor.
