429
Retry with backoffRate limited — You spent one of the two rate windows, or have too many requests running at once.
Response body
{ "error": { "code": "rate_limited", … } }
Should you retry?
Yes — with exponential backoff, and honour Retry-After
when it is present.
What it means
One code covers three conditions, because the client action is identical: honour Retry-After. Which one you hit is in error.details. A spent rate window carries window_seconds — 60 for the burst floor, 18000 for the 5-hour budget — and retry_after_seconds, the same value the header carries; an exhausted 5-hour budget returns 18000, not 60, because retrying sooner just hits the same wall. The in-flight limit instead carries concurrency_limit (and no window_seconds), with a Retry-After of 1: your organization already has that many requests running on one API server, and no quota was spent.
Common causes
- A burst spent the 1-minute floor.
- Sustained volume spent the 5-hour budget — the more common case.
- Too many requests running at once — at most 20 per organization on any one API server, HTTP and MCP together.
- Deep `offset` pagination making many small requests instead of following the cursor.
How to fix it
Honour Retry-After exactly. Watch X-RateLimit-Remaining-5h as the primary signal and slow down before you get here. Prefer cursor pagination for large pulls: fewer, fuller pages cost fewer requests. If you parallelize, keep the pool to 10 or fewer concurrent requests.
Endpoints that return this
Read from the OpenAPI specification, so this list cannot claim an endpoint returns a status the contract does not list.
| Method | Endpoint | What it does |
|---|---|---|
| GET | /v4/jobs | Search jobs |
| GET | /v4/jobs/search | Search jobs (alias of /v4/jobs) |
| GET | /v4/jobs/options | Job facet values |
| GET | /v4/jobs/{job_id} | One job by global id |
| GET | /v4/autocomplete/titles | Job-title suggestions |
| GET | /v4/autocomplete/sources | Source (company) suggestions |
| GET | /v4/sources | Search sources (companies) |
| GET | /v4/sources/search | Search sources (alias of /v4/sources) |
| GET | /v4/sources/options | Source facet values |
| GET | /v4/sources-id/{source_id} | One source by id |
| GET | /v4/sources-url/{url_source} | One source by URL |
| GET | /v4/sources/{url_source} | One source by URL (alias) |
| GET | /v4/sources-id/{source_id}/jobs | A source's jobs (by id) |
| GET | /v4/sources/{url_source}/jobs | A source's jobs (by URL) |
| GET | /v4/sources-id/{source_id}/related | Related sources (by id) |
| GET | /v4/sources/{url_source}/related | Related sources (by URL) |
| GET | /v4/jobs/hidden | Jobs you have hidden |
| POST | /v4/jobs/hidden/{job_id} | Hide a job |
| DELETE | /v4/jobs/hidden/{job_id} | Un-hide a job |
| GET | /v4/sources/blocked | Companies you have blocked |
| POST | /v4/sources/blocked/{source_id} | Block a company |
| DELETE | /v4/sources/blocked/{source_id} | Unblock a company |
| GET | /v4/me | Your plan and current quota |
| GET | /v4/usage | Daily usage history |
| POST | /mcp | MCP server (JSON-RPC 2.0) |