Kalpa Speech API
Speech models that speak in context — one API for text-to-speech and multi-speaker conversation.
The Kalpa Speech API serves multi-speaker conversational speech models over HTTP and WebSocket. It does two things:
- Text-to-speech —
POST /v1/tts/{voice_id}turns text into spoken audio in a named voice. - Conversation —
POST /v1/conversetakes a conversation of turns and speaks the open (final) turn: either authoring it outright (the model writes text and voices it) or rendering text you supply, in the voice and rhythm of the conversation so far. For a stateful WebSocket, see the WebSocket reference.
There is one conversation shape and no special cases: TTS in a named voice is a conversation whose first turn is the voice's reference clip. REST whole-clip responses carry base64-encoded 16-bit PCM WAV; SSE and WebSocket responses stream base64 raw pcm_s16le, and POST / streams raw pcm_s16le bytes as its body. Generated audio is mono at the response's advertised sample rate (24 kHz, unless a TTS request asks for another sample_rate); input WAV may use any sample rate and multi-channel input is mixed down to mono.
export KALPA_API_KEY=... # create one at kalpalabs.ai/dashboard/keys
curl -s https://api.kalpalabs.ai/v1/tts/dda5319f-3b81-4124-b69e-9241eb510b77 \
-H "Authorization: Bearer $KALPA_API_KEY" -H 'Content-Type: application/json' \
-d '{"text": "Hey there! How are you doing today?"}'At a glance
| Endpoint | What it does |
|---|---|
POST /v1/tts/{voice_id} | Text in, speech out in a named voice |
POST / | The same, streaming raw PCM as it is generated |
wss:/ | Streaming text in, streaming speech out, over WebSocket |
POST /v1/converse | Complete the open turn of a conversation |
POST /v1/converse/stream | The same, streaming audio over server-sent events |
wss:/ | Stateful streaming conversation over WebSocket |
GET /v1/voices | The named-voice catalog |
GET /v1/models | The public model registry |
GET /v1/info | Backend info, default params, request limits |
GET /v1/usage | Your key's metered usage |
GET /health | Liveness (no auth) |
Base URL: https://api.kalpalabs.ai. All /v1/* endpoints require a key (Authentication). HTTP errors before streaming begins use one standard envelope (Rate limits & errors); SSE and WebSocket failures after a stream starts use their protocol-specific error events, and a raw audio stream that fails is cut off before it completes.
Named voices
For the same voice on every request, list the voices with GET /v1/voices and speak in one with POST /v1/tts/{voice_id}.
Wrenhuman-likedda5319f-3b81-4124-b69e-9241eb510b77en
Granthuman-likef213312a-ae4a-4857-a8ac-a9ac76f73294en
Kiara5e0c5704-590f-483b-b291-00a2415cb67ehi + en
Arjun18c26f49-9f9c-400c-bec9-7467f28e1db5hi + en
Tessahuman-like71e4a314-666b-4fa7-b4e2-3d36e85d391fen
Islahuman-likec676a75b-2a1d-4bc8-880a-6ca649ed1170en
Otishuman-like2b5f1a3b-b992-44d2-8214-fd4b9b175369en
Sana902b3219-1f67-40f2-80b9-0c2a28600615hi + en
Aman1eb6c010-34e0-477c-9d24-e915f853359ehi + en
Nikhil13604d2a-7a9e-4524-b3b7-32d6372f0e56hi + en
Devbc22cae9-0935-4420-bd31-1fd360fc5e71hi + enAs GET /v1/voices?model=kalpa-tts-1 listed them on 14 Oct 2026. Samples are kalpa-tts-1.
Built for agents
These docs assume your first reader may be a model. Every page is plain markdown at a stable URL — append .md to any path (this page is /index.md). The whole site is indexed in /llms.txt, concatenated in /llms-full.txt, and the full contract is machine-readable at /openapi.json — the same committed artifact the API reference and our clients are generated from. Point your agent at any of them.
Integrations
Building on a voice-agent framework? Kalpa voices are available in Pipecat through the pipecat-kalpa package and built into Bolna — see Integrations.
Getting access
Create an API key yourself at kalpalabs.ai/dashboard/keys, or try the models interactively first in the dashboard. New accounts get 1,000 free minutes of generated audio (on your first organization, valid for three months).