HeyPuter/puter · error · HttpError
insufficient_funds
insufficient_funds
Error message
Insufficient funds
What it means
Error "Insufficient funds" thrown in HeyPuter/puter.
Source
Thrown at src/backend/drivers/ai-tts/providers/speechify/SpeechifyTTSProvider.ts:162
},
},
);
}
const voice = voiceArg || DEFAULT_VOICE;
const format = output_format || response_format || 'mp3';
const actor = Context.get('actor')!;
const usageType = `speechify:${model}:character`;
const ucentsPerChar = SPEECHIFY_TTS_COSTS[model] ?? 0;
const totalCost = ucentsPerChar * text.length;
const usageAllowed = await this.meteringService.hasEnoughCredits(
actor,
totalCost,
);
if (!usageAllowed) {
throw new HttpError(402, 'Insufficient funds', {
legacyCode: 'insufficient_funds',
});
}
// Speechify's synthesis endpoint expects SSML; wrap plain text so
// callers can keep passing bare strings like every other provider.
const input = /<speak[\s>]/i.test(text)
? text
: `<speak>${text}</speak>`;
const response = await fetch(`${API_BASE}/v1/audio/speech`, {
method: 'POST',
headers: {
Authorization: `Bearer ${this.#apiKey}`,
'Content-Type': 'application/json',
[CALLER_HEADER]: CALLER_VALUE,
},
body: JSON.stringify({View on GitHub (pinned to 908ec23eda)
Solutions
- Add credits to the account before retrying the TTS request.
- Reduce usage or upgrade the plan to restore sufficient funds.
When it happens
Trigger: Thrown at src/backend/drivers/ai-tts/providers/speechify/SpeechifyTTSProvider.ts:162 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/94f284892ae68534.
Report an issue: GitHub.