# x402 Listing Drift Checker

> x402 Listing Drift Checker is a paid API for AI agents from api402x.com, paid per call via x402, $0.002/call, status down (last checked 2026-10-12).

Checks whether a catalogued x402 resource's live payment terms (price, network, payTo) match the advertised listing, and detects dead origins or oversized response headers that would prevent payment.

## Facts

- Endpoint: GET https://api402x.com/x402-listing-drift-check?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: down
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-listing-drift-checker-57b6e295
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_JRkC1qmv-5eXD9lM9pwHn

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-listing-drift-checker-57b6e295
```

Example prompt: Can you check whether the x402 listing for https://api.example.com/data is still accurate — I think the catalogue says the price is $0.005 but I want to know what the origin is actually charging right now?

## When to prefer this

Use this endpoint when you need to verify that a specific x402 resource's live payment terms match what a catalogue or index has recorded — especially before paying, before publishing a listing, or as part of a monitoring workflow. Prefer it over a generic HTTP probe because it parses x402 402-response headers specifically (price, network, payTo) and additionally catches the Node.js 16 KB header ceiling failure mode that generic health checks miss.

## Known failure modes

- Resource URL is not publicly reachable — returns status 'dead'
- Origin responds but is not an x402 endpoint — returns status 'not_x402'
- Origin response headers exceed 16384 bytes — returns status 'unbuyable_headers'
- Network error or timeout prevents a definitive answer — returns status 'indeterminate'
- Missing required 'resource' query parameter — returns a 4xx validation error

## How this service works

Does a catalogue listing still match what the origin serves? Calls the resource with no payment, reads the price, network and payTo out of the 402 the origin itself returns, and compares them with the price the catalogue advertises. The 402 is the authoritative statement; the catalogue is a cache of one. Also separates two failures no catalogue reports: an origin that is gone, and an origin that answers but whose response headers exceed the 16384-byte ceiling Node applies to all response headers combined -- live, indexed and impossible to pay from a Node client. Required: resource. Optional: advertised_price. Honest note: demand for this route is not measured; it exists because the defect it reports was measured on our own surface first.

## Output

Returns a status field (one of: matches, price_drift, dead, unbuyable_headers, not_x402, indeterminate), the live payment terms read from the origin's actual 402 response (price_usd, network, pay_to), the advertised price for comparison, latency in ms, HTTP status code, header byte count, a checked_at timestamp, and an actionable boolean indicating whether the issue can be acted upon.

## 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": [
      "resource"
     ],
     "properties": {
      "resource": {
       "type": "string",
       "description": "REQUIRED. Absolute http(s) URL of the listed resource. Public hosts only."
      },
      "advertised_price": {
       "type": "string",
       "description": "OPTIONAL. What the catalogue claims, e.g. \"$0.005\". Omit to just read the live terms."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "live": {
       "type": "object",
       "properties": {
        "pay_to": {
         "type": [
          "string",
          "null"
         ]
        },
        "network": {
         "type": [
          "string",
          "null"
         ]
        },
        "price_usd": {
         "type": [
          "string",
          "null"
         ]
        },
        "latency_ms": {
         "type": "integer"
        },
        "http_status": {
         "type": [
          "integer",
          "null"
         ]
        },
        "header_bytes": {
         "type": [
          "integer",
          "null"
         ]
        }
       }
      },
      "detail": {
       "type": "string"
      },
      "status": {
       "enum": [
        "matches",
        "price_drift",
        "dead",
        "unbuyable_headers",
        "not_x402",
        "indeterminate"
       ],
       "type": "string"
      },
      "resource": {
       "type": "string"
      },
      "actionable": {
       "type": "boolean"
      },
      "checked_at": {
       "type": "string"
      },
      "advertised_price_usd": {
       "type": [
        "string",
        "null"
       ]
      }
     }
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-listing-drift-checker-57b6e295/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api402x.com](https://www.zero.xyz/host/api402x.com/llms.txt)
