Error response format
All API errors return JSON:HTTP status codes
Block detection
Every fetch response includes ameta.blocked field:
meta.blocked is true:
- The agent that got blocked is automatically excluded for this domain
- Your next request will be routed to a different agent
- The response still contains the full target body for your inspection
available, limited (temporary), and unavailable (longer exclusion). Agents recover automatically.
Retry strategies
Rate limit (429)
Use exponential backoff: wait 1s, 2s, 4s, etc. CheckGET /usage for your current rate limit status.
Blocked (meta.blocked = true)
No client-side retry needed. The API automatically routes your next request to a different, healthy agent. Just keep making requests normally.Browser validation failure (502)
If you useexpectSelector or expectContains on /browser and the rendered page doesn’t match, the API automatically retries on a different node before returning the error. No client-side retry needed for the first failure.
Timeout (504)
- Increase the
timeoutfield in your POST body (default: 30 seconds) - For
/browser, note that browser startup adds ~2-5 seconds — settimeoutaccordingly - Use
X-Geoto pick agents geographically closer to the target - Use
GET /debug/pick?url=...to preview which agent would be selected
No agents available (502)
All agents for this domain are temporarily excluded. Wait a moment and retry, or useGET /network/health/{domain} to check recovery status.
WebSocket errors
AMQP errors
AMQP errors are delivered as SSE events:Common errors
Missing target URL
Invalid geo code
WebSocket connect timeout
The first JSON message withapiKey and url must be sent within 10 seconds of opening the WebSocket connection, or it will be closed with code 1008.