Speech-to-Speech: Hydra V1.1 released, `?model=hydra` deprecated
Hydra V1.1 is now the default speech-to-speech model on the Waves realtime endpoint. New integrations should connect with ?model=hydra-v1.1:
The session protocol (event catalog, session.configure shape, tool calling, interruption handling) is identical to the original hydra, so switching is a one-parameter change on the query string.
Pulse STT realtime overview: VAD Events, Endpointing, Age & Gender, and Emotion Detection cards
The Realtime features overview now surfaces four capabilities that had dedicated feature pages but were missing from the overview:
- VAD Events. Acoustic
speech_started/speech_endedframes interleaved with the transcription stream. - Endpointing. Tune the end-of-utterance silence timeout with
eou_timeout_ms. - Age & Gender Detection. Optional per-speaker inference alongside the transcript.
- Emotion Detection. Optional per-utterance classification alongside the transcript.
Speech to Text: VAD events on the live WebSocket API reference
The Pulse STT live WebSocket now models the acoustic voice-activity events in the API reference: speech_started and speech_ended, emitted alongside transcription messages when the connection sets vad_events=true. See VAD events for the payloads and usage.
The events have been in production; this documents them on the WebSocket reference.
Waves: analytics + ops endpoints on the API reference
Ten previously undocumented Waves endpoints now render on the API reference under a new Analytics section (nine endpoints) and an Ops section (one endpoint):
GET /waves/v1/analytics/asr/logs: paginated STT request logDELETE /waves/v1/analytics/asr/history/{request_id}: soft-delete a single STT entryGET /waves/v1/analytics/asr/usage/timeseries: STT request count over timeGET /waves/v1/analytics/tts/logs: paginated TTS request logGET /waves/v1/analytics/tts/usage/timeseries: TTS request count over timeGET /waves/v1/analytics/tts/usage/credits/timeseries: TTS credit spend over timeGET /waves/v1/analytics/tts/concurrency/timeseries: TTS peak concurrency over timeGET /waves/v1/analytics/tts/ws-connections/timeseries: open TTS WebSocket count over timeGET /waves/v1/analytics/webhooks/logs: webhook delivery log (e.g.asr.completedcallbacks)GET /waves/v1/health: liveness probe for the Waves control plane
Speech: Post-Call Analysis and voice catalog endpoints on the API reference
Three previously undocumented Speech endpoints now render on the API reference:
Post-Call Analysis
POST /waves/v1/pca: extract disposition metrics (BOOLEAN, ENUM, INTEGER, STRING, SUMMARY) from a transcript, each with a value, confidence, and the transcript evidencePOST /waves/v1/pca/generate: single-prompt text generation (text in, text out)
STT API-ref: response examples now match the real API
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):
speakeris an integer, not a string. Real responses carryspeaker: 0(zero-indexed), notspeaker: "speaker_0".speaker_confidencefield added to word entries. Present alongsidespeakerwhendiarize=trueis set on Pulse.- Pulse metadata is
{duration, fileSize}only. The old example claimedlanguage,request_id,processing_time_ms,rtfx, andnum_chunkson a Pulse response; those are Pulse Pro only. - Pulse Pro includes
totalBytes,request_id, andlanguageat the top level and richermetadata(processing_time_ms,rtfx,num_chunks). Also does not diarize, sowords[]entries omitspeakerandspeaker_confidence, and there is noutterances[]field. durationis 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), andpulse-pro. The legacy endpoint shows two named examples: default and with word_timestamps + diarize.
STT API: clarify that words[] and utterances[] need word_timestamps=true
The STT API-ref example response showed populated words[] and utterances[] arrays, but a default request from the docs explorer or Postman returns both arrays empty (the transcription string is fine).
Both arrays are gated on the word_timestamps=true query parameter. The same flag turns on both. Without it, the API still transcribes but does not attach per-word timings or sentence-level segments.
TTS: opt-in math_notation flag for reading operators as words
Lightning v3.1 and v3.1_pro accept a new math_notation request field on every transport (POST /waves/v1/tts, POST /waves/v1/tts/live, and the wss://.../waves/v1/tts/live WebSocket).
Off by default. Set math_notation: true to have the normalizer read digit-flanked math operators as spoken words: 6 x 7 becomes “6 times 7”, 2 ^ 10 becomes “2 to the power of 10”, 6 ÷ 2 becomes “6 divided by 2”. The operator word follows number_pronunciation_language (Hindi and Marathi localized; every other language falls back to English).
New `x-expire-content` header: opt a request into content deletion (enterprise)
Enterprise plans only. Send x-expire-content: true on a Text to Speech or Speech to Text request and that request’s free-text content is deleted after 7 days, while the usage record is kept - billing, credits, and usage graphs are unaffected.
Documented as a header parameter on the HTTP routes - POST /waves/v1/tts, POST /waves/v1/tts/live, POST /waves/v1/stt/ - and on the WebSocket routes wss://.../waves/v1/tts/live and wss://.../waves/v1/stt/live, where it is sent on the upgrade request.
TTS: latency measurement caveat + legacy /streaming-tts/stream artifacts retired
Two related updates to the TTS docs.
Latency measurement caveat added to the Lightning v3.1 + Pro model cards. The published ~200 ms TTFB is measured from a client in the same AWS region as the inference pool (India ap-south-1, USA us-west-2, geo-routed). Client-to-server RTT adds on top. A naive TTFB test from a laptop far from either region typically reports 500-800 ms because RTT dominates synthesis time. Callout now spells this out next to the number so readers know to test from their production network position, not their dev machine.
TTS language surface aligned with product-team canonical
The unified TTS endpoints (POST /waves/v1/tts + wss://api.smallest.ai/waves/v1/tts/live) now document the full language surface the platform accepts, matching the product-team lineup for both lightning_v3.1 (base) and lightning_v3.1_pro.
Added to the language enum on both HTTP and WebSocket:
auto- routes the request internally based on input text. Any English or Hindi voice can be used across all supported languages whenautois set; the platform handles language-appropriate routing without needing an explicit code per call. Recommended for cross-language use cases.nl(Dutch) - accepted on bothlightning_v3.1andlightning_v3.1_pro.sv(Swedish) - accepted on bothlightning_v3.1andlightning_v3.1_pro.
Models docs URL migration - waves → models, version dropdown flattened
The Models product now lives under /models/ on the docs site, replacing the older /waves/ prefix. The version dropdown is also gone. There is only one active version (v4.0.0), and it is served from a flat URL - /waves/v-4-0-0/documentation/text-to-speech-lightning/streaming becomes /models/documentation/text-to-speech-lightning/streaming.
Every old URL 301-redirects to its new equivalent. Legacy v2.2.0 and v3.0.1 bookmarks (retired earlier) also land on the same flat /models/* paths. Bookmarks, external links, and search-indexed pages keep resolving.
Waves docs v2.2.0 and v3.0.1 retired; v4.0.0 is now the sole documented surface
The v4.0.0 doc surface is now the only supported view of the Waves models. The version dropdown no longer offers v3.0.1 or v2.2.0, and the pages under those two versions have been removed from the docs site. Old bookmarked and search-indexed URLs 301-redirect to their v4 equivalents; where a specific v3.0.1/v2.2.0 page was renamed or merged in the v4 restructure, the redirect points at the closest v4 page (voice-cloning how-tos land on Instant Clone (API) etc.). The API-reference tabs on the retired versions rendered a completely different OpenAPI (Lightning v1/v2/large focused), so any auto-generated API-ref URLs on those versions land on the v4 API-ref authentication page.
Agno integration guide
Added a documentation page for generating speech with Lightning v3.1 and Lightning v3.1 Pro inside Agno, the open-source Python framework for building multi-agent systems, via the SmallestTools toolkit.
TTS deprecated endpoints hidden from API ref; delete-voice endpoint retired from docs
Nine deprecated TTS endpoints are hidden from the v4 API-reference sidebar. Old bookmarked URLs 301-redirect to the current unified endpoints on /waves/v1/tts and /waves/v1/voice-cloning. Wire-level behavior is unchanged. Existing customer code keeps working.
Hidden from sidebar:
POST /waves/v1/lightning-v3.1/get_speech,POST /waves/v1/lightning-v3.1/stream,WSS /waves/v1/lightning-v3.1/get_speech/stream(superseded byPOST /waves/v1/tts+POST /waves/v1/tts/live+WSS /waves/v1/tts/live)POST /waves/v1/lightning-v2/get_speech,POST /waves/v1/lightning-v2/stream,WSS /waves/v1/lightning-v2/get_speech/stream(deprecated, superseded by the same unified routes)POST /waves/v1/lightning-large/add_voice(superseded byPOST /waves/v1/voice-cloning)GET /waves/v1/lightning-large/get_cloned_voices(superseded byGET /waves/v1/voice-cloning)
Pulse STT: `vad_events` query parameter on the streaming WebSocket
The Pulse STT WebSocket accepts a new query parameter, vad_events. When set to true, the server emits two additional JSON message types: speech_started and speech_ended. They are interleaved with the transcription stream on the same connection.
Usage
Set vad_events=true on the WebSocket URL. Default is false. vad=true is accepted as an alias; when both are set, vad_events takes precedence and vad is ignored.
Lightning v3.1 + Pulse STT API-ref Python snippets - `SmallestAI(api_key=...)` (was `token=...`)
The Python “Try it” snippets attached to the Lightning v3.1 TTS and Pulse STT API reference operations used the pre-4.4.5 SDK constructor signature:
The SDK kwarg was renamed in 4.4.5. Customers copy-pasting the old snippet hit:
WebSocket auth and default URL fixes
Fixed authentication configuration and default server URLs across the WebSocket specs for Lightning TTS, Pulse STT, and related endpoints.
Additional endpoints for v2.2.0 and v3.0.1 are now marked deprecated in the API reference.
Hydra - full-duplex speech-to-speech model
Hydra, Smallest AI’s in-house speech-to-speech model, is now live. A single WebSocket carries microphone audio from your client to the model and streams synthesised response audio back - no STT → LLM → TTS pipeline in the middle.
Electron LLM - chat completions on the Waves API
Electron, Smallest AI’s in-house language model, is now generally available on the Waves API. Use it as a drop-in replacement for OpenAI’s chat completions - point the OpenAI SDK at https://api.smallest.ai/waves/v1 and pass "model": "electron".

