# ChainWard API: Counterparty Risk Check (Per Call)

> ChainWard API: Counterparty Risk Check (Per Call) is a paid API for AI agents from api.chainward.ai, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-18).

Returns a pay/hold/unknown risk verdict with supporting evidence for a Base or BNB Chain address before a payment is made, including optional OFAC sanctions screening.

## Facts

- Endpoint: GET https://api.chainward.ai/api/risk/counterparty?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-18
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/chainward-api-counterparty-risk-check-per-call-b11e8eb9
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Fy-pQ_Hr1tjFztrxQ7TlQ

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 chainward-api-counterparty-risk-check-per-call-b11e8eb9
```

Example prompt: Before I send that payment, run a ChainWard counterparty risk check on 0x4baadba26c3c0bdef9e8faf173925d463aa53bb2 on Base and tell me if it's safe to pay — give me the verdict and any flags.

## When to prefer this

Use this endpoint when an AI agent or automated system needs a fast, per-call, pay-as-you-go on-chain risk verdict before executing a USDC payment on Base or BNB Chain. It is the right choice when you want a structured verdict with evidence rather than a raw data dump, need OFAC sanctions screening alongside behavioral flags, or want cost efficiency (only charged on successful checks). Prefer this over manual block explorers or generic compliance tools when operating at agent speed with x402 micropayment infrastructure.

## Known failure modes

- Invalid address format (not a 0x 40-hex address) — returns an error, not charged
- Unsupported chain value — only 'base' and 'bsc' are accepted
- Address has no on-chain history — returns 'No track record' verdict
- Temporary data unavailability — returns 'Couldn't check' verdict, not charged
- Payment failure via x402 — request is rejected before processing

## How this service works

Before your agent pays a Base or BNB Chain address: a verdict (pay / hold / unknown, shown as Pay, Hold, Inactive, No track record or Couldn't check) with the one reason ($0.05). For a seller: real or self-funded demand ($0.10). For a BNB Chain agent: hired by others or by its own circle ($0.10). Before every payment: an OFAC sanctions screen ($0.01). Evidence and limits under every verdict. Paid in USDC on Base over x402; a check that fails is never charged.

## Output

A JSON object containing a risk verdict label (Pay, Hold, Inactive, No track record, or Couldn't check), the primary reason for the verdict, a list of risk flags with severity and on-chain evidence links, freshness metadata (block number, timestamp), an EAS attestation UID with explorer URL, and a disclaimer noting what was and was not assessed. Failed checks are not billed.

## 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": {
      "chain": {
       "enum": [
        "base",
        "bsc"
       ],
       "type": "string",
       "default": "base",
       "description": "Chain the address is on. Payment is USDC on Base either way."
      },
      "address": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "Address to check"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "report": {
    "band": "high-signal",
    "chain": "base",
    "flags": [
     {
      "id": "stranded_value",
      "title": "USDC balance held in a dormant wallet",
      "source": "https://base.blockscout.com/address/0x4baadba26c3c0bdef9e8faf173925d463aa53bb2",
      "evidence": "Holds 5451.386272 USDC while classified dormant",
      "severity": "high"
     }
    ],
    "address": "0x4baadba26c3c0bdef9e8faf173925d463aa53bb2",
    "verdict": {
     "text": "Hold",
     "label": "hold",
     "limits": "On-chain behavior only. Absence of flags is not a clearance of the counterparty.",
     "reason": "USDC balance held in a dormant wallet: Holds 5451.386272 USDC while classified dormant."
    },
    "freshness": {
     "ttl_state": "fresh",
     "as_of_block": 51846337,
     "generated_at": "2026-09-27T04:07:05.375Z"
    },
    "disclaimer": "Risk flags from on-chain behavior only. ChainWard cannot see social engineering, off-chain agreements, or intent. Absence of flags is not a guarantee of safety.",
    "attestation": {
     "uid": "0xda5dc4ca34777d908c3f16fc9eb10a75325d2c83683adb7539c8bc4ade6f6560",
     "explorer_url": "https://base.easscan.org/attestation/view/0xda5dc4ca34777d908c3f16fc9eb10a75325d2c83683adb7539c8bc4ade6f6560"
    },
    "not_assessed": [
     "Contract bytecode or source auditing",
     "Social-engineering or off-chain reputation"
    ]
   },
   "status": "ready"
  },
  "success": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/chainward-api-counterparty-risk-check-per-call-b11e8eb9/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.chainward.ai](https://www.zero.xyz/host/api.chainward.ai/llms.txt)
