> ## 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 STT Models

> Retrieve the list of available Speech-to-Text models

Returns the catalog of STT (transcription) models exposed by 60db. For Text-to-Speech models, use [`GET /tts/models`](/api-reference/models/get-models).

## Request

### Headers

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

## Response

<ResponseField name="success" type="boolean">
  Indicates whether the request was successful
</ResponseField>

<ResponseField name="message" type="string">
  Status message
</ResponseField>

<ResponseField name="data" type="array">
  Array of STT model entries
</ResponseField>

<ResponseField name="data[].id" type="string">
  Unique model identifier (e.g. `60db-stt-v01`)
</ResponseField>

<ResponseField name="data[].model_name" type="string">
  Human-readable display name
</ResponseField>

<ResponseField name="data[].description" type="string">
  Short description of the model's capabilities
</ResponseField>

<ResponseField name="data[].category" type="string">
  Always `"speech-to-text"` for STT models
</ResponseField>

<ResponseField name="data[].type" type="string">
  Always `"stt"` for this endpoint
</ResponseField>

<ResponseField name="data[].languages" type="number">
  Number of supported transcription languages
</ResponseField>

<ResponseField name="data[].features" type="array">
  Feature flags advertised by this model: `auto_language_detection`, `speaker_diarization`, `word_timestamps`, `code_switching_indic_english`, `continuous_mode`, `telephony_mulaw`, `websocket_streaming`
</ResponseField>

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

  ```javascript JavaScript theme={null}
  import { SixtyDBClient } from "60db";

  const client = new SixtyDBClient("your-api-key");

  const { data: models } = await client.getSTTModels();
  for (const model of models) {
    console.log(`${model.id} — ${model.model_name}`);
    console.log(`  Languages: ${model.languages}`);
    console.log(`  Features: ${model.features.join(", ")}`);
  }
  ```

  ```python Python theme={null}
  from sixtydb import SixtyDBClient

  client = SixtyDBClient('your-api-key')

  res = client.get_stt_models()
  for model in res['data']:
      print(f"{model['id']} — {model['model_name']}")
      print(f"  Languages: {model['languages']}")
      print(f"  Features: {', '.join(model['features'])}")
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "message": "STT models fetched successfully",
    "data": [
      {
        "id": "60db-stt-v01",
        "model_name": "60db STT v01",
        "description": "Non-hallucinating speech recognition supporting 39 languages with auto-detection, speaker diarization, and real-time streaming",
        "category": "speech-to-text",
        "type": "stt",
        "languages": 39,
        "features": [
          "auto_language_detection",
          "speaker_diarization",
          "word_timestamps",
          "code_switching_indic_english",
          "continuous_mode",
          "telephony_mulaw",
          "websocket_streaming"
        ]
      }
    ]
  }
  ```
</ResponseExample>

## Notes

* The `id` value is the same string reported by the `session_started` WebSocket event (see [`/ws/stt`](/api-reference/websocket/stt)) and is stable across requests.
* Currently only one STT model is exposed. Future versions (`60db-stt-v02`, domain-tuned variants, etc.) will appear as additional entries in this array without any breaking changes to the response shape.
