Pricing & limits
US$ 0.03 per hour of audio, US$ 0.05 with speaker separation, billed by the second. Prepaid credits, no subscription, and US$ 2 on a new account.
Billing is per hour of audio processed, debited from your prepaid credits when the transcription completes. No subscription, no minimum spend.
Pricing table
| Service | Standard rate | Past 10,000 hours |
|---|---|---|
| Transcription | $0.03/h | $0.02/h |
Transcription with speakers | $0.05/h | $0.03/h |
The volume discount is automatic: once your account's total transcribed hours pass 10,000, the next transcriptions are charged at the reduced rate. No contract, no negotiation.
How billing works
- Every new account gets $2 in credits to start.
- Pricing and balance are in US dollars; the card is charged in Brazilian reais, converted at payment time. The amount in reais is shown before you confirm.
- Cost is computed over the real audio duration, measured during processing: proportional to the second, with no rounding up and no per-transcription minimum. Two minutes at US$ 0.03/h cost US$ 0.001, not one cent.
- The debit happens when the transcription becomes
done. While processing,costis0. - With no balance, new transcriptions are rejected with
402 insufficient_balance. Nothing is deleted. Top up in the dashboard, or enable auto top-up to avoid interruption.
Changed on 2026-08-27. cost, total, reserved and available now come
with fractions of a cent (0.0167), where before they were rounded up to
the whole cent (1). That is what removed the one cent floor per transcript:
five minutes of live audio used to cost 2.4 times the advertised rate and now
costs what the rate says.
If you store these in an integer column, or run them through parseInt,
switch to decimal before reconciling: the truncation is silent, and what
you lose always favours the old rounding. No field name, unit or endpoint
changed.
Checking the balance
GET /v1/balancecurl https://api.transcrevo.com/v1/balance \
-H "Authorization: Bearer $TRANSCREVO_API_KEY"{
"data": {
"currency": "USD",
"total": 187.4062,
"reserved": 40.5,
"available": 146.9062
}
}| Field | What it is |
|---|---|
currency | ISO 4217 currency of the amounts. They come in its minor unit (cents) and are fractional: a short audio costs less than one cent. |
total | Credits on the account. |
reserved | Held by transcriptions already running. Released when each one completes and is charged. |
available | What the next transcription can spend: total minus reserved. |
Hitting 0 on available gets new transcriptions refused with
402 insufficient_balance. It subtracts what is already reserved because
otherwise the API would promise credit another transcription has committed.
Limits
| Limit | Value |
|---|---|
| Max duration per audio | 10 hours |
| Max size per upload | 2 GiB |
| Max size per chunk | 16 MiB |
| Transcript creation | 120/min |
| Concurrent before first top-up | 2 |
| Chunk uploads | 600/min |
| File uploads | 120/min |
Audio longer than 10 hours fails with error.code: "audio_too_long": split the
file before sending. Request limits return 429 rate_limited; wait and retry.
While the account runs on the welcome credit alone, at most 2 transcriptions
process at the same time: a third concurrent one is refused with
429 concurrency_limit. It guards the free credit against abuse rather than
capping a plan: the first top-up lifts it, and nothing is charged or deleted
when it kicks in.
Sending files
Send local audio to the API: one request up to 100 MB, or resumable chunks of up to 16 MiB for files up to 2 GiB, then transcribe by uploadId.
Accuracy & quality
6.34% WER in Portuguese and 4.6% diarization DER, measured by us against human transcripts, with the protocol behind every number stated.