DocsBilling and limits

Billing and limits

Plans, top-ups, how minutes are counted, and rate limits.

transcript1 charges per media minute. Check your plan's allowance and limits below, then read how cycle minutes and top-ups are used.

Plans

FreeMonthlyAnnual
Price$0, no card$9 / month$90 / year
Minutes60, granted once1,000 / month1,000 / month
Top-upsNot available$6 per 1,000 minutes$5 per 1,000 minutes
Requests per minute30200300
Active jobs21020

Manage your plan and buy top-ups on the Billing page of the dashboard.

How minutes are counted

  • One credit is one media minute, rounded up. A 61-second video costs 2 minutes, and nothing costs less than 1.
  • YouTube captions and AI transcription cost the same. For captions the video's duration is used, and for speech-to-text the duration of the audio.
  • A video that transcript1 has already processed is billed again like any other transcription. Use reuse_recent=true to get your own recent transcription of the same video back without a new charge. See the API reference.
  • Failed and canceled transcriptions are never charged. Minutes taken for a transcription are returned when it fails or is canceled.

Free minutes

Every account gets 60 free minutes once. They are granted when you verify your email address, or immediately when you sign up with Google. The Free plan does not renew. Until your email address is verified, POST /v1/transcriptions returns 403 email_not_verified.

Cycle minutes and top-ups

Your usable balance has two parts:

  • Cycle minutes are your plan's allowance. They reset at the start of each cycle. Unused cycle minutes do not carry over. The Monthly and Annual plans both include 1,000 minutes a month.
  • Top-up minutes come in packs of 1,000 minutes, from 1 to 20 packs per purchase. You need a paid plan to buy them. Top-up minutes are used after cycle minutes and do not expire while a paid plan is active.

If you cancel a paid plan you return to the Free plan with no cycle minutes. Your top-up minutes are kept but cannot be used until you have a paid plan again. When you upgrade from the Free plan, your remaining free minutes become top-up minutes.

Read your balance

GET /v1/account returns your balance without charging anything:

curl https://api.transcript1.com/v1/account \
  -H "Authorization: Bearer $TRANSCRIPT1_API_KEY"
FieldMeaning
minutes.remainingMinutes you can use right now: cycle, plus topup when topup_usable is true.
minutes.cycleCycle minutes left.
minutes.topupTop-up minutes you own.
minutes.topup_usabletrue while a paid plan is active.
minutes.resets_atWhen the cycle minutes next reset, or null.
limitsYour requests_per_minute and max_active_jobs.

The response also has plan and renews_at.

When you run out, POST /v1/transcriptions returns 402 insufficient_minutes with an action_url that points to the Billing page. We also send one email when your balance reaches 0, at most once per cycle.

Rate limits

Limits apply per account, shared across all of its API keys, dashboard sessions and MCP connections.

  • Requests per minute: 30 on Free, 200 on Monthly and 300 on Annual. Requests are counted in one-minute windows.
  • Every authenticated /v1 response carries X-RateLimit-Limit (your limit) and X-RateLimit-Remaining (requests left in the current window).
  • Over the limit, the API returns 429 rate_limited with a Retry-After header holding the number of seconds until the next window.
  • Chunk uploads authenticate with the upload token and do not count toward the limit.

Active jobs

A transcription is active while its status is queued, fetching or transcribing. The limit is 2 on Free, 10 on Monthly and 20 on Annual. Starting another one above the limit returns 429 too_many_active_jobs with a Retry-After header. Wait for a running transcription to finish, then retry.

A chunked upload that is still awaiting_upload does not count as active, but a team can have at most 20 open uploads. The same 429 too_many_active_jobs code applies. Completing an upload queues it, so completing is checked against the active job limit.

See Errors for how to handle each response.

Updated October 14, 2026