> ## Documentation Index
> Fetch the complete documentation index at: https://docs.transcriptmagic.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Credits

> How API billing works — one credit per successful call.

The TranscriptMagic API uses a simple credit model: every successful response (HTTP 200) deducts exactly **1 credit** from your account balance. Length of the video doesn't matter — a 30-second YouTube Short and a 4-hour livestream replay each cost 1 credit.

## Free credits

Every account starts with free credits — enough to integrate, test, and ship a small project before you ever need to pay. No card required to sign up.

## Buying more

Top up on the [credits page](https://transcriptmagic.com/credits/). Pricing is volume-tiered; larger packs come with a lower per-credit cost.

## Checking your balance

Every authenticated API response includes a `credits` field showing your **remaining** balance after that call:

```json theme={null}
{
  "transcript": "...",
  "credits": 997
}
```

You don't need a separate billing call — every transcript response is also a balance check. For an explicit read without consuming a credit (pre-flight checks, CI smoke tests, UI shells), call [`GET /api/balance`](/api-reference/balance).

## Cache hits don't charge

If you request a URL that another user has already transcribed within the cache window, you get a 200 with `cached: true` in the body and **no credit is deducted**. Your `credits` value is unchanged on the response.

```json theme={null}
{
  "transcript": "...",
  "cached": true,
  "credits": 997
}
```

## What doesn't cost credits

* Failed requests (`4xx`/`5xx` responses) — you're never charged for an error.
* Auth errors, rate-limit errors, upstream-platform errors — none of them deduct.
* Cache hits, as described above.

You only pay for transcripts you actually receive fresh.

## Running out

When your balance hits 0, the next request returns `403 Forbidden`:

```json theme={null}
{
  "error": "no_credits",
  "credits": 0,
  "message": "Out of credits. Please upgrade to continue."
}
```

Top up at [/credits](https://transcriptmagic.com/credits/) and the next call goes through immediately — no key change needed. Match on the `error` slug `"no_credits"`, not the human-readable `message`.

## Need bulk pricing?

If you're processing more than \~10k transcripts a month, email [hello@transcriptmagic.com](mailto:hello@transcriptmagic.com) — we offer custom pricing and lifted rate limits for verified production accounts.
