Guides
.md ↗

Models

Available public models and how to select one for a request.

The API exposes stable public model ids that hide checkpoints and infrastructure. List them:

bash
curl -s https://api.kalpalabs.ai/v1/models -H "Authorization: Bearer $KALPA_API_KEY"
json
{
  "data": [
    {
      "id": "kalpa-tts-beta-v0.1",
      "display_name": "Kalpa TTS beta v0.1",
      "description": "English conversational speech model (dialogue + TTS) — best quality; the default.",
      "modes": ["converse", "tts"],
      "speakers": ["0", "1"],
      "languages": ["en"],
      "default": true
    },
    {
      "id": "kalpa-tts-multilingual-beta-v0.1",
      "display_name": "Kalpa TTS multilingual beta v0.1",
      "description": "Multilingual conversational speech model (dialogue + TTS) — English and Hindi.",
      "modes": ["converse", "tts"],
      "speakers": ["0", "1"],
      "languages": ["en", "hi"],
      "default": false
    }
  ]
}

Both models are conversational (they serve converse and tts):

ModelUse it for
kalpa-tts-beta-v0.1The flagship — best English quality; the default when model is omitted.
kalpa-tts-multilingual-beta-v0.1English and Hindi (Devanagari text; code-switched English words are fine).

Each card's languages lists what the model speaks as ISO 639-1 codes. -vN increases with each new variant; newer is generally better. New variants show up in GET /v1/models — read the list rather than hardcoding ids.

Choosing a model per request

Every REST/SSE generation request takes a model field:

json
{ "text": "…", "model": "kalpa-tts-beta-v0.1" }
  • Omit it (or send null) for the default model. JSON success bodies echo the resolved public id in model; SSE emits it in meta. A WebSocket selects model in initializeConnection and receives the resolved id in sessionCreated.
  • An unknown id, or a model that doesn't support the endpoint's mode, returns 400 invalid_request.

Speakers are per model

Each card's speakers lists the role labels that model understands, in turn order. Don't hardcode them — read the card and use its labels. The details (and why wrong labels degrade audio) are in Conversations.