Developer preview

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/voices returns presets plus your voice samples, marked category: "cloned".
  • POST /v1/voices/add creates a new voice sample from a reference audio file, multipart files field, max 3 MB.
  • preview_url on user-created voices requires the same xi-api-key as 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 in

API 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.

Loading reference…