Skip to content
Gridlode
Docs · Errors

Errors

Every error uses the same JSON shape and a conventional HTTP status. Errors are never charged.

Error
{
  "request_id": "req_9f1c…",
  "status": "error",
  "credits": { "charged": 0, "balance": 999 },
  "error": {
    "type": "invalid_request",
    "code": "invalid_parameter",
    "message": "One or more parameters are invalid.",
    "docs_url": "https://gridlode.com/docs/errors#invalid_parameter",
    "details": [ { "field": "domain", "message": "Value error, not a valid domain name" } ]
  }
}

Error codes

CodeHTTPMeaning
invalid_parameter400A parameter is missing or invalid. details lists each field.
invalid_json400The POST body isn't a JSON object.
forbidden_host / forbidden_port400The URL points to a private address or a port we don't fetch.
unsupported_content_type400The URL returned something that isn't a web page (image, PDF…).
tld_without_rdap / tld_without_whois400The registry doesn't offer that protocol. Try the other one.
missing_api_key / invalid_api_key401No key, a malformed key, or a revoked key.
insufficient_credits402Your balance can't cover the call.
spend_cap_reached402Your monthly spend cap is reached.
disallowed_by_robots_txt403The site's robots.txt disallows the URL.
account_suspended403Contact [email protected].
unknown_endpoint404There is no engine at that path.
rate_limited429Too many requests. Respect Retry-After.
target_http_403 / target_http_5xx424The target site refused or failed.
fetch_failed / rdap_error / dns_unavailable424The upstream source didn't answer correctly.
worker_unavailable / engine_disabled503Temporary problem on our side. Retry with backoff.
target_timeout / whois_timeout424The target didn't answer in time.

Retrying

Errors from the target site use 424 Failed Dependency: the request was valid, but the site or registry we fetched from failed, refused or timed out. Retry 424, 429 and 503 with exponential backoff (for example 1 s, 2 s, 4 s, then give up). Don't retry 400, 401, 402 or 403 without changing the request.