---
title: Archive — page 2 — Luke Oliff
description: Page 2 of posts originally published elsewhere.
canonical: https://lukeocodes.dev/archive/page/2
type: website
locale: en_GB
robots: noindex, follow
feed: https://lukeocodes.dev/rss.xml
search: https://lukeocodes.dev/search.json?q={query}
schema:
  - "@context": https://schema.org
    "@graph":
      - "@type": WebSite
        "@id": https://lukeocodes.dev/#website
        url: https://lukeocodes.dev
        name: Luke Oliff
        alternateName: lukeocodes
        inLanguage: en
        publisher:
          "@id": https://lukeocodes.dev/authors/luke#person
        description: Personal blog and writing by Luke Oliff — developer relations, voice AI, developer experience.
        potentialAction:
          - "@type": SearchAction
            target:
              "@type": EntryPoint
              urlTemplate: https://lukeocodes.dev/blog/search?q={search_term_string}
            query-input: required name=search_term_string
      - "@type": Person
        "@id": https://lukeocodes.dev/authors/luke#person
        name: Luke Oliff
        url: https://lukeocodes.dev/authors/luke
        description: Engineer and developer relations leader. Writing about developer relations, AI, and the voice industry, from the UK.
        mainEntityOfPage: https://lukeocodes.dev/authors/luke
        givenName: Luke
        familyName: Oliff
        image: https://lukeocodes.dev/authors/luke.jpg
        jobTitle: Engineer and developer relations leader
        sameAs:
          - https://www.linkedin.com/in/lukeocodes
          - https://github.com/lukeocodes
          - https://bsky.app/profile/lukeocodes.dev
          - https://x.com/lukeocodes
          - https://hashnode.com/@lukeocodes
          - https://dev.to/lukeocodes
        knowsAbout:
          - Developer Relations
          - Developer Experience
          - Voice AI
          - Text-to-Speech
          - Answer Engine Optimisation
          - Search Engine Optimisation
          - Open Source
          - Developer Tooling
          - API Design
          - Speech-to-Text
          - Voice Agents
          - Community Building
        knowsLanguage:
          - English
        nationality: British
        alumniOf:
          - "@type": Organization
            name: The Open University
---

[Luke Oliff.](/)

- [Blog](/blog)
- [CV](/cv)
- [Uses](/uses)
- [User manual](/user-manual)
- [Living with ADHD](/living-and-working-with-adhd)
- [RSS](/rss.xml)

[Luke Oliff · Archive](/blog)

# Archive.

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

108 posts

**2026**

- [Voice agent multilingual language list is now server-driven](/agent-multilingual-languages-server-driven) (Aug 2026 · Voice Agents · via speechify.ai): GET /v1/agents/voices now returns a multilingual_languages field listing every language an agent may declare in additional_languages, so language pickers render
- [Widget error reporting and startAgent connect-failure contract](/widget-error-codes-and-startagent-behavior) (Aug 2026 · Voice Agents · via speechify.ai): The voice-agent widget now reports real failure codes on widget.error instead of always-unknown, and startAgent() connect failures arrive on the promise rejection
- [Models list now reports per-model endpoints and curated-voice flag](/models-endpoint-per-model-capabilities) (Jul 2026 · Text-to-Speech · via speechify.ai): GET /v1/audio/models now returns endpoints and curated_voices per model, so a model picker can show only valid synthesis routes and reject unsuitable voice
- [Multilingual voiceover with the Speechify API and simba-3.0](/multilingual-voiceover-with-speechify-and-simba-3-0) (Jul 2026 · Text-to-Speech · via speechify.ai): Multilingual voiceover with simba-3.0: generate one script in English, German, Spanish, French, Italian and Portuguese through the Speechify TTS API.
- [Widget now served from cdn.speechify.ai; new flow_budget_exhausted call end reason](/widget-cdn-flow-budget-exhausted) (Jul 2026 · Voice Agents · via speechify.ai): Widget 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.
- [Widget bundle compression and session spend-limit 402](/widget-bundle-compression-session-402) (Jul 2026 · Voice Agents · via speechify.ai): The 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 session
- [TTS 404s now name the fix instead of a generic not-found](/audio-404s-diagnosable-by-cause) (Jul 2026 · Text-to-Speech · via speechify.ai): Audio 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.
- [Speech generation in the Vercel AI SDK with Speechify](/speech-generation-in-the-vercel-ai-sdk-with-speechify) (Jul 2026 · TypeScript · via speechify.ai): The 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's
- [Free tier TTS requests get a burst allowance](/tts-free-tier-burst-allowance) (Jul 2026 · APIs · via speechify.ai): Free-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 its
- [Every public API header now has one canonical, un-prefixed name](/speechify-header-namespace) (Jul 2026 · APIs · via speechify.ai): One namespace, one name: Speechify-Request-Id and RateLimit-* are now the canonical public API headers, with X-prefixed spellings honoured until 2027-07-24.

Page 2 of 11. [← Newer](/archive) · [Older →](/archive/page/3)

## Search this site

`GET https://lukeocodes.dev/search.json?q=<words>` returns matching posts as JSON, each with its page URL and its markdown URL. Add `&limit=<1-50>` for more than 10. How it works: [/blog/search](https://lukeocodes.dev/blog/search.md).

```sh
curl "https://lukeocodes.dev/search.json?q=developer+relations"
```

---

© 2026 Luke Oliff. Posts live at the root of this site.

- [GitHub](https://github.com/lukeocodes)
- [LinkedIn](https://www.linkedin.com/in/lukeocodes)
- [X](https://x.com/lukeocodes)
- [Bluesky](https://bsky.app/profile/lukeocodes.dev)
- [Email](mailto:luke@lukeoliff.com)
- [RSS](/rss.xml)

## Cookies

This site sets one analytics cookie, from Google Analytics, and only in a browser that accepts the cookie banner. A client that does not run scripts sets no cookies, so there is nothing to accept or decline here.

[Cookie policy](/cookies)
