Skip to content

x402 payments ​

Feed and match use x402 v1, scheme exact, on Base mainnet.

Challenge ​

A request with no X-PAYMENT header returns 402:

json
{
  "x402Version": 1,
  "error": "X-PAYMENT header is required",
  "accepts": [
    {
      "scheme": "exact",
      "network": "base",
      "maxAmountRequired": "100000",
      "resource": "https://recallguard-api.vercel.app/api/v1/match",
      "mimeType": "application/json",
      "payTo": "0x90E23A7b6F6494A879d05DDC4278D0e55Dec1e01",
      "maxTimeoutSeconds": 60,
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": { "name": "USD Coin", "version": "2" }
    }
  ]
}

The example amount is match. Feed uses "50000". The asset is official Base USDC, 6 decimals. The EIP-712 domain is name USD Coin, version 2, chain id 8453, verifying contract that asset.

validBefore must fall inside maxTimeoutSeconds. The server rejects an authorization whose deadline is outside that window.

Settlement ​

The server posts the payment to https://facilitator.payai.network/verify. If the handler returns a status below 400, it posts /settle. The facilitator submits the transaction and pays gas.

On success the response body is the feed or match JSON, and X-PAYMENT-RESPONSE is base64 JSON:

json
{
  "success": true,
  "transaction": "0xf3919e8c55a4e7163cb10e88baa1d4b183d861ff379a54d0d001d932a6325999",
  "network": "base",
  "payer": "0x638FdbB31446B1D4a73a92A2f984C7a1D5FDA339"
}

That receipt is the match self-test of 2026-09-29. Base shows a USDC transfer of 100,000 atomic units from the payer above to payTo, in block 51,961,194. The submitting account was 0xc6699d2aadA6c36Dfea5C248DD70f9CB0235cB63.

https://basescan.org/tx/0xf3919e8c55a4e7163cb10e88baa1d4b183d861ff379a54d0d001d932a6325999

If verify or settle fails, the caller gets 402 and no paid body. A handler error is returned as-is and is not settled.

Scope of this proof ​

One match call from the operator's payer wallet to the operator's payTo address has settled. Feed has a 402 challenge and has not had a confirmed settlement recorded here. No other chain is in the challenge.

Docs describe recallguard-api.vercel.app as checked on 2026-09-30.