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

> ## Agent Instructions
> Follow the content contract in AGENTS.md.
> Treat text as the canonical explanation; video and screenshots enhance it.
> Do not publish unverified product behavior or duplicate an existing canonical article.

# Rate limits

> Review StefanBrain Developer API request limits, token limits, and rate-limit responses by plan.

Request-count limits vary by plan.

| Plan | Per key per minute | Per user per minute | Per user per day |
| - | -: | -: | -: |
| Trial | 20 | 40 | 2,500 |
| Base | 60 | 120 | 10,000 |
| Elite | 120 | 240 | 25,000 |
| CA Pro | 240 | 480 | 50,000 |

* When the active top-up balance is \$100 or more, the effective limits move down one row in this table automatically.
* The `limits` object also reports `global_tokens_per_day` and `per_user_tokens_per_day`, a 10-million-token daily guardrail by default. Both fields are informational; no Developer API surface enforces a daily token limit.
* Per-user overrides are available for production integrations. Contact StefanBrain if you need more throughput.

Spend and throughput are separate limits:

* The API wallet limits wallet-billed spend. A request returns `429 api_wallet_exhausted` when the balance minus active holds is below one hold, so the wallet can refuse new work before \$0. See [Pricing](/developers/pricing#when-the-wallet-runs-low).
* A per-key budget returns `429 api_key_budget_exhausted` when exhausted.
* For standard member accounts, the plan's monthly usage pool controls MCP usage and returns `429 monthly_usage_limit_reached` when exhausted. Contracted partner accounts can have account-specific billing terms.

## Rate-limit response

Each request-limit response includes the user's effective limits, observed counts, and reset time. When `reset_at` is set, the response also includes a `Retry-After` header in seconds:

```json theme={"system"}
{
  "error": {
    "message": "Daily request limit reached (25000/25000 requests today on the Elite plan). Resets at 2026-08-28T00:00:00.000Z. Job status/result polling never counts against rate limits.",
    "type": "rate_limit_error",
    "code": "request_per_day"
  },
  "limits": {
    "per_minute": 120,
    "per_user_per_minute": 240,
    "per_day": 25000,
    "global_tokens_per_day": null,
    "per_user_tokens_per_day": 10000000
  },
  "observed": {
    "minute_count": 3,
    "user_minute_count": 3,
    "day_count": 25001
  },
  "plan": "elite",
  "reset_at": "2026-08-28T00:00:00.000Z",
  "state": {
    "current": "normal",
    "expires_at": null
  }
}
```

The `code` names the limit you reached:

| Code | Limit | Resets |
| - | - | - |
| `request_per_minute` | Requests per key per minute | At the start of the next UTC minute |
| `request_per_minute_user` | Requests per user per minute | At the start of the next UTC minute |
| `request_per_day` | Requests per user per day | At the next UTC midnight |
| `user_throttled` | StefanBrain temporarily throttled the account | When the throttle expires |
| `user_suspended` | StefanBrain suspended the account's Developer API access | When the suspension expires |

When a throttle or suspension has no end time, `reset_at` is `null` and the response has no `Retry-After` header. For request limits, the observed counts include the rejected call, so retries sent while you are limited still count.

Retry after the returned delay. Run status, run events, job status, job results, and cancellation do not consume request limits. Other reads do not either: the tool catalog, file listings and downloads, job artifacts, transcript reads, and feedback reads over REST. Calls that start work, file uploads, transcript requests, and feedback reports count.

Feedback reports also have their own limit of 60 per account in any rolling hour, which returns `429 feedback_rate_limited`. See [Agent feedback](/developers/feedback).

See [Errors and retries](/developers/errors-and-retries) for retry boundaries.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.