Skip to main content
There are two kinds of “something is wrong,” and they are handled differently.
  • A refused value is a successful 200 containing { "unavailable": "..." }. It is a product fact — never an error, never retry it. See below.
  • A request error is a non-2xx HTTP status. The table is the whole surface.

Request errors

HTTP refusals are not wrapped in { "error": ... }. Schema-2 failures use typed envelopes; legacy schema-1 requests can still use the frozen flat value-refusal shape:
HTTP 413
Schema 1 validation errors follow FastAPI’s validation shape, so you can log exactly which field was wrong:
HTTP 422
Schema 2 validation errors use the schema-2 envelope:
Schema 2 HTTP 422
See Errors and retries for a retry loop, and Plans and limits for the two 429 windows.

Refusal reasons

Refusals are not in the table above — they live inside a 200 and are enumerated by the API itself. Fetch the catalog at runtime instead of hard-coding:
stock_reference catalog=refusal_tokens (trimmed)
Each entry maps a refusal token to a recovery action and a human note. Common field-level reasons include not_reported (the concept was not tagged in the filing), not_applicable_for_shape (the statement shape structurally lacks that line), and cash_return_unavailable; tool-level reasons include no_match, no_insider_filings, and no_tracked_holders.