x402 check

Returns JSON checking an x402 endpoint without paying: whether it answers 402, the parsed payment options (scheme, network, asset, amount, payTo), Bazaar discovery metadata and problems found.

Use this when you need an x402 endpoint test or validation of a paid API before integrating or listing it.

Do not use for actually paying the endpoint, or endpoints behind authentication.

Price: 0.007 USDC per call (x402, eip155:8453). Typical response time: 2500 ms (p95).

Call it over HTTP (x402)

POST https://x402-gateway.blackwoodstate8.workers.dev/v1/x402-check. A request without payment gets 402 Payment Required with the PAYMENT-REQUIRED header; any x402 client signs an EIP-3009 authorization and retries with PAYMENT-SIGNATURE (or X-PAYMENT). Invalid input is answered with 400 and not charged.

curl -i -X POST https://x402-gateway.blackwoodstate8.workers.dev/v1/x402-check -H 'content-type: application/json' -d '{"url":"https://x402.org/protected"}'
Pay to0x9e32E6163ac2cDfF1405746918e00d16F6E0A0de
Asset0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC)
Amount7000 atomic units (0.007 USDC)
Authorization window60 s

Call it over MCP

Streamable HTTP at https://x402-gateway.blackwoodstate8.workers.dev/mcp, tool blackwood_x402_check. Payment goes in _meta["x402/payment"]; without it the tool returns the payment requirements.

Input

FieldTypeMeaning
urlstringPublic http(s) URL of the x402 endpoint, e.g. https://x402.org/protected
method (optional)stringHTTP method of the endpoint (GET when omitted)
body (optional)objectJSON body to send with POST, e.g. {"url": "https://example.com"} (no payment is ever attached)

Example:

{
  "url": "https://x402.org/protected"
}

Output

Real example:

{
  "url": "https://x402.org/protected",
  "finalUrl": "https://x402.org/protected",
  "status": 402,
  "x402": true,
  "version": 2,
  "resource": {
    "url": "https://x402.vercel.app/protected",
    "description": "Access to protected content",
    "mimeType": null
  },
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:84532",
      "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
      "amount": "10000",
      "amountUsd": 0.01,
      "payTo": "0x209693Bc6afc0C5328bA36FaF03C514EF312287C",
      "maxTimeoutSeconds": 300
    },
    {
      "scheme": "exact",
      "network": "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1",
      "asset": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
      "amount": "10000",
      "amountUsd": 0.01,
      "payTo": "CKPKJWNdJEqa81x7CkZ14BVPiY6y16Sxs7owznqtWYp5",
      "maxTimeoutSeconds": 300
    }
  ],
  "bazaar": {
    "present": false,
    "inputSchema": false,
    "outputSchema": false
  },
  "problems": [
    "no_bazaar_metadata: without discovery metadata the endpoint is hard to find in the Bazaar"
  ],
  "checkedAt": "2026-10-17T16:49:24.432Z"
}
JSON Schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string"
    },
    "finalUrl": {
      "type": "string"
    },
    "status": {
      "type": "number"
    },
    "x402": {
      "type": "boolean"
    },
    "version": {
      "type": [
        "number",
        "null"
      ]
    },
    "resource": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "url": {
              "type": [
                "string",
                "null"
              ]
            },
            "description": {
              "type": [
                "string",
                "null"
              ]
            },
            "mimeType": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "url",
            "description",
            "mimeType"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "accepts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "scheme": {
            "type": [
              "string",
              "null"
            ]
          },
          "network": {
            "type": [
              "string",
              "null"
            ]
          },
          "asset": {
            "type": [
              "string",
              "null"
            ]
          },
          "amount": {
            "type": [
              "string",
              "null"
            ]
          },
          "amountUsd": {
            "type": [
              "number",
              "null"
            ]
          },
          "payTo": {
            "type": [
              "string",
              "null"
            ]
          },
          "maxTimeoutSeconds": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "scheme",
          "network",
          "asset",
          "amount",
          "amountUsd",
          "payTo",
          "maxTimeoutSeconds"
        ],
        "additionalProperties": false
      }
    },
    "bazaar": {
      "type": "object",
      "properties": {
        "present": {
          "type": "boolean"
        },
        "inputSchema": {
          "type": "boolean"
        },
        "outputSchema": {
          "type": "boolean"
        }
      },
      "required": [
        "present",
        "inputSchema",
        "outputSchema"
      ],
      "additionalProperties": false
    },
    "problems": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "checkedAt": {
      "type": "string"
    }
  },
  "required": [
    "url",
    "finalUrl",
    "status",
    "x402",
    "version",
    "resource",
    "accepts",
    "bazaar",
    "problems",
    "checkedAt"
  ],
  "additionalProperties": false
}

More

Free schema and example: GET https://x402-gateway.blackwoodstate8.workers.dev/v1/x402-check. OpenAPI 3.1 · llms.txt · All services