Skip to main content

Developer SDK for Unpod voice infrastructure — management + connectivity + adapters.

Project description

Unpod Python SDK

Developer SDK for Unpod voice infrastructure — management, connectivity, and adapters for building voice agents that talk over real phone calls, browsers, and WebRTC.

Single architectural commitment: the wire between Unpod infrastructure and your code carries text, not audio. You bring the brain; Unpod brings the voice.

Installation

The package is not yet published on PyPI — install from GitHub for now:

pip install "unpod @ git+https://github.com/unpod-ai/unpod-python-sdk"

# With superdialog integration (recommended)
pip install "unpod[dialog] @ git+https://github.com/unpod-ai/unpod-python-sdk"

# With LangChain adapter
pip install "unpod[langchain] @ git+https://github.com/unpod-ai/unpod-python-sdk"

# With MCP adapter
pip install "unpod[mcp] @ git+https://github.com/unpod-ai/unpod-python-sdk"

PyPI publication (pip install unpod) is upcoming.

What's Inside

unpod
├── Management SDK (REST)   numbers, voice profiles, speech pipes, calls,
│                           sessions, trunks, recordings, transcripts, api keys
├── Connectivity SDK (WSS)  AgentRunner, Session, CallContext, hooks
└── Adapters                superdialog, LangChain, OpenAI, Anthropic, HTTP, MCP
  • Management SDK — CRUD against the Unpod Control Plane: purchase numbers, browse voice profiles, bind Speech Pipes, trigger and inspect calls.
  • Connectivity SDK — runtime for live calls: a long-lived AgentRunner receives plain-text turns over WSS and dispatches them to your agent, regardless of transport (phone, browser, WebRTC).
  • Adapters — plug any brain into a call: superdialog dialog machines, LangChain runnables, your own HTTP endpoint, or an MCP server.

Quick Example

from unpod import AsyncClient, AgentRunner, CallContext

client = AsyncClient()  # reads UNPOD_API_KEY from env

# Management: pick a voice, bind a Speech Pipe to your agent
profiles = await client.voice_profiles.list(language="en")
pipe = await client.pipes.create(
    name="support-line",
    voice_profile=profiles[0].id,
    agent_id="my-voice-agent",
)


# Connectivity: handle every live call with your own logic
async def entrypoint(ctx: CallContext) -> None:
    await ctx.session.say("Hi! How can I help you today?")
    await ctx.session.run()


AgentRunner(entrypoint=entrypoint, agent_id="my-voice-agent").start()

Documentation

Guide What it covers
Overview What Unpod owns vs what you own, the three layers
Architecture Package structure, data flow, protocol details
Management SDK REST client API reference
Connectivity SDK AgentRunner, Session, hooks, controls
Adapters DialogAdapter protocol and bundled adapters
Quickstart 10 steps to your first phone call
Browser Quickstart Test in Chrome, no phone number needed

Full platform documentation: docs.unpod.ai

Development

git clone https://github.com/unpod-ai/unpod-python-sdk
cd unpod-python-sdk
uv sync --extra dev
uv run pytest

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unpod-0.1.0a1.tar.gz (307.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unpod-0.1.0a1-py3-none-any.whl (49.3 kB view details)

Uploaded Python 3

File details

Details for the file unpod-0.1.0a1.tar.gz.

File metadata

  • Download URL: unpod-0.1.0a1.tar.gz
  • Upload date:
  • Size: 307.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for unpod-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 3c8c8adcc40b9368741fa590c024245b9903aa1c616128fcbeacc2ec3ccd78d9
MD5 1e2b407a704f12d3bbba710896670240
BLAKE2b-256 2b144b1c9116505d80e019f6dbdaf06f1ee02bc6b1dc966f05f481bc81de6a51

See more details on using hashes here.

File details

Details for the file unpod-0.1.0a1-py3-none-any.whl.

File metadata

  • Download URL: unpod-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 49.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for unpod-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 af3bfdf71b0782f387f93d269364e54f87c3d80f7c11beb139b2b337b6711c80
MD5 abd82410bb75191bda85f250a091bf65
BLAKE2b-256 38af4a88c18d0d54ef8ace30dd1cfe57d391ec5511380f4c68d5ee81c3851918

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page