BixelDocs

Errors

Every problem code the API answers, and what to do about each.

Errors are application/problem+json (RFC 9457) with a stable code, a human detail, usually a hint with the fix in-band, and a docs_url. If your integration switches on anything, switch on code.

{
  "type": "https://api.bixel.com/problems/key_required",
  "title": "API key required",
  "status": 401,
  "code": "key_required",
  "detail": "Change-event values require a free API key.",
  "hint": "Sign in and mint a free key at https://bixel.com/account/ — the open tier needs none.",
  "docs_url": "https://bixel.com/docs/api"
}

The codes

CodeStatusWhat happenedWhat to do
company_not_found404No company matches the identifierResolve names via GET /v1/search?q= — identifiers are apex domains
invalid_identifier400Not a valid domain or slugUse the apex domain, e.g. /v1/companies/pinecone.io
category_not_found404No category matches the slugList slugs via GET /v1/categories
missing_parameter400A required query parameter is absentThe detail names it
invalid_parameter400A parameter failed validationThe detail carries the accepted values
invalid_cursor400The pagination cursor was alteredPass meta.next_cursor back exactly as received
invalid_body400The JSON body failed validationThe detail names the field
companies_unresolved400Some identifiers in a batch match no covered company; nothing was createdThe detail lists them; resolve names via GET /v1/resolve first
account_key_required403Watch and claim resources belong to an account; the credential has no owning accountUse a key minted at bixel.com/account, or sign in through the connector
watch_limit_reached403Your plan's watch capacity (endpoints or watched companies) is used upCompare plans at bixel.com/pricing
subscription_not_found404No watch subscription with that id on this accountGET /v1/watch/subscriptions
endpoint_not_found404No webhook endpoint with that id on this accountGET /v1/watch/endpoints
delivery_not_found404No webhook delivery with that id on this accountGET /v1/watch/endpoints/{id}/deliveries
claim_not_found404No domain claim with that id on this accountGET /v1/claims
claim_not_verified409Declarations need a verified claimComplete the method's proof, then POST /v1/claims/{id}/verify
claim_verification_failed422The proof for the claim was not foundDNS can take up to an hour to propagate; retry
claim_domain_not_covered422The domain does not resolve to a Bixel brand yetGET /v1/resolve?domain= first; request coverage if it is unresolved
claim_limit_reached403Too many pending claims on the accountVerify or let pending claims age out
key_required401A keyed capability was called keylessMint a free key at bixel.com/account — the open tier needs none
invalid_key401The key is unknown, revoked, or expiredCheck it, or mint a new one
rate_limited429A window is exhaustedHonor Retry-After; RateLimit-Policy shows both windows
rate_limiter_unavailable503The limit store is unreachable, so keyless calls fail closedTransient; honor Retry-After (keyed calls are unaffected)
credits_exhausted429The account's monthly credits and pay-as-you-go balance are both spentTop up or raise the cap at bixel.com/account/billing; the reset moment is the X-Bixel-Credits-Reset header
upgrade_required403A Pro capability on a free credential (the 365-day trajectory window, full change-event depth)Upgrade at bixel.com/pricing; free keys keep current state + 90 days of history values
not_yet_available501A reserved parameter is specified but not served yetDrop the parameter; it will light up without a contract change
fact_not_found404The company has no current fact with that keyList keys via GET /v1/companies/{company}/facts
proof_not_available404The fact has no stored capture behind itExpected for fed-forward network signals; not an error to retry
proof_not_yet_anchored503The capture postdates the last anchored exportRetry after the next twice-weekly anchoring run (Retry-After is set)
proof_unavailable503The evidence store could not be reachedTransient; retry shortly
capture_not_found404No capture matches that idTake capture ids from fact payloads, never construct them
raw_not_stored404The capture predates raw storageExpected for the earliest era; the manifest row still verifies
capture_integrity_error503The stored bytes failed their own hash check on readNever served silently; report it if you see one

Reading 401 vs 403 on MCP

A keyless or dead-credential MCP request answers 401 with OAuth discovery metadata — that is the sign-in trigger, not a failure. A 403 upgrade_required means the credential authenticated fine and the account tier is the only thing standing; agents should relay the hint rather than retry.

On this page