Docs

Errors

Every error code the Verify API returns, what causes it and what to do.

Errors are JSON with a stable error code. Most also have a human-readable message, and some add fields (max, states, type, fieldgeist_id):

{
  "error": "insufficient_credit",
  "message": "This team is out of credit. Add credits at https://app.fieldgeist.com/billing."
}

Branch on the HTTP status and error. Don't parse message: its wording can change.

Errors aren't billed. Only 200 answers are.

Order of checks

A request is checked in this order, and the first failure is the answer:

  1. API key (401, 429, 503 unavailable).
  2. Team status (403 team_paused, then 402). These are checked before the body, so a paused team gets 403 even for a malformed request.
  3. Request (400, 413, 422).
  4. Answer (200, 404, 500, 503 matchkey_unavailable).

All errors

StatuserrorEndpointsCauseWhat to do
400invalid_jsonParse, LookupThe body isn't valid JSON.Fix the body.
400line_requiredParseThe body has no line string.Send {"line": "..."}.
400components_requiredLookupThe body isn't an object, or a component isn't a string or number.Send components or a parse response.
400street_requiredLookupNo streetName.Add the street.
400location_requiredLookupNo zip5 or city; or a city in more than one state with no state (adds states, the number of states).Add zip5, or city and state.
400invalid_idLookup by IDThe ID isn't adr_ plus a 26-character ULID.Check the ID.
401invalid_api_keyAllThe Authorization header is malformed, or the key is unknown or revoked. Comes with WWW-Authenticate: Bearer.Send Authorization: Bearer <key> with an active key.
402insufficient_creditAllThe team's credit balance is used up.Add credits in the portal's Billing page, or turn on auto recharge. Requests resume within minutes.
402budget_exceededAllThe team reached the monthly budget it set.Raise or remove the budget in Billing. Budgets count spend per calendar month (UTC).
403team_pausedAllFieldgeist paused the team's API access.Contact support@fieldgeist.com.
404not_foundLookup by IDNo parcel has this ID. Echoes fieldgeist_id. Not billed.Look the address up again.
413line_too_longParseline is longer than 256 characters. Adds max.Shorten the line.
422unsupported_typeLookupThe address type isn't street. Echoes type.Only street addresses have parcels.
422unsupported_id_typeLookup by IDA building ID (bld_…).Use a parcel's adr_ ID.
429rate_limitedAllToo many different unrecognized keys from your IP address in a minute.Fix the key, wait a minute. See Rate limits.
500internal_errorAllSomething failed on our side.Retry with backoff. If it persists, contact support with the x-request-id.
503unavailableAllWe couldn't check the API key.Retry shortly.
503matchkey_unavailableLookup, Lookup by IDThe parcel index is unavailable.Retry later.

A request to a path that doesn't exist (or with the wrong method, such as GET /v1/verify/parse) gets 404 with a plain-text body, not JSON.

402 and 403 in detail

The three refusals for a valid key:

{ "error": "insufficient_credit", "message": "This team is out of credit. Add credits at https://app.fieldgeist.com/billing." }
{ "error": "budget_exceeded", "message": "This team reached its monthly budget. Raise it at https://app.fieldgeist.com/billing." }
{ "error": "team_paused", "message": "This team's API access is paused. Contact support@fieldgeist.com." }
  • Refused requests appear in the portal's Logs with their error code and request ID. They aren't billed.
  • A team's billing status is updated shortly after the spend that changes it, so a few requests can be answered after the balance reaches zero. After you add credits, requests resume within minutes.

Retrying

Every Verify endpoint only reads data, so retrying is safe. Note that each 200 is billed, including a retried one.

StatusRetry?
400, 401, 404, 413, 422No. Fix the request.
402, 403Not until the team's billing or status changes.
429After a minute, with a valid key.
500, 503Yes, with exponential backoff.

Request IDs

Every request made with a valid key, including refused ones, gets an x-request-id response header (req_ followed by 26 characters). The same ID is on the request's row in Logs. Include it when you write to support@fieldgeist.com.

On this page