Commerce CensusContactRequest access

Errors

Errors are JSON, always the same shape, and carry a stable machine-readable `code` alongside a human-readable message. Match on the code; the message is for your logs.

JSON
{ "error": {
    "code": "match_below_threshold",
    "message": "No confident match for that reference.",
    "status": 422,
    "request_id": "req_01JQ8Z3M4K",
    "docs": "https://commercecensus.com/docs/errors/#match_below_threshold" } }
StatusCodeRetry?Cause
400invalid_requestNoMalformed parameters. Fix the call.
401invalid_keyNoMissing, malformed or revoked key.
403insufficient_scopeNoKey lacks the required scope.
404not_foundNoNo such product, watch or memory.
409cursor_expiredRestartCursor older than 24 hours.
422match_below_thresholdNoReference resolved nothing confident. Not an error to retry — send more identifying detail.
429rate_limitedYesBack off by Retry-After, with jitter.
500internalYesOurs. Retry with backoff; if it persists, send the request_id.
503source_unavailableYesAn upstream seller is not answering. Cached values still return with an older observed_at.

422 is not a failure

`match_below_threshold` means we refused to guess. Returning a low-confidence match silently would be worse: a confidently wrong GTIN corrupts every join built on it. Send more detail, or accept the flagged low-confidence result explicitly with `allow_low_confidence: true`.

Always log request_id

It is on every response, success or failure, and it is the only thing that lets support find your exact call.