Lab: validate a real x402 challenge
Trigger a genuine 402 payment-required response from 1Claw's production API and run the exact validation checklist the x402 lesson described, against real numbers.
Every check in the x402 lesson was described against a hypothetical challenge. This one is real: 1Claw runs a public, unauthenticated probe endpoint specifically so agent developers can see a genuine 402 without spending anything.
- 1
Trigger it. No payment, no account, just a request to an endpoint that is priced.
codecurl -s https://1claw.co/api/v1/agent-readiness/x402-probe | python3 -m json.tool - 2
A real 402 challenge, with the exact shape the lesson described.
text{ "x402Version": 1, "error": "Payment required for agent-readiness probe", "accepts": [ { "scheme": "exact", "network": "eip155:8453", "maxAmountRequired": "10000", "payTo": "...", "asset": "...", "description": "1Claw x402 agent-readiness probe (0.01 USDC on Base)" } ] } - 3
Run the checklist from the x402 lesson against it: network, asset contract, and the amount in the units that actually matter.
codecurl -s https://1claw.co/api/v1/agent-readiness/x402-probe | python3 -c ' import json, sys d = json.load(sys.stdin) c = d["accepts"][0] print("network is Base: ", c["network"] == "eip155:8453") print("asset is Base USDC: ", c["asset"] == "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913") print("amount, atomic units: ", c["maxAmountRequired"]) print("amount, human units: ", int(c["maxAmountRequired"]) / 10**6, "USDC") ' - 4
Every check passes, and the human-readable amount matches what the description field already told you in plain English.
textnetwork is Base: True asset is Base USDC: True amount, atomic units: 10000 amount, human units: 0.01 USDC
This is the same four-field check from the x402 lesson, run against a live production challenge instead of an example. The description field even states the human amount in plain English, which is 1Claw making the same point this course has: never trust a raw atomic-unit number without converting it yourself.
- You just did the off-by-a-million lab's conversion on a real challenge. 10000 atomic units of a 6-decimal asset is 0.01, not 10000 and not 0.00001, and getting the exponent wrong in either direction is exactly the failure that lab demonstrated.
- payTo is deliberately not printed here, because it is one real wallet address, and hardcoding it into a course that will be read for years is the wrong way to teach 'check the allowlist'. Fetch it yourself and compare it to whatever allowlist your own client would apply.
- This endpoint exists specifically so an agent, or a course, can validate x402 handling against a live challenge without spending real money. It is the test fixture the ecosystem provides for exactly this purpose.
If any one of these three checks had failed, the payment lesson says do not sign. Network match, asset match, and amount match are a conjunction: passing three of four checks is not a pass, because the one that failed is usually the one an attacker changed.
The values here, price included, are 1Claw's own and may change. What will not change is that this endpoint exists to be probed safely, which makes it worth bookmarking the next time you are testing x402 handling in your own code rather than mocking the response.
Check your understanding
3 questionsWhy does this lab avoid printing the payTo address directly in the lesson text?
The probe's atomic amount is 10000 on a 6-decimal asset. What is the human-readable amount?
If the network and asset checks both pass but the amount does not match what you requested, what is the correct action?