Telephony and speech delivered as infra - with an open-source CPaaS and a conversation framework on top. Build the agent, self-host the platform, or run the whole stack on Unpod.
Unpod handles the phone and the speech. You receive text at your endpoint and reply with text - the prompt, tools and customer data stay on your side.
No telecom plumbing. No separate SMS provider. One SDK, one webhook.
One API call provisions a real number - voice, SMS and WhatsApp on the same line.
One API callVoice and messages arrive in the same event shape. One handler covers both channels.
Single endpointCalls are transcribed live and sent as text. Reply with text - we handle TTS, threading, silence.
Text in, text outYour agent is live with a real number. Native MCP in Claude Code, Cursor, Windsurf, Zed.
Live in productionPython, Node, REST or MCP - all open source. Receive text, reply with text. Wire it to any LLM, framework or your own loop.
from unpod import Unpod
client = Unpod(api_key="up_...")
# Provision a number for your agent
number = client.numbers.buy(country="IN", agent_id="agt_123")
# Place an outbound call - your webhook gets every turn
call = client.calls.create(
agent_id="agt_123",
to_number="+9197XXXXXXXX",
webhook="https://api.yourapp.com/unpod",
)SuperDialog writes your conversation logic. The Unpod CPaaS runs the contact-center layer, and you self-host it. The Developer Platform provides the telephony and speech - the only part you pay for.
The metered speech & telephony your agents run on. STT, TTS, numbers and routing through one webhook.
Self-host the full agents & contact-center platform. Embeds SuperDialog, bills against Unpod infra.
Write realtime conversation logic. Standalone, lower-level, free - adopt it before you ever need the cloud.
Real things developers ship with Unpod - from coding agents that take calls to on-call pagers and 2FA inboxes.
Point a number at your server. Call it, say "restart the worker" - your coding agent does it via MCP.
Give a long-running agent a real number so it can dial vendors and follow up - no human in the loop.
Answer inbound 24/7, qualify intent, book meetings, warm-transfer with the full transcript.
Pager-style escalation: dial the on-call engineer, read the incident, escalate if no answer.
Trigger an outbound dial via one API call. Real-time transcript streams back to your handler.
A dedicated number for codes from Stripe, GitHub, banks. SMS arrives as text in the same webhook.
Handle inbound voice and SMS through one handler. Resolve routine queries, escalate with context.
Outbound dials to confirm bookings; reschedule links go over SMS through the same SDK.
We handle the phone calls and the speech. You keep your prompt, your model, and your customer data.
Audio is streamed, not stored. Data stays in your region, encrypted with your keys - and the open-source layers let you self-host the whole thing.
Pin storage to US, EU or India regions - your choice, per project.
TLS in transit, AES-256 at rest. Bring your own KMS keys.
Streams aren’t stored by default. Opt in only if you need recordings.
Transcripts and recordings are never used to train any model.
The products, the model, integration and security - the things developers ask before shipping.
Start free with the open-source framework and CPaaS. Meter against Unpod infra only when you go live. No credit card to start.