Migration guide
Moving from Vapi to Wakili
Vapi's advertised rate starts around $0.05/min, but that only covers orchestration. Once you add transcription, an LLM, and a voice engine, most teams land closer to $0.12-$0.26/min across three separate provider bills. Wakili keeps the same idea (bring your own STT, LLM, and TTS) but bills it as one flat platform fee on top of whatever your providers actually charge.
Why teams switch
The sticker price isn't the real price
$0.05/min is the orchestration layer only. Transcription, LLM tokens, and voice generation are billed on top, often across three separate vendor accounts.
Four to six providers to reconcile
Budgeting a call means adding up STT, LLM, TTS, and telephony line items from different dashboards every month.
Still locked into one orchestration bill
You already picked your own providers. Wakili just adds one predictable platform fee instead of a black-box orchestration charge.
Cost, side by side
Figures reflect publicly listed rates and typical stacked costs at the time of writing. Confirm current numbers before you commit.
| Vapi | Wakili | |
|---|---|---|
| Base rate | $0.05/min (orchestration only) | $0.06/min (all platform fees) |
| Realistic all-in cost | $0.12-$0.26/min | $0.11-$0.13/min |
| Free tier | Limited trial credits | 30 min/mo, free forever |
| Billing | Platform fee + 3 provider invoices | One invoice, providers itemized |
What maps where
Most Vapi agents map onto Wakili one field at a time. Nothing about your prompt, voice, or model choice has to change.
| Field | Vapi | Wakili |
|---|---|---|
| Assistant / agent | assistant.create() | agents.create() |
| System prompt | assistant.model.messages[0] | systemPrompt |
| Voice | assistant.voice.voiceId | tts |
| Transcriber | assistant.transcriber | stt |
| Server URL | assistant.serverUrl | webhookUrl |
// Same idea as your Vapi agent config
const agent = await wakili.agents.create({
stt: "deepgram:nova-3",
llm: "anthropic:claude-sonnet",
tts: "elevenlabs:rachel",
systemPrompt: "Paste your existing prompt here…",
webhookUrl: "https://api.acme.com/wakili",
});How the switch works
- 0101
Export your config
Pull your agent's system prompt, voice ID, LLM model, and webhook URL.
- 0202
Map fields into Wakili
Same STT, LLM, and TTS choices if you want them. Nothing forces a swap.
- 0303
Run both in parallel
Point a test number at Wakili and compare transcripts side by side.
- 0404
Cut over your number
Swap the webhook, retire the old plan. Most teams do this in an afternoon.
Ready when you are
Bring your Vapi agent over
Keep your prompt, your voice, your model. Just change where the bill comes from.