> ## Documentation Index
> Fetch the complete documentation index at: https://docs.60db.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Languages

> Get the list of supported speech-to-text languages

## Request

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token with your API key
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Always `true` on 200 responses
</ResponseField>

<ResponseField name="message" type="string">
  Status message (`"Languages retrieved successfully"`)
</ResponseField>

<ResponseField name="data" type="object">
  Language catalog envelope
</ResponseField>

<ResponseField name="data.languages" type="array">
  Ordered list of supported languages. The **first entry is always `auto`**, representing auto-detect. Use the `code` value when submitting `/stt` requests.
</ResponseField>

<ResponseField name="data.languages[].code" type="string">
  ISO 639-1 language code, or `"auto"` for the auto-detect entry
</ResponseField>

<ResponseField name="data.languages[].name" type="string">
  Human-readable language name (e.g. `"English"`, `"Hindi"`, `"Arabic (MSA)"`)
</ResponseField>

<ResponseField name="data.languages[].native" type="string">
  Same as `name` for compatibility with clients that read the `native` key
</ResponseField>

<ResponseField name="data.languages[].code_switching" type="boolean | array">
  `false` for European languages, or an array like `["en"]` for Indic languages that support inline code-switching with the listed language(s)
</ResponseField>

<ResponseField name="data.languages[].wer_target" type="number">
  Target word error rate for this language at normal audio quality. Omitted for `auto`.
</ResponseField>

<ResponseField name="data.total" type="number">
  Total number of language entries (including the `auto` option)
</ResponseField>

<ResponseField name="data.features" type="object">
  Backend feature flags (e.g. `word_timestamps`, `speaker_diarization`, `srt_export`, `vtt_export`, `code_switching_indic_english`, `multi_language_per_request`, `max_languages_per_request`, `auto_language_detection`, `websocket_streaming`, `telephony_mulaw`, `continuous_mode`)
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl https://api.60db.ai/stt/languages \
    -H "Authorization: Bearer your-api-key"
  ```

  ```javascript JavaScript theme={null}
  const res = await client.getLanguages();
  const languages = res.data.languages;
  // languages[0] is always { code: "auto", name: "Auto-detect", ... }
  for (const lang of languages) {
    console.log(`${lang.name} (${lang.code})`);
  }
  ```

  ```python Python theme={null}
  res = client.get_languages()
  languages = res['data']['languages']
  # languages[0] is always {'code': 'auto', 'name': 'Auto-detect', ...}
  for lang in languages:
      print(f"{lang['name']} ({lang['code']})")
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "message": "Languages retrieved successfully",
    "data": {
      "languages": [
        { "code": "auto", "name": "Auto-detect", "native": "Auto", "code_switching": false },
        { "code": "en",   "name": "English",    "native": "English",    "code_switching": false,  "wer_target": 0.08 },
        { "code": "hi",   "name": "Hindi",      "native": "Hindi",      "code_switching": ["en"], "wer_target": 0.28 },
        { "code": "ar",   "name": "Arabic (MSA)", "native": "Arabic (MSA)", "code_switching": false, "wer_target": 0.20 },
        { "code": "bn",   "name": "Bengali",    "native": "Bengali",    "code_switching": ["en"], "wer_target": 0.25 },
        { "code": "fr",   "name": "French",     "native": "French",     "code_switching": false,  "wer_target": 0.12 }
      ],
      "total": 40,
      "features": {
        "word_timestamps": true,
        "speaker_diarization": true,
        "srt_export": true,
        "vtt_export": true,
        "confidence_scoring": true,
        "code_switching_indic_english": [
          "hi+en", "bn+en", "mr+en", "pa+en", "gu+en", "or+en",
          "as+en", "ne+en", "te+en", "kn+en", "ta+en", "ml+en"
        ],
        "multi_language_per_request": true,
        "max_languages_per_request": 5,
        "auto_language_detection": true,
        "websocket_streaming": true,
        "telephony_mulaw": true,
        "continuous_mode": true
      }
    }
  }
  ```
</ResponseExample>

## Notes

* The `auto` entry is synthesized by this API and is **not** one of the backend's native language codes. To submit a request with auto-detection, either omit the `language` field from `POST /stt` or explicitly pass `language=auto`.
* Supported languages total 39 real languages + 1 `auto` entry.
* **Unsupported languages** (explicitly rejected): Urdu (`ur`), Japanese (`ja`), Korean (`ko`), Chinese (`zh`), Thai (`th`), Vietnamese (`vi`), Indonesian (`id`), Tagalog (`tl`), Swahili (`sw`), Turkish (`tr`), Persian (`fa`), Hebrew (`he`).
* **Arabic dialect tags** (e.g. `ar-eg`, `ar-lv`) are rejected — pass `language=ar` for best-effort MSA transcription.
