Tone docs
API referenceVoices & languages

Sarvam models, languages and voices available to an agent

The legal values for an agent speech stack, fetched from the provider rather than hardcoded — so this changes without a deploy and every list here is an OPEN set. 🔴 A voice belongs to a specific model version: the (ttsModel, ttsVoice) pair is the constraint, not the voice name, and each speaker names the model it belongs to. A retired voice is marked deprecated rather than removed, so an agent already using one keeps working.

Requires the read scope. A key with less gets 403 insufficient_scope.

GET
/v1/catalog/voice
AuthorizationBearer <token>

Authorization: Bearer tone_live_… or tone_test_…. The prefix IS the environment: a test key reaches only the sandbox, and no request field bridges the two.

In: header

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/catalog/voice"
{  "data": {    "defaultAgentLanguages": [      "en-IN",      "hi-IN"    ],    "fetchedAt": "2026-08-25T04:00:00Z",    "languageNames": {},    "llm": {      "defaults": {        "model": "gemini-2.5-flash"      },      "models": [        {          "deprecated": true,          "description": "Latest speech model. Adds `temperature`; drops `pitch` and `loudness`.",          "id": "gemini-2.5-flash",          "label": "Bulbul v3",          "provider": "gemini"        }      ]    },    "previewSamples": {},    "source": "spec",    "stt": {      "autoDetect": "auto",      "defaults": {        "language": "auto",        "mode": "transcribe",        "model": "saaras:v3"      },      "languages": [        "en-IN",        "hi-IN",        "gu-IN",        "ta-IN"      ],      "models": [        {          "deprecated": true,          "description": "Latest speech model. Adds `temperature`; drops `pitch` and `loudness`.",          "id": "saaras:v3",          "label": "Bulbul v3",          "supportsModes": true        }      ],      "modes": [        {          "description": "Transcribes faithfully in the language spoken, without translating.",          "id": "transcribe",          "label": "Bulbul v3"        }      ]    },    "tts": {      "defaults": {        "model": "bulbul:v3",        "speaker": "anushka"      },      "languages": [        "en-IN",        "hi-IN",        "gu-IN"      ],      "models": [        {          "deprecated": true,          "description": "Latest speech model. Adds `temperature`; drops `pitch` and `loudness`.",          "id": "bulbul:v3",          "label": "Bulbul v3",          "options": [            {              "default": 1,              "description": "Latest speech model. Adds `temperature`; drops `pitch` and `loudness`.",              "key": "pace",              "label": "Bulbul v3",              "max": 2,              "min": 0.5,              "step": 0.1            }          ]        }      ],      "sampleRates": [        8000,        16000,        22050      ],      "speakers": [        {          "deprecated": true,          "gender": "female",          "id": "simran",          "label": "Bulbul v3",          "models": [            "bulbul:v3"          ]        }      ]    },    "version": "c7f2a9e1b4d6"  }}
Was this page helpful?