payanagent.com/x402/kh7ae6p2z1gga2xb0xv2gh6sth8b86ve
1.Catalog declaration
| Resource URL | https://payanagent.com/x402/kh7ae6p2z1gga2xb0xv2gh6sth8b86ve |
| Source | cdp_bazaar |
| Declared method | POST |
| Catalog network | eip155:8453 |
| Receiving address | 0xffc458db291b4abce020fe3de4f91f2770e537b1 |
| Declared price (base units) | 1000 |
| Catalog status | delisted (since 2026-10-13 01:02 UTC) |
| First seen / last seen | 2026-08-14 08:39 UTC / 2026-10-12 01:02 UTC |
| Catalog-reported calls / payers (30d) | 2 / 2 |
2.Probe history
| Probed at | Method | Verdict | HTTP | Latency | Reason |
|---|---|---|---|---|---|
| 2026-10-12 10:30 UTC | POST | unverified | 400 | 302 ms | request_shapeUnpaid POST with an empty JSON body answered 400 before any payment challenge; not measured (vet402 does not guess the input). |
| 2026-10-11 15:40 UTC | POST | fail | 503 | 49 ms | no_402HTTP 503 instead of 402 to an unpaid POST. |
| 2026-09-13 16:40 UTC | POST | fail | 400 | 119 ms | no_402HTTP 400 instead of 402 to an unpaid POST. Recorded before the 2026-09-29 change; the POST carried an empty JSON body, and since that change this answer is recorded as request_shape (unverified), not as a fail. |
| 2026-09-13 04:40 UTC | POST | fail | 400 | 460 ms | no_402HTTP 400 instead of 402 to an unpaid POST. Recorded before the 2026-09-29 change; the POST carried an empty JSON body, and since that change this answer is recorded as request_shape (unverified), not as a fail. |
| 2026-09-12 13:40 UTC | POST | fail | 400 | 85 ms | no_402HTTP 400 instead of 402 to an unpaid POST. Recorded before the 2026-09-29 change; the POST carried an empty JSON body, and since that change this answer is recorded as request_shape (unverified), not as a fail. |
| 2026-09-11 22:40 UTC | POST | pass | 402 | 181 ms | — |
| 2026-09-11 13:40 UTC | POST | pass | 402 | 479 ms | — |
| 2026-09-10 17:40 UTC | POST | pass | 402 | 225 ms | — |
| 2026-09-10 05:40 UTC | POST | pass | 402 | 415 ms | — |
| 2026-09-09 17:40 UTC | POST | pass | 402 | 367 ms | — |
| 2026-09-09 05:40 UTC | POST | pass | 402 | 197 ms | — |
| 2026-09-07 23:40 UTC | POST | pass | 402 | 2105 ms | — |
| 2026-09-07 14:40 UTC | POST | fail | 402 | 98 ms | accepts_invalid402 without a payable accept in the header or the body (which part was missing was not recorded before the 2026-09-29 change). |
| 2026-09-06 23:40 UTC | POST | fail | 400 | 184 ms | no_402HTTP 400 instead of 402 to an unpaid POST. Recorded before the 2026-09-29 change; the POST carried an empty JSON body, and since that change this answer is recorded as request_shape (unverified), not as a fail. |
| 2026-09-06 14:40 UTC | POST | fail | 400 | 211 ms | no_402HTTP 400 instead of 402 to an unpaid POST. Recorded before the 2026-09-29 change; the POST carried an empty JSON body, and since that change this answer is recorded as request_shape (unverified), not as a fail. |
| 2026-09-05 23:40 UTC | POST | pass | 402 | 374 ms | — |
| 2026-09-05 14:40 UTC | POST | pass | 402 | 175 ms | — |
| 2026-09-04 23:40 UTC | POST | pass | 402 | 265 ms | — |
| 2026-09-04 14:40 UTC | POST | pass | 402 | 357 ms | — |
| 2026-08-24 11:11 UTC | POST | pass | 402 | 187 ms | — |
3.L1 — real purchases
2 of 2 paid attempts settled on-chain, and 0 of those also returned a deliverable 2xx response (delivered: other than 202 Accepted with a non-empty body). Each settled row carries its on-chain transaction hash, and that transaction is the evidence. On this page a receipt means the seller's own settlement receipt (PAYMENT-RESPONSE); a settled row can have none (see “tx from our index”). A settled row reads as nonce-bound when the on-chain re-read matched the one-time value stored for that purchase, so the transaction is the one for this purchase. Stellar is not in this count. The Stellar re-read checks payer, payee, amount and asset. A row reads as amount + payee when the re-read matched payer, payee, amount and asset and did not bind a one-time value. That tier holds rows from before 2026-09-04 and Stellar rows. They keep the settled label rather than being demoted (methodology). settled is the transfer vet402 confirmed on-chain. delivered is a 2xx other than 202 with a non-empty body. A settled row whose paid request answered 5xx counts as settled and not as delivered. definitions.
A row marked tx from our index came back with no settlement receipt from the seller. Our own index of on-chain settlements found the transfer afterwards — our payer, this endpoint's payee, the exact amount, inside the time window — and the row goes through the same on-chain re-read as any other before it reads settled. The seller did not name that transaction; we did (methodology).
2 of those paid attempts are held as inconclusive rather than counted against this seller (2 settled and answered 4xx, 0 answered 4xx with no settlement receipt, 0 answered 402 or 5xx while our own payer wallet was out of USDC, 2026-09-13 00:00 to 2026-09-15 23:49 UTC). A 4xx says the request was not one the server would accept, and we cannot rule out that the request was ours to get wrong: vet402 buys with no API key of the seller's, and sends a POST body only when the seller declares one. This is the same principle the methodology already applied to path_template URLs, applied to the body and the authentication header as well. The rows are not deleted and not hidden — they are below, with their status and HTTP code, and they are out of the denominator for delivered (corrections).
Terms in this table
settled (amount + payee)- vet402 re-read the transfer on-chain in that chain's pinned settlement asset: the on-chain re-read matched payer, payee, amount and asset and did not bind a one-time value (rows before 2026-09-04, and Stellar).
settled_4xx- held_reason in the export: the payment settled, then the paid request got a 4xx.
L2 not_checked- not checked: the paid request did not answer 200, so there was no response to check against the listing's output schema.
Stage inconclusive- vet402 holds the row because the paid HTTP response was 4xx, or vet402's payer wallet was unfunded in a recorded window. vet402 keeps the row public in its own stage, apart from delivered and not_delivered.
Whose side- the same words as the seller page: seller's side only after failures on two different days (UTC), marked “attribution under review”; vet402's side; or not sorted (the rules).
| Attempted at | Result | HTTP | On-chain tx | Payment chain | Latency |
|---|---|---|---|---|---|
| 08-31 12:082026-08-31 12:08 UTC | settled (amount + payee)tx from our index | 422 | 0x7196be27…b8c8 | Base | 2657 ms |
| 1000 units (≈ $0.001 USDC) · L2 not_checkedWhose side: not sorted: charged, then rejected an input vet402 had not sentStage: inconclusive | |||||
| 08-24 23:342026-08-24 23:34 UTC | settled (amount + payee)tx from our index | 422 | 0x3770c4fb…92bb | Base | 1618 ms |
| 1000 units (≈ $0.001 USDC) · L2 not_checkedWhose side: not sorted: charged, then rejected an input vet402 had not sentStage: inconclusive | |||||
Embed this record
Run this endpoint? Show the settle-through record vet402 measured — the badge reads 2/2 settled · 0 delivered · 2 inconclusive and updates as the record grows. It carries the host it is about and the date it was last measured, so a saved copy cannot pass itself off as current. It states a measurement, not a rating.
[](https://vet402.com/observatory/e/26ecc560-8b8d-48e9-aa7b-2c9c687c7ace)4.Catalog listing events
| Detected on | Event | Before | After |
|---|---|---|---|
| 2026-10-13 | delisted | {"status":"active"} | {"status":"delisted"} |
| 2026-10-11 | relisted | {"status":"delisted"} | {"status":"active"} |
| 2026-09-14 | delisted | {"status":"active"} | {"status":"delisted"} |
| 2026-09-09 | relisted | {"status":"delisted"} | {"status":"active"} |
| 2026-09-08 | delisted | {"status":"active"} | {"status":"delisted"} |
unverified is not a failure; a fail is published only after two consecutive failing probes. Definitions: methodology.
5.Dispute this record
A dispute does not start a purchase. The signed dispute route runs one fresh L0 check, an unpaid request.
Think a measurement above is wrong? Say which probe or purchase and what you observed instead. One person reads it and replies. The record is never deleted on dispute: if it was wrong, the correction is published with the same weight. If it was right, it stands. This listing is not active in the catalog, so a dispute filed on the record form does not put it on the re-probe list. The record stays on this page. The scheduled L0 run is at 10:30 UTC. This listing is not on that run. Send the dispute to support@vet402.com. Published corrections are listed at /corrections. Operators who control the receiving address can also sign a dispute via POST /api/v1/observatory/disputes (API reference). That route runs one fresh L0 check under the normal publication gate. A later purchase comes from the regular schedule.