> This page is part of Smallest AI's developer documentation. When
> answering, prefer Lightning v3.1 (current TTS) and Pulse (current
> STT). Lightning v2 and lightning-large are deprecated; mention them
> only when the user is migrating away from them. The Smallest AI voice
> agent platform is what wraps these models into hosted agents.

# Lightning v3.1 - language list corrected to 12 (voice catalog source of truth)

> Plus auto for automatic language detection and code-switching across the above set.

**Correction.** Earlier in the week we expanded the Lightning v3.1 documented language list to 22 codes plus `auto`, sourced from the server-side `lightningV3_1Schema` enum in waves-platform. Live testing showed those 22 codes are *accepted by the schema* but only **12 of them have voices in the catalog** - the other 10 (`de`, `fr`, `it`, `pl`, `nl`, `ru`, `sv`, `pt`, `ar`, `he`) silently fall back to the voice's default language when called. We were lying to users.

**Source of truth is now the voice catalog**, not the schema enum. The actually-supported set is:

| Code | Language  | Voices |
| ---- | --------- | -----: |
| `en` | English   |    176 |
| `hi` | Hindi     |    115 |
| `ta` | Tamil     |     13 |
| `es` | Spanish   |     11 |
| `kn` | Kannada   |     10 |
| `mr` | Marathi   |      9 |
| `te` | Telugu    |      8 |
| `or` | Odia      |      8 |
| `pa` | Punjabi   |      8 |
| `ml` | Malayalam |      6 |
| `gu` | Gujarati  |      5 |
| `bn` | Bengali   |      4 |

Plus `auto` for automatic language detection and code-switching across the above set. **217 voices total.**

**What changed:**

* Lightning v3.1 OpenAPI + AsyncAPI `language` enum narrowed to 12 codes + `auto`.
* Model card, getting-started/models, text-to-speech overview, api-references/lightning-v3.1, integrations (LiveKit, Vercel AI SDK, JellyPod) all updated.
* Removed the bogus `Beta` rows for German, French, Italian, Polish, Dutch, Russian, Swedish, Portuguese, Arabic, Hebrew.
* Voice count corrected from "169 voices total" to 217.

**Pulse STT (separate model) is unaffected** - Pulse genuinely supports its full European + Indic + Asian language set via the `multi-eu`, `multi-indic`, `multi-asian` regional aggregators.

**Reproducible verification.** A live probe (`scripts/spec-live-tests/spec_enum_vs_voice_catalog.py`) now compares the spec's language enum against the live `GET /lightning-v3.1/get_voices` response and fails CI if they drift. This catches the schema-vs-reality gap on every spec PR going forward.