> 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.

# STT API-ref: response examples now match the real API

> Follow-up to yesterday's word_timestamps clarification.

Follow-up to yesterday's `word_timestamps` clarification. That PR fixed the description but the response schema itself still drifted from what the live API returns. Postman side-by-side surfaced it.

Corrected on both endpoint schemas (`/waves/v1/stt/` and legacy `/waves/v1/pulse/get_text`):

* **`speaker` is an integer, not a string.** Real responses carry `speaker: 0` (zero-indexed), not `speaker: "speaker_0"`.
* **`speaker_confidence` field added** to word entries. Present alongside `speaker` when `diarize=true` is set on Pulse.
* **Pulse metadata is `{duration, fileSize}` only.** The old example claimed `language`, `request_id`, `processing_time_ms`, `rtfx`, and `num_chunks` on a Pulse response; those are Pulse Pro only.
* **Pulse Pro includes `totalBytes`, `request_id`, and `language`** at the top level and richer `metadata` (`processing_time_ms`, `rtfx`, `num_chunks`). Also does not diarize, so `words[]` entries omit `speaker` and `speaker_confidence`, and there is no `utterances[]` field.
* **`duration` is seconds, not minutes.** Description on the legacy Pulse endpoint schema said minutes; corrected.
* **Response examples split by scenario.** The unified endpoint now shows three named examples: `pulse-default` (empty arrays), `pulse-full` (word\_timestamps + diarize), and `pulse-pro`. The legacy endpoint shows two named examples: default and with word\_timestamps + diarize.

Live-verified against `api.smallest.ai` on a WAV generated via TTS: default, word\_timestamps + diarize, Pulse Pro, and webhook async paths all match the updated schemas.