Documentation

Overview

Tutorials
How-to guides
Infrastructure
Reference
Explanation

Refusals are answers. Only the caller's mistakes are 4xx; a domain's refusal is an answer with a body; an exhausted budget stays 200 because it does not recover with time.

errorWho decidesHTTP (JSON shell)Recovers
not-foundthe domain200no, the question was wrong
invalid-inputthe domain, before any query200no
upstream-unavailablethe domain: the Confederation did not answer or answered wrongly200maybe, state of the source
upstream-busythe polite brake against the federal endpoint200 + retry_after_msyes, the weight is refunded
budget-exhaustedthe gateway200no, new session
rate-limitedthe gateway429 + Retry-Afteryes, after retry_after_ms

The one refusal with its own HTTP status:

HTTP/1.1 429 Too Many Requests
Retry-After: 2

{"error": "rate-limited", "detail": "…", "retry_after_ms": 1500}

The values are an example, the shape is the gateway's.