Tokens
Every request is priced in tokens. One token is one Vietnamese character; other work is priced by what it costs to run.
Rates
| Work | Tokens |
|---|---|
| Vietnamese speech | 1 per character |
| English, French, German, Italian, Spanish, Portuguese | 1 per character |
| Chinese, Japanese, Korean | 3 per character |
| Vietnamese streaming | 1.5 per character |
| Transcription | 8 per second of audio (480 per minute) |
| Creating a voice clone | 5 000 per voice |
These are the defaults; GET /account returns the rates that apply to you in tokens.rates. Characters are counted after the text is cleaned (markdown, links and emoji removed, spaces collapsed), so pasted text costs no more than it reads.
Free tokens and balance
- Every account gets free tokens each day. They refill at local midnight and do not carry over.
- Tokens added to your account (balance) carry over, and are spent only after today's free tokens.
GET /account→tokens:available(free today + balance),freeToday,dailyFree,balance,usedToday,refillsAt.GET /usagelists every spend, refund and top-up, newest first. In Studio: account menu → Token usage.
When tokens are charged
- Speech, podcasts, voice clones: priced before the job starts and charged at once. If the clip or the voice fails, the tokens are refunded in full.
- Streaming: charged when the stream opens; refunded if the engine fails.
- Transcription: the length of a file is only known once it is decoded, so a transcription needs a positive balance to start and is charged for its real length when it finishes. A long file can take the balance slightly below zero.
A request you cannot afford answers 402 with code INSUFFICIENT_TOKENS, the tokens it needed and what is available.