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

# session_cap_exceeded

> 403 permission — the requested max_spend_usd exceeds this key's per-session cap.

**HTTP 403 · type `permission`.** The `max_spend_usd` you asked for is above the
key's `max_spend_usd_per_session` cap. Caps are permissions, not rates — this is a
per-key guardrail set in the dashboard (new keys default to \$5 per session), and the
gateway refuses the reservation before anything runs. Nothing was charged.

## The shape

```json theme={null}
{
  "error": {
    "type": "permission",
    "code": "session_cap_exceeded",
    "message": "This key caps sessions at $5.00; the request asked for $12.00.",
    "doc_url": "https://docs.fiveninelabs.com/errors/session_cap_exceeded",
    "request_id": "req_9ya03k",
    "cap_usd": 5,
    "requested_usd": 12
  }
}
```

## How to fix

* Lower `max_spend_usd` to `cap_usd` or below. Note the ceiling is per **run** — a
  session's follow-up re-aims and refreshes each get their own reservation under the
  same cap, so a long investigation doesn't need one giant budget up front.
* Or raise the key's cap in the dashboard (Keys → the key → per-session cap), if you
  own that decision.
* Check the current caps with `GET /v1/me`.

## Reproduce it

Ask for more than your key's cap (visible in `GET /v1/me`; default \$5):

```bash theme={null}
curl https://api.fiveninelabs.com/v1/sessions \
  -H "Authorization: Bearer $FIVENINE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "vinyl records under $30", "max_spend_usd": 1000}'
```

The refusal happens at reservation time, so this curl is safe — it can never spend.
