Build agents that call, message and remember in a few lines of code. One SDK between your agent and every customer conversation: telephony, streaming speech, durable journeys, shared context and realtime events. Use one module, or the whole backend.





Unpod owns the whole path: carrier-grade telephony, streaming speech, the agent runtime, durable journeys, shared context and observability. End-to-end in under 330ms, one trace across every hop, no vendor chain to stitch. Use one layer, or the whole stack.
A shared context and intelligence layer sits under your agents, journeys and channels, so every call, message and email lands on the same customer record. You build on one backend instead of stitching tools together, and adding a channel never changes your architecture.
action · voice · chat, spun up per task
durable flows · waits · branches · signals
definable blocks, anywhere in the pipeline
numbers · SIP · media · voice router · profiles
WhatsApp · Email · SMS · Web chat · custom connectors
A WhatsApp message, a 12-minute call and an inbound email are technically different, but they share who participated, which conversation they belong to, what outcome resulted and which event fired. Your application never sees the difference.
Realtime voice for appointments, reminders and support, on carrier-grade telephony and streaming speech. Tap any card to listen.
# pip install unpod from unpod import Unpod client = Unpod(api_key="up_...") call = client.calls.create( agent_id="agt_123", webhook="https://you.dev/unpod" )
Upsert a person once and every identity resolves to them: one entity, one thread, one history across every channel.
Durable flows wait days, branch on outcomes and never call someone who already answered.
Outcomes, preferences and history land in one context layer agents read before every turn.
From first playbook to a live phone number.
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 train your own model when you ask. Never a shared or third-party one.
Go live in weeks, not quarters. Unpod runs the call, reads the room, and knows exactly when to bring a human in.
A copilot drafts your conversation flow, Talk Live previews it by voice, and every change is versioned. No wall-of-prompt text, no black-box tuning.
Streaming STT and TTS tuned for Indian languages and English. A curated set of voices per business type, previewable in one tap.
Same playbook, published as one LLM endpoint the OpenAI SDK can already call: cURL, Python, JavaScript, or Go.
The moment your playbook is ready, deploy it as a live voice agent with a real phone number, published and callable in seconds.
Deployed agents, live sessions, and total minutes at a glance. Track dispatch health and drill into each worker's status in one view.
Wallet balance, inbound vs outbound, missed calls, spend and success rate. The whole voice stack on one screen, updated live.
Point the OpenAI SDK at your trained endpoint, or run the open-source framework in-house. Python, Node, REST or MCP. Text in, text out, any model.
import os
from openai import OpenAI
# Already have an agent loop? Change one line.
client = OpenAI(
base_url="https://api.unpod.dev/v1",
api_key=os.environ["UNPOD_KEY"],
)
reply = client.chat.completions.create(
model="agt_123", # your trained playbook endpoint
messages=[{"role": "user", "content": "Is Friday 4pm free?"}],
)"Yes, Friday 4pm is free. Booked."
The backend, the models, integration and security: the things developers ask before shipping.
Start free in the playground, no login needed. Ship on the whole backend, or export the playbook to your own stack and pay only for metered minutes.