Give your product a voice
Build voice agents for phone calls and apps, with one API key.
From $5 · Billed per second · Bring your own SIP trunk
gemini-live- Hi, thanks for calling. How can I help?
- Can I come in tomorrow morning?
- There’s a slot at 10:30. Shall I book it?
- Yes, please.
Works with
- ModelsGeminiDeepgramElevenLabs
SarvamOpenRouter - CarriersVonageBandwidthExotel
- ClientsClaude CodeCursor
One agent, on a phone line or in your app
Set up your first agent in four steps
Make the agent and talk to it in your browser. Then pick where it answers.
- 1Describe your agent
- 2Pick a voice
- 3Talk to it in your browser
- 4Put it live
Step 4 is one of three:
A phone number
- 1.Paste your carrier’s API keys
- 2.Pick a number you have, or buy one here
- 3.Call it
Your website or app
- 1.Create an API key
- 2.Your server makes a session
- 3.Your page connects and talks
// in the browser
await RealtimeSession.connect(session);Your coding agent
- 1.Run one command
- 2.Sign in when it asks
- 3.Ask Claude Code, Codex or Cursor for the agent
$ claude mcp add --transport http \
wixzel-voice \
https://mcp.voice.wixzel.com/mcpTalk to an agent now
Pick an engine and start talking. It uses your microphone, lasts a minute, and nothing is recorded.
The demo speaks the languages it has an opening line written for. Your own agents can use every language and voice an engine supports: see the full list.
Google’s native-audio model, in any of two dozen languages. The quickest replies at the lowest price.
Uses your microphone · 60 seconds · nothing is recorded
Your agent can use the apps you already use
Connect an app that hosts an MCP server. The agent calls its tools while the caller is on the line.
33 apps with one-click setup, or any MCP server of your own. Tool calls are free; only the extra model tokens are metered.
Search contacts, companies and deals, for example by phone number.
Ask your coding agent to build it
Connect once. Every endpoint becomes a tool it can use.
claude mcp add --transport http wixzel-voice https://mcp.voice.wixzel.com/mcpSign in when it asks. There is no key to paste.
codex mcp add wixzel-voice --url https://mcp.voice.wixzel.com/mcpThen run codex mcp login wixzel-voice and sign in.
npx -y wixzel-voice-mcpRuns over stdio with a scoped API key from the console.
> Set up a support line on my Twilio trunk, then call me to test it
- ●wixzel-voicecreate_sip_trunk
- ●wixzel-voicecreate_phone_number
- ●wixzel-voicecreate_agent
- ●wixzel-voiceplace_callAllow place_call? › Yes
- ●wixzel-voiceget_call_transcript
- Done. The transcript and what the call cost are above.
Or call the API yourself
REST, plus SDKs for TypeScript and Dart.
import { WixzelVoice } from 'wixzel-voice';
const client = new WixzelVoice({ apiKey: process.env.WIXZEL_API_KEY });
const agent = await client.agents.create({
name: 'Front desk',
system_prompt: 'You book appointments for a clinic.',
opening_message: 'Hi, how can I help?',
voice: { realtime: { model: 'google/gemini-live' } },
});
// Over the SIP trunk and number you connected
const call = await client.calls.create({
to: '+14155551234',
agent_id: agent.id,
});
const { transcript, cost_micros } = await client.calls.retrieve(call.id);// On your server: the API key never reaches the browser
const session = await client.realtime.createSession({
agent_id: agent.id,
allowed_origins: ['https://app.example.com'],
});
// In the browser
import { RealtimeSession } from 'wixzel-voice/realtime';
const talk = await RealtimeSession.connect(session, {
onTranscript: ({ role, text }) => render(role, text),
});What people build

AI receptionist API for appointment booking
Offers your open slots on a call and saves each booking.

Outbound AI calling campaigns
Calls every lead on a list and keeps each transcript.

Inbound support line from your knowledge base
Answers from your knowledge base, and hands off to a person.

Hindi and Indian-language voice AI API
Hindi, Tamil, Telugu, Malayalam and more, on the Sarvam engine.

Voice agents in web and mobile apps (no phone line)
A voice agent in your web or Flutter app.

MCP server that lets Claude make phone calls
Claude Code, Codex or Cursor builds the agent and places calls.
One key, your own carrier, and a bill you can read
classic$0.0867/min
sarvam$0.0623/mingemini-live$0.0491/mindeepgram-agent$0.1851/min
One key, every engine
Switch engines by changing one field. No provider accounts.
Keep your carrier
Use the numbers you have, or buy a new one on your carrier account from here. Your carrier bills you, with no markup.
- stt180 s$0.0323
- llm7.2k tok in$0.0015
- llm1.4k tok out$0.0012
- tts2.7k chars$0.1890
- platform3 min$0.0360
See what each call cost
Billed per second, with every stage itemized.
Questions the docs answer
The short versions. Each one links to the page with the long one.
How do I get started?
Do I need a SIP trunk?
Can I buy a phone number through Wixzel Voice?
POST /v1/phone-numbers/purchase and in the MCP server. Numbers that need regulatory approval, like Indian ones, use the approved documents already on your carrier account. Buying a numberCan I put an agent in my website or mobile app?
POST /v1/realtime/sessions and gets a one-minute, single-use client secret; your page or app opens wss://api.voice.wixzel.com/v1/realtime with it and streams audio. The TypeScript SDK has a drop-in browser client (wixzel-voice/realtime) and the Dart SDK a protocol client for Flutter. Your API key never reaches the client. Realtime: web and mobileHow are web and app sessions billed?
channel: "web" and ends with the same callCompleted webhook. There is no telephony cost, because there is no phone line. Billing and recordsDo I need accounts with Deepgram, ElevenLabs or OpenRouter?
wv_live_… key and a credit balance cover every engine, and there is nothing to bring. API keysHow am I billed?
What happens when credit runs out?
Can I retry a request safely?
Idempotency-Key. It is required on POST /v1/calls, POST /v1/agents/{id}/test-call and POST /v1/billing/topups, and a replay with the same key and body returns the original response instead of dialling twice. Keys are kept for 24 hours. POST /v1/campaigns/{id}/start takes no key, and starting a stopped campaign dials every lead on it again. IdempotencyWhich engines are available?
classic, sarvam, gemini-live, deepgram-agent. GET /v1/engines is the source of truth: an engine whose provider is degraded disappears from that list before your calls start failing. Voice enginesIs there an SDK?
What stage is the product at?
Wixzel-Version header, and an existing key keeps the behaviour it was created with until you pin a newer date. VersioningBuild your first voice agent
Add $5 of credit to start. No subscription, billed per second.


