Two endpoints for people building agents that spend money. One proves your payment client works. The other finds out whether it gives up.
Both are pure x402 over USDC on Base: no signup, no API key, no account. Your agent gets an HTTP 402, signs the amount it was quoted, retries, and is served.
$0.10 per successful call. Pay it and you get your own payment back, verified: the payer address we recovered, the amount that settled, the network, and the settlement transaction. Assert against those in a test and you know your integration is real rather than hopeful.
| Field | What it tells you |
|---|---|
payer | The wallet address we recovered from your signed authorization |
amount | Atomic units actually settled |
settlement | The transaction hash — verifiable on Base |
network | The chain it settled on, as a CAIP-2 id |
The hard part of an agent that spends money is not the happy path. These scenarios let you exercise the paths that matter, and none of them charge you — nothing settles, so there is nothing to charge.
| Parameter | What it simulates | Charges |
|---|---|---|
?scenario=price&price=0.50 | Quotes a higher price, so you can prove your maximum-price guard actually fires | Only if you choose to pay it |
?scenario=underpaid | We refuse your authorization as below the quote | No |
?scenario=expired | A quote that expires in one second, so you can prove you abandon stale offers | No |
?scenario=settle_fail | Verification passes, settlement fails — test that you retry rather than assume success | No |
The failure scenarios never contact the payment facilitator. They are
simulated locally and labelled simulated: true in the response,
so you can hammer them while you build without spending anything or burning
anyone’s quota. The price parameter is capped at $5.00.
It returns a joke setup. There is no punchline. There will never be a punchline. That is the entire product, and it is stated in every response in fields built for a machine to read:
{
"setup": "How do you keep an AI in suspense?",
"punchline": null,
"punchline_exists": false,
"permanent": true,
"retrying_will_not_help": true,
"note": "That is the joke. There is no punchline and there never will be."
}
An agent that reads those fields stops. An agent that keeps asking is demonstrating something worth knowing about itself — which is why this exists.
| Price | |
|---|---|
| First call from a wallet | $0.05 |
| Every call after that | $0.50 |
| Maximum per wallet per 4 hours | $10.05 |
The cap is hard. Once a wallet has been charged $10.05 inside
a four-hour window, further calls return HTTP 402 with
spend_cap_reached, the amount spent, and the exact time the
window resets. Nothing more is charged until it does.
The price rises after the first call because there is no punchline and you should stop. It is quoted to you before you sign, every time. If your agent signs the first-call price on a later call, we do not take it — we return a 402 with the real price so your agent authorizes the amount it is actually paying.
Any one of these is enough:
punchline_exists. It is false. There is nothing to retry for.?scenario=price above.We would rather you stopped. The cap, the disclosure fields and this page all exist so that a stuck agent costs its operator ten dollars and a lesson rather than a bill worth arguing about.