LIFT DATA
  • Getting started
  • The contract
  • Errors
  • API reference
Error reference
powered by Zuplo
Errors

Error reference

Error reference

Every failure this API can return is listed below. Each error is an RFC 9457 Problem Detail sent as application/problem+json, and the type member of every error body is a stable URI that resolves to its page in this reference — the link in the body you are holding is the documentation for it. A type never changes without a documented deprecation.

The two 503s are different claims — do not treat them alike

Two errors share status 503 and they must not be read as one:

  • ledger-unreachable — the call was never started and no Credits were consumed. This is only ever sent when the failure was provably reached before any Spend could leave.
  • spend-indeterminate — no claim is made about what was consumed, because the outcome is not known. Any Credit recorded for the call is returned to the Account as a Refund.

A monitor that counts every 503 as "no charge" will misread the second one; a monitor that counts every 503 as "charged" will misread the first. Branch on the type, not the status.

The four 422s are four different things to do

Four errors share status 422, and each asks for a different next action:

  • ambiguous-address — the address matched more than one property. Choose one of the returned candidates, or add a city or ZIP.
  • address-out-of-coverage — the state is not inside current data coverage yet. Coverage is temporary, not a product boundary; the body lists the states covered right now.
  • unscorable-address — the property cannot be scored. Retrying the same address returns the same answer.
  • idempotency-key-conflict — the Idempotency-Key was already used with a different body. Nothing was charged; send the request again with a new key.

All four are refusals about the request, never about our availability — and a client branching on status alone cannot tell them apart. Branch on the type.

Every error

StatusTypeTitleRetryableCredits
401invalid-keyInvalid API KeyNoNone consumed
402insufficient-creditsInsufficient CreditsNoNone consumed
429rate-limitedRate limit exceededYesNone consumed
400invalid-requestMalformed requestNoNone consumed
413payload-too-largeBatch too largeNoNone consumed
503ledger-unreachableLedger unreachableYesNone consumed
503spend-indeterminateSpend outcome indeterminateYesReturned as a Refund if recorded
504upstream-timeoutUpstream service timed outYesRefunded
502upstream-unavailableUpstream service unavailableYesRefunded
422ambiguous-addressAddress is ambiguousNoRefunded
422address-out-of-coverageAddress outside current data coverageNoRefunded
422unscorable-addressAddress cannot be scoredNoRefunded
422idempotency-key-conflictIdempotency-Key conflictNoNone consumed
409duplicate-request-in-flightDuplicate request in flightYesNone consumed
404unknown-endpointNo such endpointNoNone consumed
503call-not-startedCall never startedYesNone consumed

The Credits column is a summary; each page states the full outcome. "Refunded" means the response itself says whether the Refund is applied or pending, and a Refund is visible in the Portal's Ledger history like any other entry.

Last modified on August 11, 2026
On this page
  • The two 503s are different claims — do not treat them alike
  • The four 422s are four different things to do
  • Every error