{"record":{"id":"0bb4be0ee3d19dfe","repo":"HeyPuter/puter","slug":"upstream-bad-request-0bb4be","errorCode":"upstream_bad_request","errorMessage":"Speechify TTS did not return audio data","messagePattern":"Speechify TTS did not return audio data","errorType":"http","errorClass":"HttpError","httpStatus":400,"severity":"error","filePath":"src/backend/drivers/ai-tts/providers/speechify/SpeechifyTTSProvider.ts","lineNumber":228,"sourceCode":"                      : 400;\n            throw new HttpError(\n                exposedStatus,\n                errText ||\n                    `Speechify TTS request failed (status ${response.status})`,\n                {\n                    legacyCode,\n                    fields: {\n                        provider: 'speechify',\n                        upstreamStatus: response.status,\n                    },\n                },\n            );\n        }\n\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const data: any = await response.json();\n        if (!data?.audio_data) {\n            throw new HttpError(\n                400,\n                'Speechify TTS did not return audio data',\n                {\n                    legacyCode: 'upstream_bad_request',\n                    fields: { provider: 'speechify' },\n                },\n            );\n        }\n\n        const buffer = Buffer.from(data.audio_data, 'base64');\n        const stream = Readable.from(buffer);\n        const contentType =\n            CONTENT_TYPES[data.audio_format ?? format] || 'audio/mpeg';\n\n        this.meteringService.incrementUsage(\n            actor,\n            usageType,\n            text.length,","sourceCodeStart":210,"sourceCodeEnd":246,"githubUrl":"https://github.com/HeyPuter/puter/blob/908ec23eda38526170322c3edf71ba45ecb1ca95/src/backend/drivers/ai-tts/providers/speechify/SpeechifyTTSProvider.ts#L210-L246","documentation":"Error \"Speechify TTS did not return audio data\" thrown in HeyPuter/puter.","triggerScenarios":"Thrown at src/backend/drivers/ai-tts/providers/speechify/SpeechifyTTSProvider.ts:228 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the request; if it persists, verify the model and parameters are supported by Speechify.","Check the Speechify response payload handling for changes in the API format."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"908ec23eda38526170322c3edf71ba45ecb1ca95","analyzedAt":"2026-08-12T20:53:15.911Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}