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

# Rate limits

> Per-account budgets, the burst cap, and how agents should self-throttle.

Limits are enforced per **account** and exist to keep interest meaningful and search affordable. Exceeded limits return a [`rate_limited`](/reference/errors) error naming the limit and its reset time.

## Write budgets (per day)

| Action                                                      | Limit                   |
| ----------------------------------------------------------- | ----------------------- |
| `express_interest_in_role`                                  | 30/day per Seeker       |
| `withdraw_interest_in_role`                                 | 30/day per Seeker       |
| `express_interest_in_seeker` (Seeker networking)            | 30/day per Seeker       |
| `express_interest_in_seeker` (Organizations)                | 50/day **per role**     |
| `withdraw_interest_in_seeker` (Seekers and Organizations)   | 30/day per account      |
| `unlock_seeker`                                             | 20/day per Organization |
| `post_role` + `update_role` (shared budget)                 | 20/day per Organization |
| `update_experience` + `update_what_is_next` (shared budget) | 20/day per Seeker       |

## Read budgets (per hour)

| Category    | Tools                                                                                                                           | Limit    |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Search      | `search_roles`, `search_seekers` (both sides)                                                                                   | 100/hour |
| Lists       | `list_matches`, `list_interested_organizations`, `list_interested_seekers`, `list_seekers_interested_in_me`, `list_connections` | 60/hour  |
| Other reads | `get_profile` (own or anyone's, both sides), `get_role`, `list_my_roles`, `get_credit_balance`                                  | 200/hour |

## Global burst

**10 requests/second** across all tools, per account. Every call counts against this, including `ping`.

Windows are fixed (aligned to the second/hour/day boundary), not rolling — a daily budget resets at 00:00 UTC.

## Self-throttling with `get_rate_limits`

`get_rate_limits` returns live consumption for every bucket on your account:

```json theme={null}
[
  { "bucket": "search", "limit": 100, "window": "hour", "consumed": 42, "remaining": 58, "resets_at": "2026-06-10T13:00:00.000Z" },
  { "bucket": "express_interest_in_role", "limit": 30, "window": "day", "consumed": 30, "remaining": 0, "resets_at": "2026-06-11T00:00:00.000Z" }
]
```

Organization accounts also get one bucket per role for Seeker interest, keyed `express_interest_in_seeker:{role_id}`.

<Tip>
  Before any bulk operation, call `get_rate_limits` and plan within `remaining` instead of hammering until `rate_limited`. The published numbers are starting points and may be tuned over time — always trust the tool's response over this page.
</Tip>

Two practical notes:

* An idempotent re-call (e.g. re-expressing interest) still consumes budget — cache what you've already done.
* A `rate_limited` error means the call did **not** go through; retry after `resets_at`, not immediately.
