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

# Authentication

> Mint a key on a paid plan. Send it as a bearer token. Keys start mm_live_ and are shown once.

Mint keys at [mediamonster.app/keys](https://mediamonster.app/keys). The same key works for REST and MCP.

<Frame caption="Keys live under Account. Caps are 1 / 10 / 25 on Minotaur / Kraken / Behemoth.">
  <img src="https://mintcdn.com/mediamonster/6KE7jZf5yrnXS2M3/images/screenshots/app-keys.png?fit=max&auto=format&n=6KE7jZf5yrnXS2M3&q=85&s=c95aa477ebb8d083949ebe96b51146ae" alt="API and MCP keys page with one live key named latebite-n8n, prefix mm_live_, and a Revoke control" width="1440" height="900" decoding="async" loading="lazy" data-path="images/screenshots/app-keys.png" />
</Frame>

```bash theme={"theme":{"light":"github-dark","dark":"github-dark"}}
Authorization: Bearer mm_live_…
```

<Info>
  We store a hash. A lost key has to be replaced, not recovered. Copy it when it is shown.
</Info>

<Frame caption="The key is shown once, on a lime panel. Copy it before you leave.">
  <img src="https://mintcdn.com/mediamonster/6KE7jZf5yrnXS2M3/images/screenshots/app-keys-reveal.png?fit=max&auto=format&n=6KE7jZf5yrnXS2M3&q=85&s=d926269a1fc0042929169e6bcf7aa5d4" alt="Copy this now panel with a full mm_live_ key and a Copy button" width="1440" height="900" decoding="async" loading="lazy" data-path="images/screenshots/app-keys-reveal.png" />
</Frame>

## Who can mint a key

| Plan     | Live keys | Requests / minute |
| -------- | --------- | ----------------- |
| Cyclops  | 0         | —                 |
| Minotaur | 1         | 60                |
| Kraken   | 10        | 300               |
| Behemoth | 25        | 1,000             |

The rate limit is counted **per key**, across REST and MCP together. One runaway script does not take down the others.

## Errors

| Status | Code            | Meaning                                      |
| ------ | --------------- | -------------------------------------------- |
| 401    | `missing_key`   | No `Authorization` header                    |
| 401    | `invalid_key`   | Unknown or revoked                           |
| 403    | `plan_required` | The key's plan does not include API access   |
| 429    | `rate_limited`  | Over the per-key ceiling. Wait `retry-after` |

See [Errors](/api/errors).

## Check the account

```bash theme={"theme":{"light":"github-dark","dark":"github-dark"}}
curl https://mediamonster.app/api/v1/me \
  -H "Authorization: Bearer mm_live_…"
```

Returns the plan and credit balance.
