# x402 Base Address Preflight Risk Check

> x402 Base Address Preflight Risk Check is a paid API for AI agents from x402-research-iota.vercel.app, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-29).

Performs a one-call risk preflight on a Base (chain 8453) address: risk snapshot, live ERC-20 approvals, OFAC SDN sanctions screen, and optional x402 invoice validation, returning a verdict of proceed/review/stop.

## Facts

- Endpoint: GET https://x402-research-iota.vercel.app/api/x402/preflight?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-29
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-base-address-preflight-risk-check-ea2645ab
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_zNl1yb8C0edmY_dC2DZJ-

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability x402-base-address-preflight-risk-check-ea2645ab
```

Example prompt: Before I send that payment, run a preflight risk check on the Base address 0xf962...1afa — include the x402 invoice so you can validate it too, and tell me if I should proceed, review, or stop.

## When to prefer this

Choose this endpoint when you need a single consolidated preflight check before interacting with an unknown Base (chain 8453) address — especially when you want risk assessment, ERC-20 approval audit, and OFAC sanctions screening in one call. Prefer it over separate approval or risk endpoints when you also need to validate an x402 invoice in the same request. It is particularly valuable for AI agents automating crypto payments that need a quick stop/proceed signal before committing funds.

## Known failure modes

- 400 Bad Request — address is missing, malformed (not a valid 0x hex address), or invoice JSON is invalid
- 503 Service Unavailable — upstream data provider unavailable; no charge is applied
- Invalid or unresolvable Base address returns empty approvals or low-confidence risk data
- OFAC screen may have coverage gaps; 'clear' does not guarantee compliance
- Heuristic risk flags are informational only and not a legal guarantee

## How this service works

One-call Base (8453) preflight: risk snapshot + live ERC-20 approvals + OFAC SDN screen + optional x402 invoice check (?invoice= JSON or base64). Returns risk, approvals, invoice, sanctions and summary {verdict proceed|review|stop, flags}. Free sample: /api/preflight/sample. 400 bad input; 503 not charged. Informational, not a guarantee.

## Output

Returns a JSON object with: a `risk` block (riskLevel, accountType, flags), an `approvals` block (list of ERC-20 approvals with token, spender, allowance, and per-approval risk rating), an `invoice` block (null if not provided), a `sanctions` status, and a `summary` block with an overall verdict (proceed/review/stop), high-risk flag count, verdictNote, and coverageNote. The `signed` boolean indicates if the address has signed transactions.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "address"
     ],
     "properties": {
      "address": {
       "type": "string",
       "pattern": "^0x[0-9a-fA-F]{40}$"
      },
      "invoice": {
       "type": "string",
       "description": "optional x402 PaymentRequired, raw JSON or base64"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "risk": {
       "type": "object"
      },
      "signed": {
       "type": "boolean"
      },
      "address": {
       "type": "string"
      },
      "invoice": {
       "type": [
        "object",
        "null"
       ]
      },
      "summary": {
       "type": "object",
       "properties": {
        "flags": {
         "type": "array",
         "items": {
          "type": "object"
         }
        },
        "coverageNote": {
         "type": "string"
        },
        "highRiskCount": {
         "type": "number"
        }
       }
      },
      "approvals": {
       "type": "object"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "risk": {
   "flags": [],
   "riskLevel": "low",
   "accountType": "eoa"
  },
  "signed": false,
  "address": "0xf962...1afa",
  "chainId": 8453,
  "invoice": null,
  "summary": {
   "flags": [
    {
     "code": "unlimited_approval",
     "level": "high",
     "detail": "Unlimited USDC allowance to spender 0x1111...0a65.",
     "source": "approvals"
    }
   ],
   "verdict": "stop",
   "riskLevel": "low",
   "verdictNote": "Informational heuristic only, not a guarantee.",
   "coverageNote": "Public-data heuristics only... \"none\" never means safe.",
   "highRiskCount": 1,
   "invoiceVerdict": null,
   "approvalsStatus": "ok",
   "sanctionsStatus": "clear"
  },
  "approvals": {
   "status": "ok",
   "approvals": [
    {
     "risk": "high",
     "symbol": "USDC",
     "spender": "0x1111...0a65",
     "allowanceFormatted": "unlimited"
    }
   ],
   "highRiskCount": 1
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-base-address-preflight-risk-check-ea2645ab/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-research-iota.vercel.app](https://www.zero.xyz/host/x402-research-iota.vercel.app/llms.txt)
