What things cost
| Product | Cost |
|---|---|
Text to speech (v0) | 1 credit per input character |
text (after trimming whitespace). Each response reports the exact charge:
- Synchronous
POST /v1/tts→Credit-Utilizedresponse header - Streaming
POST /v1/tts/stream→Credit-Utilizedresponse header - WebSocket →
credits_utilizedfield on eachaudio.donemessage
When credits are charged
Synchronous and HTTP streaming: up front
Synchronous and HTTP streaming: up front
The full cost (character count × 1) is debited before generation begins. If the generation fails, the charge is refunded (see below).
WebSocket: per sentence
WebSocket: per sentence
Credits are charged sentence by sentence, as each sentence finishes synthesizing, based on the characters actually spoken. A long session spreads its cost across many small debits rather than one up-front charge.
Failed generations are refunded
You are not charged for audio you don’t receive. If a generation fails after credits were debited, Chariot refunds them automatically:- Synchronous, a failed
POST /v1/ttsrefunds the full charge and returns a500error. - HTTP streaming, if the stream fails partway, you keep whatever audio already streamed and the charge is fully refunded.
- WebSocket, billing is per sentence, so a mid-session failure only ever affects the current sentence; completed sentences stay billed.
Refunds are issued as a new credit grant, so your balance returns to its prior level. The original charge remains visible in your usage history for auditing.
WebSocket grace on the last sentence
On a WebSocket session, each sentence is streamed to you before its charge is applied. If your balance can’t cover a sentence, that already-streamed sentence is delivered free of charge as a one-time grace, then the session closes with code4402 (insufficient credits). No partially-paid or unpaid audio is withheld mid-sentence.
Checking your balance
CallGET /v1/credits:
| Field | Description |
|---|---|
available_credits | Total spendable credits across all active grants. |
next_expiry_at | When the soonest-expiring grant lapses. |
grants | Per-grant breakdown, each with its own amount and expiry. |
How credits are granted and expire
Credits arrive as grants, each with its own expiry:- Subscription cycle, your plan grants credits at the start of each billing cycle. These expire at the end of the cycle, so unused cycle credits don’t roll over indefinitely.
- Adjustments, credits added by Chariot (e.g. support adjustments or refunds).