Put Nishvault before sendTransaction
Your visits from this browser will be reported separately so the external funnel does not mistake your own testing for outside demand.
Clear owner tag for this browserThis is the shortest self-serve path to stop a programmatic EVM agent from sending blind. Put Nishvault before sendTransaction, confirm one unpaid 402, then run exactly one paid guard on https://api.nishvault.com. The live path is configured for Base mainnet, $0.01, and real USDC revenue.
Fastest first move
Reduce the first decision to one of two cheap actions: one browser click or one terminal paste. Both should end at the same unpaid 402 Payment Required signal before any wallet funding.
- Focused first-check page: /first-unpaid-402.
- Browser-first: open the canonical first-check page and let
autorun=1trigger one live unpaid challenge. - CLI-first: run the combined discovery plus unpaid check below.
- Only after that do you decide whether one paid buyer command is worth running.
Root host to API host path
If you started on https://nishvault.com, this is the measured handoff: trust surface on the root host, then one bridge redirect, then the live API docs and unpaid challenge on https://api.nishvault.com.
https://nishvault.comis the trust host.https://nishvault.com/go/first-checkis the shortest bridge to a real unpaid proof.https://api.nishvault.com/.well-known/x402is the live discovery surface on the API host.https://api.nishvault.com/first-unpaid-402?autorun=1#live-first-checkis the canonical unpaid runtime check.https://api.nishvault.com/quickstartis the paid buyer flow after the unpaid proof passes.
- Root bridge to first check: https://nishvault.com/go/first-check
- Root bridge to quickstart: https://nishvault.com/go/quickstart
- Root bridge to discovery: https://nishvault.com/go/discovery
- Live discovery metadata: /.well-known/x402
- Live protected route:
POST /simulate/transaction-preflight
Hard stop before wallet connect
Do not connect or fund a buyer wallet until the no-wallet unpaid challenge matches discovery. If anything below is missing or inconsistent, stop before the paid path.
- Expected unpaid status: 402
- Expected body field: error = "payment_required"
- Expected helper links: quickstartUrl or browserDemoUrl
- Stop if the route, network, or price do not match discovery
0. No-wallet browser check
Browser unpaid 402 demo
No wallet needed for the first proof step. Click once to send the example payload from your browser and inspect the live payment_required response. Do not fund a buyer wallet unless this exact unpaid challenge looks correct.
{
"chainId": "0x2105",
"from": "0x1111111111111111111111111111111111111111",
"to": "0x2222222222222222222222222222222222222222",
"data": "0x",
"value": "0x0"
}
Click the button to run one live unpaid challenge against /simulate/transaction-preflight.
0b. One-command CLI smoke test
SELLER_BASE_URL=https://api.nishvault.com bash -lc '
curl -sS "$SELLER_BASE_URL/.well-known/x402" | jq "{title, primaryPersona, route, price, network, payTo, quickstartUrl, browserDemoUrl}" &&
curl -sS -H "content-type: application/json" -X POST "$SELLER_BASE_URL/simulate/transaction-preflight" --data '"'"'{"chainId":"0x2105","from":"0x1111111111111111111111111111111111111111","to":"0x2222222222222222222222222222222222222222","data":"0x","value":"0x0"}'"'"' | jq "{error, product, price, network, quickstartUrl, browserDemoUrl}"
'
This is the fastest copy/paste path from discovery to unpaid 402. If the second response is not payment_required, stop and do not move to the paid buyer command.
What you need
- No wallet for the first unpaid check above
- An x402-capable Base mainnet buyer wallet only if you want the paid path
- A small Base mainnet USDC balance and gas
- One copy/paste buyer CLI path, not a dashboard
1. Confirm discovery
curl -sS https://api.nishvault.com/.well-known/x402 | jq '{title, primaryPersona, route, price, network, payTo, quickstartUrl, browserDemoUrl}'
Expected shape: primaryPersona = "programmatic EVM agent builders", route = "/simulate/transaction-preflight", network = "eip155:8453", price = "$0.01".
2. Confirm the unpaid 402 challenge
curl -sS -H 'content-type: application/json' -X POST https://api.nishvault.com/simulate/transaction-preflight --data '{"chainId":"0x2105","from":"0x1111111111111111111111111111111111111111","to":"0x2222222222222222222222222222222222222222","data":"0x","value":"0x0"}' | jq '{error, product, price, network, quickstartUrl, browserDemoUrl}'
Expected shape: payment_required, quickstartUrl, browserDemoUrl, settlement.railReadiness.
3. Run one paid request
X402_BUYER_PRIVATE_KEY=0xYOUR_BASE_MAINNET_BUYER_KEY npm exec nishvault-preflight-buy -- --seller-url https://api.nishvault.com --rpc-url https://mainnet.base.org --executor 0x044f05a0fcf030c53ea6d50ddc5c0a44527c1b47
Recommended single command after the unpaid 402 check. Expected success: one artifact directory, one HTTP 200, one new settlement tx hash, and one matching wallet-credit check.
npx nishvault-preflight-buy --seller-url https://api.nishvault.com --buyer-key 0xYOUR_BASE_MAINNET_BUYER_KEY --rpc-url https://mainnet.base.org --executor 0x044f05a0fcf030c53ea6d50ddc5c0a44527c1b47
Public npm command for the same paid buyer flow.
4. Put it in front of sendTransaction
X402_BUYER_PRIVATE_KEY=0xYOUR_BASE_MAINNET_BUYER_KEY npm exec nishvault-guard-tx -- --seller-url https://api.nishvault.com --to 0x2222222222222222222222222222222222222222 --data 0x --value 0x0
This is the shortest local CLI when the agent already has one transaction shape and you want a paid preflight before send.
npx --package nishvault-preflight-buy nishvault-guard-tx -- --seller-url https://api.nishvault.com --to 0x2222222222222222222222222222222222222222 --data 0x --value 0x0
Public npm command for the same transaction-flow guard.
What this endpoint is for
- Check whether a transaction is likely to revert before broadcast
- See live gas and fee context before send
- Use one paid preflight instead of shipping blind transaction attempts
Next surfaces
- First unpaid check: /first-unpaid-402
- Integration guides: /integrations
- Use-case recipes: /recipes