API: canonical Speechify-* header names (legacy X- aliases still work)

Every header in Speechify’s public API surface now has one canonical, un-prefixed Speechify-* name (RFC 6648). The pre-2026 X--prefixed spellings are unaffected today - they’re still accepted on requests and still emitted on responses - and will keep working until 2027-07-24.

Legacy (still works until 2027-07-24)Canonical
X-Request-IDSpeechify-Request-Id
X-Speechify-Audio-Content-TypeSpeechify-Audio-Content-Type
X-RateLimit-Limit / -Remaining / -ResetRateLimit-Limit / -Remaining / -Reset
X-Speechify-SDK / X-Speechify-SDK-VersionSpeechify-SDK / Speechify-SDK-Version
X-Tenant-IDSpeechify-Tenant-Id

The last two are request headers - if your integration sends them, either spelling is read the same way. X-Speechify-Billable-Characters-Count (an internal usage-accounting header on the audio-streaming responses) is unaffected by this change and has no canonical form.

Nothing to change today: whenever a response carries one of these headers, it carries both spellings with the same value, so an integration reading either name keeps working unmodified. Speechify-Audio-Content-Type is only present on the audio-streaming endpoints that already emitted its X- predecessor - it doesn’t appear on responses that never had it, like POST /v1/audio/speech. New integrations should read the canonical name.

Speechify-Request-Id: 7f3a2c1b4d5e6f7a
X-Request-ID: 7f3a2c1b4d5e6f7a
RateLimit-Limit: 20
X-RateLimit-Limit: 20

(RateLimit-Limit reflects your plan’s request-rate budget - the value above is illustrative, not a specific plan’s limit. See the API limits reference for the per-plan table.)

If you send a request-correlation id yourself, send it as Speechify-Request-Id (the legacy X-Request-ID request header is still echoed back the same way). If both are sent, the canonical name wins.

Full header reference: API limits & rate limiting.