Jutusta Speech · Developer API
An HTTP interface to the Jutusta speech stack: text-to-speech with the same voices that power Jutusta, plus speech-to-text (sync and async/webhook). Point your baseUrl at /api/v1 and authenticate with an xi-api-key header.
Voice samples
Your personal voice samples are exposed through the same v1 endpoints as the presets. Pass a sample's voice_id to /text-to-speech/{voice_id} to synthesize with it.
GET /v1/voicesreturns presets plus your voice samples, markedcategory: "cloned".POST /v1/voices/addcreates a new voice sample from a reference audio file, multipartfilesfield, max 3 MB.preview_urlon user-created voices requires the samexi-api-keyas the rest of the API.
You can also manage voice samples in the UI at /en/app/text-to-speech.
Streaming TTS
For long scripts where time-to-first-audio matters, the synth has two streaming modes. Chunked HTTP POST /text-to-speech/{voice_id}/stream splits the input into sentence-sized segments and streams a single WAV — drop-in for any HTTP client. The WebSocket wss://…/api/v1/text-to-speech/{voice_id}/stream-input mirrors the ElevenLabs `stream-input` protocol for voice-agent use: push JSON text frames as your LLM emits tokens, receive base64 PCM audio frames back. See the full protocol (frame shapes, auth, idle timeout, error codes) in the API reference below.
Voice clones are not yet supported on the WebSocket endpoint — use the regular POST /text-to-speech/{voice_id} instead.
Connect an AI agent
Jutusta is a standard OAuth 2.1 / OIDC authorization server, so an AI agent can call the speech API on a user's behalf. There are two ways to get a bearer credential — both are presented the same way at call time.
- On a user's behalf (OAuth 2.1) — The agent registers a client (dynamic client registration), runs the authorization-code + PKCE flow, and the user signs in and approves the scopes on a consent screen. Synthesis and transcription spend the authorizing user's credits.
- As your own bot (API key) —
Mint a key (prefixed
sk_jt_) below and send it as a bearer token — or via the `xi-api-key` header. No OAuth flow; this assumes a human holds the account.
There is also a native MCP endpoint at /mcp (Streamable HTTP, JSON-RPC) exposing a `text_to_speech` tool, guarded by the same bearer token.
Agents can discover all of this without reading this page. Step-by-step instructions for an LLM live at /auth.md , with machine-readable metadata at the standard discovery endpoints below.
Sign in to get a key
Personal API keys are tied to your account. The public reference below is always available.
Sign inAPI reference
Live schema served from /api/v1/openapi.json.
Endpoint shapes follow the ElevenLabs v1 API, so existing ElevenLabs SDKs work as drop-in clients — point their baseUrl at /api/v1.