# x402 Endpoint Validator

> x402 Endpoint Validator is a paid API for AI agents from earner-shop.earner-shop-3xz9.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-30).

Checks whether a live x402 endpoint is genuinely payable by fetching it, decoding its PAYMENT-REQUIRED challenge, verifying payment terms, and returning actionable fixes for any issues found.

## Facts

- Endpoint: GET https://earner-shop.earner-shop-3xz9.workers.dev/v1/validate?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-endpoint-validator-690fc8f5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_DlxicaBw5OKDtueGmbWyw

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-endpoint-validator-690fc8f5
```

Example prompt: Can you check whether https://api.example.com/paid is a properly configured x402 endpoint — I want to know if it's payable or if there are any issues an agent would hit trying to pay it?

## When to prefer this

Use this endpoint when you need to programmatically verify that an x402 endpoint is correctly configured and genuinely payable before attempting to pay it, listing it in a marketplace, or routing agent traffic to it. It is the right choice when you have a specific URL to inspect and want decoded payment terms plus actionable diagnostics — not for discovering x402 endpoints or making payments.

## Known failure modes

- Target URL is unreachable or times out — returns error with network failure details
- Target URL does not return a 402 status — returns verdict indicating endpoint is not an x402 paywall
- Payment challenge is malformed JSON — returns parsing error with specifics
- Missing required payment fields (e.g. payTo, asset) — returned as issues list with severity 'error'
- Redirect loop or too many redirects — returns error about final URL resolution failure

## How this service works

Checks whether a live x402 endpoint is actually payable. Fetches the target, decodes its PAYMENT-REQUIRED challenge, verifies the payment terms are well-formed, renders prices in human units, and returns the precise fixes for anything that would stop an agent from paying.

## Output

A JSON object containing: a verdict string ('payable', 'warnings', 'broken', etc.), a summary sentence, the decoded payment accepts array with human-readable prices (e.g. '0.01 USDC'), the final URL after any redirects, the HTTP status code, the x402 protocol version, and a list of issues each with a severity level, error code, human-readable message, and a precise fix recommendation.

## 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": [
      "url"
     ],
     "properties": {
      "url": {
       "type": "string",
       "description": "Absolute http(s) URL of the x402 endpoint to validate."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "issues": [
   {
    "fix": "Set it (300 is a sane default) so agents know how long the authorization stays valid.",
    "code": "missing_timeout",
    "message": "accepts[0].maxTimeoutSeconds is missing",
    "severity": "warning"
   }
  ],
  "target": "https://api.example.com/paid",
  "accepts": [
   {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "payTo": "0x0000000000000000000000000000000000000000",
    "price": "0.01 USDC",
    "amount": "10000",
    "scheme": "exact",
    "network": "eip155:8453",
    "maxTimeoutSeconds": 300
   }
  ],
  "summary": "Payable, with 1 issue that will cost you buyers.",
  "verdict": "warnings",
  "finalUrl": "https://api.example.com/paid",
  "httpStatus": 402,
  "x402Version": 2
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-endpoint-validator-690fc8f5/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from earner-shop.earner-shop-3xz9.workers.dev](https://www.zero.xyz/host/earner-shop.earner-shop-3xz9.workers.dev/llms.txt)
