Luke Oliff.

Archive.

Posts originally published elsewhere, collected here with their canonical source.

108 posts

2026
Voice agent multilingual language list is now server-drivenGET /v1/agents/voices now returns a multilingual_languages field listing every language an agent may declare in additional_languages, so language pickers renderVoice Agentsvia speechify.ai
Widget error reporting and startAgent connect-failure contractThe voice-agent widget now reports real failure codes on widget.error instead of always-unknown, and startAgent() connect failures arrive on the promise rejectionVoice Agentsvia speechify.ai
Models list now reports per-model endpoints and curated-voice flagGET /v1/audio/models now returns endpoints and curated_voices per model, so a model picker can show only valid synthesis routes and reject unsuitable voiceText-to-Speechvia speechify.ai
Multilingual voiceover with the Speechify API and simba-3.0Multilingual voiceover with simba-3.0: generate one script in English, German, Spanish, French, Italian and Portuguese through the Speechify TTS API.Text-to-Speechvia speechify.ai
Widget now served from cdn.speechify.ai; new flow_budget_exhausted call end reasonWidget embeds now load from cdn.speechify.ai, and a new flow_budget_exhausted end reason closes a call cleanly when an agent flow blows its per-call budget.Voice Agentsvia speechify.ai
Widget bundle compression and session spend-limit 402The voice-agent widget is now served compressed - 676 kB down to 190 kB when it was measured - supports version-pinned URLs with subresource integrity, and sessionVoice Agentsvia speechify.ai
TTS 404s now name the fix instead of a generic not-foundAudio 404s now name their cause: a bad voice_id returns voice_not_found, a bad model returns a model-not-found message, on speech and both stream endpoints.Text-to-Speechvia speechify.ai
Speech generation in the Vercel AI SDK with SpeechifyThe AI SDK ships generateSpeech() but no Speechify provider. So we wrote one: a dependency-free custom speech model that maps POST /v1/audio/speech onto the SDK'sTypeScriptvia speechify.ai
Free tier TTS requests get a burst allowanceFree-tier /v1/audio/* requests get a 10-request burst bucket instead of capping at the 1 req/s sustained rate, so a first quickstart script no longer 429s on itsAPIsvia speechify.ai
Every public API header now has one canonical, un-prefixed nameOne namespace, one name: Speechify-Request-Id and RateLimit-* are now the canonical public API headers, with X-prefixed spellings honoured until 2027-07-24.APIsvia speechify.ai