Skip to main content
Errors use application/problem+json and include:
EXPORT_UNAVAILABLE identifies a busy cold-export builder or an export size/time limit. Honor Retry-After and retry the same revision-pinned URL. Download resources sequentially; persistent limit failures require operator review. DATABASE_UNAVAILABLE means the stored serving database is unavailable; neither error manufactures empty inventory or resets successful observation timestamps. Every response includes X-Request-ID; error bodies repeat it as request_id. This is the value an API consumer should include in a support report. Geographic filters require both lat and lng to contain numeric coordinates. Supplying radius_m without coordinates returns 400; the radius is never silently ignored. Zero is a valid coordinate. Product prices use inclusive bounds in minor currency units. price_min_minor must not exceed price_max_minor; equal bounds and either bound alone are supported. Change-history and observed-change filters require a valid calendar date and time with an explicit timezone. Impossible dates such as February 29 in a non-leap year return 400.

Data warnings

Successful responses can include compact, code-only meta.warnings. These are not transport errors. Use the code table rather than displaying a server-supplied sentence verbatim: Inventory objects separately expose their last successful times.retrieved_at, Nektir times.published_at, and last_refresh_attempt. A recent failed attempt never replaces the successful observation timestamp. Utah DABS source-update time remains unknown unless a source explicitly provides it. This invariant is documented here and in /v1/meta; it is not repeated as a warning on every inventory response. The local pilot default is 300 public requests per minute per client address. An online deployment may enforce the same policy at its trusted edge instead. Treat the published Retry-After header as authoritative if deployment policy changes.