Quotas & credits
API consumption shares the same monthly quota as the web UI. There is no separate “API quota”. Your plan grants a fixed number of transcripts per billing month, consumed by web and API together.
Plans
| Plan | Price | Transcripts / month | API access |
|---|---|---|---|
| Free | $0 | 10 lifetime | Sync only (single transcripts) |
| Starter | $9 | 1,000 | Full (sync + bulk) |
| Pro | $19 | 5,000 | Full (sync + bulk) |
| Business | $49 | 20,000 | Full (sync + bulk) |
Compare plans on the pricing page.
When credits are deducted
| Action | Charge | Refund? |
|---|---|---|
GET /transcript/:id | 1 credit, charged after the transcript fetch and any format conversion succeed (charge-on-success) | No refund path needed. Failed fetches and failed formats never reach the charge step |
POST /jobs | N credits upfront, where N = number of videos resolved | Per-video failures during processing refund 1 credit each when the job finishes |
DELETE /jobs/:id | Free | Refunds the count of still-pending videos plus any videos that had already failed during processing but had not been refunded yet |
GET /resolve and GET /usage | Free | n/a |
Sync transcripts: charge-on-success
GET /transcript/:id uses a charge-on-success flow:
- Check that at least 1 credit is available
- Fetch the transcript
- Format if a non-JSON format was requested
- Charge 1 credit
- Send the response
A failure at any step before the charge, such as a fetch error or formatter error, never reaches the charge step, so you're not billed and there's no refund window. If another request consumes the remaining quota before the charge, this request returns 402.
Bulk job accounting walkthrough
Example: submit a channel with 500 videos on a Pro plan.
- POST resolves the channel to 500 videos. -500 credits.
- 480 videos succeed, 15 fail with video unavailable, 5 fail with no captions. +20 credits refunded when the job finishes.
- Net spend: 480 credits.
If you cancel mid-flight after 100 videos have processed, the remaining 400 pending credits are refunded.
Quota errors
If you don't have enough credits to fulfill a request, the API returns 402 insufficient_quota with the remaining and needed counts in the message.
Check your current state at any time with GET /api/v1/usage. The endpoint is free, doesn't consume quota, and is safe to poll before submitting bulk work.