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

# Changelog

> API changes, new endpoints, and deprecations

This page tracks notable changes to the Sunbird AI API. Use the **version dropdown** at the top of the sidebar to switch between the current API (**v2.1 · Latest**) and the older endpoints (**v1 · Deprecated**).

<Update label="2026-08" description="v2.1 — 51-language ASR, Orpheus-only TTS, Sunflower model selection">
  ## Breaking changes

  ### Speech to Text — `POST /tasks/audio/transcriptions`

  * Now powered by Sunbird's faster-whisper ASR model ([`Sunbird/faster-whisper-51-african-languages`](https://huggingface.co/Sunbird/faster-whisper-51-african-languages)) covering **51 African languages** (up from 10). All previously supported languages remain available.
  * `audio` and `language` are both **required**. Automatic language detection is not supported — always pass an explicit ISO 639-3 code.
  * New `timestamps` flag (default `false`) returns per-segment `start`/`end`/`text` in a new `segments` response field. The response also gains `duration_seconds` and `usage`.
  * **Removed parameters** (now rejected with `422`): `platform`, `adapter`, `whisper`, `recognise_speakers`, `org`, `gcs_blob_name`. Speaker diarization and the organization workflow are no longer available on this endpoint.

  ### Text to Speech — `POST /tasks/audio/speech`

  * All synthesis is served by the **RunPod Orpheus-3B** deployment (`sunbird-orpheus-tts`, 20 African languages / 40+ speakers). The `spark-tts` model and the Modal backend were removed.
  * **Removed parameters** (now rejected): `model`, `platform`, `max_new_audio_tokens`. New tuning knobs: `temperature`, `top_p`, `repetition_penalty` (alongside `max_tokens` and `seed`).
  * `voice` is now optional — when omitted a speaker is chosen for `language` (Luganda by default).
  * `response_mode` (`url` | `stream` | `both`) now applies to all requests; `both` returns the signed URL in the `X-Audio-Url` header.
  * `POST /tasks/audio/speech/batch` accepts **1–16 items** per request (previously 128). `GET /tasks/voice/speakers` drops the `model` query parameter.
  * Responses now always include `platform` (`runpod`) and add `usage` (`input_characters`, `output_audio_bytes`, `duration_seconds`).
  * The legacy per-provider TTS routes were **removed**: `/tasks/tts`, `/tasks/modal/tts` (+ `/stream`, `/stream-with-url`, `/refresh-url`, `/speakers`), `/tasks/modal/orpheus/*`, `/tasks/runpod/tts`.

  ### Chat — `POST /tasks/chat/completions`

  * The `model` field now selects between **`sunflower-14b`** (default; English + 31 Ugandan/regional languages) and **`sunflower-9b`** (67 African languages).
  * The old identifier `Sunbird/Sunflower-14B` is **no longer accepted** and returns `400`.

  ## Other changes

  * `POST /tasks/translate` responses gain an optional `usage` object with Sunflower token counts.
  * `POST /auth/register` and `GET /auth/me` expose `email_verified`.

  ## New endpoints

  * `GET /auth/verify-email` — landing endpoint for the emailed verification link.
  * `POST /auth/resend-verification` — resend the verification email for the authenticated user.
  * `POST /auth/refresh-token` — rotate the caller's API key (revokes the previous token).
</Update>

<Update label="2026-06" description="v2 — Unified audio, chat, and translation endpoints">
  ## Unified endpoints

  We consolidated the speech, text-to-speech, and conversational AI surfaces into a smaller set of unified endpoints. The old routes still work but are **deprecated** and now return `Deprecation` and `Sunset` response headers. They are documented under the **v1 · Deprecated** version, and the full list is kept on the [Deprecations](/resources/deprecations) page.

  ### Migration map

  | Area              | Deprecated (v1)                                                                                                                                                                                | Use instead (v2)                                                                                                         |
  | :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------- |
  | Speech to Text    | `POST /tasks/stt`, `POST /tasks/modal/stt`, `POST /tasks/stt_from_gcs`, `POST /tasks/org/stt`                                                                                                  | `POST /tasks/audio/transcriptions`                                                                                       |
  | Text to Speech    | `POST /tasks/tts`, `POST /tasks/modal/tts` (+ `/stream`, `/stream-with-url`, `/refresh-url`, `/speakers`), `POST /tasks/modal/orpheus/tts` (+ `/batch`, `/speakers`), `POST /tasks/runpod/tts` | `POST /tasks/audio/speech`, `POST /tasks/audio/speech/batch`, `GET /tasks/voice/speakers`, `GET /tasks/audio/speech/url` |
  | Conversational AI | `POST /tasks/sunflower_inference`, `POST /tasks/sunflower_simple`                                                                                                                              | `POST /tasks/chat/completions` (OpenAI-compatible)                                                                       |
  | Summarization     | `POST /tasks/summarise`                                                                                                                                                                        | `POST /tasks/chat/completions` with a summarization instruction prompt                                                   |

  ### Highlights

  * **Speech to Text** — a single `POST /tasks/audio/transcriptions` endpoint routes to the Modal (Whisper large-v3) or RunPod backend, with optional speaker diarization.
  * **Text to Speech** — `POST /tasks/audio/speech` exposes two models (`orpheus-3b-tts` and `spark-tts`), plus batch synthesis, voice discovery, and signed-URL refresh.
  * **Conversational AI** — `POST /tasks/chat/completions` is OpenAI-compatible, so the official OpenAI SDKs work by changing only the base URL and API key. It supports multi-turn conversations and streaming.
  * **Translation** — `POST /tasks/translate` (Sunflower) now translates between any pair of 32 languages, with optional source-language inference.

  ### New endpoints

  * `PUT /auth/profile` — Update Profile
  * `GET /auth/profile/status` — Profile Status
  * `POST /tasks/classify_language` — Classify Language
</Update>

<Note>
  Migrating an existing integration? See the per-feature [Guides](/guides/speech-to-text) for full request/response examples, or jump straight to the relevant endpoint page in this API Reference.
</Note>
