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

StatusWhenRetry?
400Missing prompt, invalid URL, more than 10 URLs, body not JSON, or no URL and nothing to searchNo. Fix the request.
401missing_api_key or invalid_api_keyNo. Check the key.
404Job not found, expired (30 minutes after completion), or created by another accountNo
409Download requested before the job completedYes, after polling
422No URL given and no saved source matches the requestNo. Add a URL.
429Daily extract limit reachedTomorrow (00:00 UTC)
500Something broke on our sideYes, once, after a few seconds
502The language model that reads your prompt was unavailableYes, after a few seconds

Limits

LimitFree plan
Extracts per day20 per account, across all keys. Resets 00:00 UTC.
Pages per extract10
Request body64 KB
Result retention30 minutes after completion
Preview rows in GET /v1/jobs/{id}50 (download for all rows)
Active API keys10 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.