SDKs & compatibility
The Svara Python SDK, agent skills for coding agents, and using the OpenAI or ElevenLabs SDKs against Svara.
Svara Python SDK
The official SDK. One dependency-light package (httpx + websockets) that covers the whole surface: sync and async clients, HTTP streaming, the input-streaming WebSocket behind one method call (with a blocking twin for code without an event loop), character timestamps, pronunciation dictionaries, usage, a CLI with a connectivity check (svara doctor), and drop-in LiveKit / Pipecat plugins. Its transport defaults are measured against production for voice agents: connections are kept between turns, and the streaming socket can be opened before the text exists. The distribution is svara-voice; the import is import svara.
pip install svara-voicepip install "svara-voice[livekit]" and pip install "svara-voice[pipecat]". Moving from the OpenAI SDK? client.audio.speech.create(…), .write_to_file() and with_streaming_response run on a Svara client as written — only the constructor changes. Source, changelog and the full reference are on GitHub.Agent skills
Svara publishes skills for coding agents. The list of skills and what each one covers are in the skills folder on GitHub. Install them with:
- Any coding agent (Claude Code, Codex, Cursor, Gemini CLI, Copilot):
npx skills add kenpath-labs/svara-python - Claude Code:
/plugin marketplace add kenpath-labs/svara-python, then/plugin install svara@kenpath-labs
OpenAI SDKs
The official OpenAI Python and JavaScript SDKs work against Svara unmodified: point base_url at Svara and pass your key. Svara-specific fields ride in extra_body (Python) or as extra properties (JS).
pip install openaiElevenLabs SDKs
The official ElevenLabs SDKs also work unmodified, including their realtime WebSocket client. Pass any non-empty api_key; its presence is also how GET /v1/models decides to answer in the ElevenLabs array shape.
pip install elevenlabsBase URL conventions
/v1: OpenAI SDKs include it in the base URL (https://api.kenpathlabs.com/v1), while ElevenLabs SDKs do not (https://api.kenpathlabs.com); they append v1/… themselves.Compatibility surface
What maps, and what to expect:
- Full support: TTS + streaming, all output formats and rates, timestamps, the realtime WebSocket, the voice list and search (
voices.get_all(),voices.search()), single voice, models, languages. For LLM-driven speech prefer the native WebSocket: the ElevenLabs realtime protocol buffers ~120 characters before its first generation, so first audio comes noticeably later than the ~80 ms on the native socket. - Honored:
voice_settings.speedmaps onto the native speed parameter (their 0.7–1.2 range sits inside our 0.7–1.5) — on HTTP, with-timestamps and the realtime WebSocket alike. - Accepted and ignored:
voice_settings(stability/similarity/style),seed,model_id,previous_text/next_text, request stitching. These don’t map onto this model; requests including them still succeed. (Pronunciation dictionaries are supported — see the guide.) - Stubbed: user/subscription and voice-settings endpoints return valid, permissive shapes so SDK flows don’t break.
A machine-readable OpenAPI document is served live at https://api.kenpathlabs.com/openapi.json: generate typed clients from it (Fern, Stainless, Scalar) for languages the official SDK doesn’t cover yet.