Reference
Errors & limits
Errors come back as JSON with a human-readable message. Retry only what the table says is safe to retry.
Error shape
4xx / 5xx
{ "error": "Maximum 10 URLs per job", "code": "…" }error is always present. code is present for authentication, routing, and request-format errors.
Status codes
| Status | When | Retry? |
|---|---|---|
| 400 | Missing prompt, invalid URL, more than 10 URLs, body not JSON, or no URL and nothing to search | No. Fix the request. |
| 401 | missing_api_key or invalid_api_key | No. Check the key. |
| 404 | Job not found, expired (30 minutes after completion), or created by another account | No |
| 409 | Download requested before the job completed | Yes, after polling |
| 422 | No URL given and no saved source matches the request | No. Add a URL. |
| 429 | Daily extract limit reached | Tomorrow (00:00 UTC) |
| 500 | Something broke on our side | Yes, once, after a few seconds |
| 502 | The language model that reads your prompt was unavailable | Yes, after a few seconds |
Limits
| Limit | Free plan |
|---|---|
| Extracts per day | 20 per account, across all keys. Resets 00:00 UTC. |
| Pages per extract | 10 |
| Request body | 64 KB |
| Result retention | 30 minutes after completion |
| Preview rows in GET /v1/jobs/{id} | 50 (download for all rows) |
| Active API keys | 10 per account |
POST /v1/jobs responses include X-RateLimit-Limit and X-RateLimit-Remaining headers.
Pages we won’t open
These don’t fail the job. The page is skipped and its urlResults entry says why: robots.txt disallows the path, the site serves a CAPTCHA or other human check, the site rate-limits us, or the page needs a login. We don’t retry or work around these.