HeyPuter/puter · error · HttpError
errText || `Speechify TTS request failed (status ${response.
Error message
errText || `Speechify TTS request failed (status ${response.status})` What it means
Error "errText || `Speechify TTS request failed (status ${response.status})`" thrown in HeyPuter/puter.
Source
Thrown at src/backend/drivers/ai-tts/providers/speechify/SpeechifyTTSProvider.ts:211
// Map upstream status to an `upstream_*` HttpError so the
// alarm gate skips it. Mirrors ElevenLabs/xAI's translator —
// 4xx and 5xx both surface as 400 to the client (with the
// appropriate legacyCode), 429 stays 429, auth stays 500.
const legacyCode =
response.status >= 500
? 'upstream_provider_unavailable'
: response.status === 401 || response.status === 403
? 'upstream_auth_failed'
: response.status === 429
? 'upstream_rate_limited'
: 'upstream_bad_request';
const exposedStatus =
legacyCode === 'upstream_rate_limited'
? 429
: legacyCode === 'upstream_auth_failed'
? 500
: 400;
throw new HttpError(
exposedStatus,
errText ||
`Speechify TTS request failed (status ${response.status})`,
{
legacyCode,
fields: {
provider: 'speechify',
upstreamStatus: response.status,
},
},
);
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const data: any = await response.json();
if (!data?.audio_data) {
throw new HttpError(
400,View on GitHub (pinned to 908ec23eda)
Solutions
- Check the Speechify API key and request parameters, then retry.
- Inspect the upstream status code and error text for the underlying cause.
When it happens
Trigger: Thrown at src/backend/drivers/ai-tts/providers/speechify/SpeechifyTTSProvider.ts:211 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of HeyPuter/puter@908ec23eda (2026-08-12).
Data as JSON: /api/errors/fd38cb5ef5e6b628.
Report an issue: GitHub.