Scout

Errors

All JSON errors share one shape. Use code for branching; retryable tells you if a retry may help.

json
{
  "error": "Human readable message",
  "code": "TIMEOUT",
  "retryable": true,
  "details": {},
  "captcha_detected": false
}
CodeHTTPRetryMeaning
VALIDATION_FAILED400noBad request body
INVALID_URL400noMalformed / disallowed URL
ROBOTS_BLOCKED400norobots.txt Disallow
PRIVATE_NETWORK_BLOCKED400noSSRF / private IP
SELECTOR_NOT_FOUND400nowait_for_selector missed
UNAUTHORIZED401noMissing/invalid API key
CREDITS_EXHAUSTED402noWallet empty and PAYG off
DOMAIN_NOT_VERIFIED403noOwnership required
DOMAIN_VERIFY_EXPIRED403noRe-verify needed
FORBIDDEN403noTier/policy (e.g. evaluate)
NOT_FOUND404noMissing resource
CAPTCHA_DETECTED422noChallenge page hard-fail
RATE_LIMITED429yesRate limit
TIMEOUT504yesNavigation/wait timeout
DNS_FAILED502yesDNS resolution
NAVIGATION_FAILED502yesBrowser navigation
BROWSER_UNAVAILABLE502yesChromium not installed
INTERNAL_ERROR500/502yesUnexpected

Successful extract/inspect responses may also include captcha_detected and captcha_signals (heuristics only — not a bypass).