Usage and limits
Understand transcript allowances, ASR minutes, AI credits, and API limits.
Current API rules
Each new successful transcript consumes 1 transcript from your plan allowance. Speech recognition also consumes ASR minutes. These are separate from AI credits: a zero AI-credit charge does not make transcription unlimited.
| Operation | Transcript allowance | ASR minutes | AI credits |
|---|---|---|---|
| New transcript from existing captions | 1 per successful transcript | 0 | 0 |
| New transcript using speech recognition, including file uploads | 1 per successful transcript | Media duration, rounded up to whole minutes | 0 |
| Cached transcript lookup | 0 | 0 | 0 |
| Transcript job polling or SSE updates | 0 | 0 | 0 |
| Batch submission | 0 at creation; completed items are counted below | 0 at creation | 0 |
| Batch processing | 1 per new successful transcript; cached items consume 0 | Charged for each newly transcribed ASR item | 0 |
| Transcript download or batch export | 0 | 0 | 0 |
| Developer API key creation | 0 | 0 | 0 |
For example, a batch producing 12 new transcripts consumes 12 transcripts, not one. A new 63-second speech transcription consumes 1 transcript and 2 ASR minutes, with 0 AI credits. An extraction that fails releases its reservation instead of counting as a successful transcript.
Developer API key creation and use, transcript downloads, and batch exports require Pro. Creating more API keys does not create more allowance: API keys and the web product share the same account quotas.
Independent quotas
The limits below apply to Pro API key usage. Transcript counts, ASR minutes, and AI credits have separate balances:
| Allowance | Pro monthly | Pro annual |
|---|---|---|
| New successful transcripts | 500 per billing month | 6,000 per billing year |
| ASR minutes | 1,500 per billing month | 18,000 per billing year |
| AI credits for web AI features | 3,000 per billing month | 36,000 per billing year |
| Single media duration cap | No plan cap | No plan cap |
| Items per batch | 20 | 20 |
| Upload size cap | 5 GiB | 5 GiB |
| Requests per minute | 40 | 40 |
Annual allowances are available up front for the billing year, rather than released monthly. Unused cycle allowances do not roll over. Platform-specific media restrictions and processing timeouts still apply even without a plan duration cap.
A submit reserves transcript quota before extraction and releases that reservation on a cache hit, so an exhausted quota can reject a POST /v1/transcript even when the result would have come from cache; use GET /v1/library/transcripts/{platform}/{externalId} to read a result already saved in your account without triggering admission.
Use GET /v1/usage to read the account's used, reserved, and remaining transcript and ASR allowances, together with their reset times. An exhausted transcript allowance is reported as TRANSCRIPT_QUOTA_EXCEEDED; an exhausted ASR allowance as ASR_QUOTA_EXCEEDED. A positive AI-credit balance does not bypass either limit. Submission-time quota rejections return 402; failures reported by job polling appear in the job's failed response.
Rate-limit headers
When public API rate limiting is configured, responses include:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Maximum requests in the current window. |
X-RateLimit-Remaining | Requests remaining in the current window. |
X-RateLimit-Reset | Unix timestamp when the window resets. |
A rate-limited request returns 429 and a Retry-After header. Wait for that interval and retry with exponential backoff and jitter.
Plan-gated responses
Plan gates return 402 with a machine-readable code and action fields:
{
"error": {
"code": "UPGRADE_REQUIRED",
"message": "The API is available on paid plans. Upgrade to use your API key.",
"actionLabel": "Upgrade plan",
"actionUrl": "https://transcript.im/pricing",
"upgrade_url": "https://transcript.im/pricing"
}
}upgrade_url remains an alias for older clients. New clients should prefer actionUrl when it is present.