Errors

The API uses conventional HTTP status codes and returns a typed JSON envelope so failures are easy to branch on programmatically.

Error envelope

Errors share a consistent shape — a top-level error object with a machine-readable code and a human message, plus context fields where useful:

{
  "error": {
    "code": "INVALID_ADDRESS",
    "message": "The provided contract address is not valid for the specified chain",
    "field": "project_address"
  }
}

Status codes

StatusCodeMeaning & fix
400INVALID_ADDRESSAddress malformed for the chain, or an invalid chain. Validate format before sending.
402PAYMENT_REQUIREDNo balance / payment for a paid endpoint. Fund the account or complete the x402 flow.
404PROJECT_NOT_FOUNDNo token found at that address on that chain. Re-check the chain and address.
429RATE_LIMIT_EXCEEDEDWindow exhausted. Wait retry_after_seconds. See Rate limits.
500ANALYSIS_FAILEDAn upstream data source was unavailable. Retry once after a short delay.

Examples

402 — Payment required

{
  "error": {
    "code": "PAYMENT_REQUIRED",
    "message": "Payment of $1.00 required",
    "payment_requirements": { "amount": "1.00", "currency": "USDC", "network": "base-mainnet" }
  }
}

404 — Project not found

{
  "error": {
    "code": "PROJECT_NOT_FOUND",
    "message": "No project found at address 0x… on ethereum",
    "chain": "ethereum",
    "address": "0x…"
  }
}

Handling guidance

Next

Rate limits Limits, headers, and 429 handling. Authentication Resolve 402 payment errors.