Skip to content

Errors

All errors share a single envelope. Top-level errors mean the whole call failed; per-URL errors inside /batch and /crawl use the same shape.

Envelope

json
{
  "status": "error",
  "error": {
    "code": "FETCH_BLOCKED",
    "message": "Both plain fetch and stealth headless were blocked.",
    "retryable": true
  }
}
FieldNotes
codeMachine-readable code from the table below
messageHuman-readable detail; do not parse
retryableIf true, the same call can succeed on retry. If false, retrying will fail the same way

Codes

Schema & Request Shape

CodeHTTPRetryable
SCHEMA_INVALID400no
SCHEMA_REQUIRED422no
SCHEMA_NOT_ALLOWED400no
TYPE_COERCION_FAILED200no

Quotas & Access

CodeHTTPRetryable
RATE_LIMITED429yes (after Retry-After)
QUOTA_EXCEEDED429no this month
TIER_REQUIRED402no
KEY_LIMIT_REACHED429no
ACCOUNT_SUSPENDED403no

Fetch & Rendering

CodeHTTPRetryable
FETCH_BLOCKED200yes
URL_UNREACHABLE200yes
TIMEOUT200yes

Crawl

CodeHTTPRetryable
CRAWL_LIMIT_REACHED200n/a

LLM

CodeHTTPRetryable
LLM_ERROR200yes
LLM_UNAVAILABLE200yes (back off)
LLM_RATE_LIMITED200yes (back off)
LLM_TIMEOUT200yes
LLM_TRUNCATED200yes
LLM_BLOCKED200no
LLM_EMPTY200yes
LLM_BAD_REQUEST200no

Jobs

CodeHTTPRetryable
JOB_CANCELLEDn/an/a
JOB_NOT_FOUND404no
JOB_FORBIDDEN403no

For retry strategy guidance, see Errors & Retries.

Released under the terms of Runo’s Terms of Use.