{
"error": "Human readable message",
"code": "TIMEOUT",
"retryable": true,
"details": {},
"captcha_detected": false
}| Code | HTTP | Retry | Meaning |
|---|---|---|---|
VALIDATION_FAILED | 400 | no | Bad request body |
INVALID_URL | 400 | no | Malformed / disallowed URL |
ROBOTS_BLOCKED | 400 | no | robots.txt Disallow |
PRIVATE_NETWORK_BLOCKED | 400 | no | SSRF / private IP |
SELECTOR_NOT_FOUND | 400 | no | wait_for_selector missed |
UNAUTHORIZED | 401 | no | Missing/invalid API key |
CREDITS_EXHAUSTED | 402 | no | Wallet empty and PAYG off |
DOMAIN_NOT_VERIFIED | 403 | no | Ownership required |
DOMAIN_VERIFY_EXPIRED | 403 | no | Re-verify needed |
FORBIDDEN | 403 | no | Tier/policy (e.g. evaluate) |
NOT_FOUND | 404 | no | Missing resource |
CAPTCHA_DETECTED | 422 | no | Challenge page hard-fail |
RATE_LIMITED | 429 | yes | Rate limit |
TIMEOUT | 504 | yes | Navigation/wait timeout |
DNS_FAILED | 502 | yes | DNS resolution |
NAVIGATION_FAILED | 502 | yes | Browser navigation |
BROWSER_UNAVAILABLE | 502 | yes | Chromium not installed |
INTERNAL_ERROR | 500/502 | yes | Unexpected |
Successful extract/inspect responses may also include captcha_detected and captcha_signals (heuristics only — not a bypass).