Vapi guide
End-to-end setup for connecting a Vapi agent to a TryVox phone number — inbound and outbound.
Vapi guide
Step-by-step setup for the most common pairing: Vapi for the AI agent, TryVox for the phone number and PSTN. This guide produces a working inbound and outbound flow in under 10 minutes.
Prerequisites
- A TryVox account with at least one Active phone number (Numbers).
- A Vapi account with at least one published assistant.
- Your Vapi Private API key (dashboard.vapi.ai → Settings → API Keys).
1. Connect Vapi to TryVox
- TryVox dashboard → AI Agents → Connect provider.
- Provider: Vapi.
- Display name: anything memorable (e.g.
Production support agent). - API key: paste your Vapi Private key.
- Connect.
You should see the integration appear with a green Active badge. If you see Key invalid, the key was rejected — double-check you copied the Private key, not the Public one.
2. Connect a number for inbound
- Open the Vapi integration you just created.
- Click Connect number.
- Pick a TryVox number you want to use for the agent.
- Pick your Vapi assistant (we fetch the live list — no IDs to copy).
- Connect.
That's it. Place a test call to the TryVox number — your Vapi agent should answer within a couple of seconds.
What we configure under the hood
| What | Value |
|---|---|
| Routing destination | sip:<your-assistant-id>@sip.vapi.ai |
| SIP headers | X-TryVox-Direction, X-TryVox-Route: ai-agent, X-TryVox-AI-Provider: vapi, X-TryVox-From, X-TryVox-To |
| Media bridging | rtpengine ↔ Vapi SIP edge (direct, no FreeSWITCH leg) |
You don't need to touch anything in Vapi's "Phone Numbers" tab — TryVox handles all inbound delivery.
3. Outbound — 🚧 in progress
When you bound the number in step 2, TryVox called Vapi's API to register a SIP trunk + import the DID on your Vapi side and set the assistant + server URL on it. The Vapi-side resource is in place, but the egress path from your assistant through TryVox to the PSTN is being polished and is not GA in v1. Don't rely on agent-originated outbound for production yet; if you need it, coordinate with support.
You'll see the auto-provisioned entry under Phone Numbers in your Vapi dashboard (named TryVox <E.164>). Don't delete it manually from Vapi — disconnect the number from TryVox instead and we'll clean up the Vapi side for you.
4. Call events — automatic
Vapi posts call lifecycle events (status updates, end-of-call reports) to TryVox automatically. The server URL is set on the phone-number resource at provisioning time using a per-integration secret embedded in the URL. No paste step.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Key invalid badge | Public key instead of Private | Use the Private key from Vapi Settings. The Public key cannot hit the API surface we need. |
| Call rings forever, no answer | The assistant ID was disabled in Vapi after binding | Re-create the binding with a current assistant. |
| Connect button fails: "vapi credential" | TryVox couldn't create the BYOC trunk on Vapi (usually because your Vapi org already has too many credentials) | Delete unused TryVox Trunk entries in Vapi → Credentials, then retry. |
| One-way audio | Codec mismatch | Force G.711 µ-law in the Vapi assistant transport settings. |
| Inbound goes to your old TwiML / answer-URL instead | The TryVox number still has a Voice Application bound | Pick "override" in the conflict warning when binding, or delete the application binding first. |
Pricing example
A 5-minute inbound call from a US caller to your TryVox US number routed to Vapi:
- TryVox: US local inbound minute × 5 + DID rental (prorated).
- Vapi: their published per-minute (STT + LLM + TTS) × 5.
No TryVox surcharge for the AI bridging. The two bills are independent.