API
The record, as JSON.
Nobody stops mid-auction to open a third-party website. If a verdict is going to be useful it has to reach the tool a reader is already in, so every page here is also a file a machine can read. Static JSON, no key, no rate limit, same data the site renders.
curl https://gavelscan.xyz/v1/live.json
Endpoints
- /v1/live.json
- Auctions that have not reached their migration block. The only endpoint about a decision that is still open.
- /v1/launches.json
- Every recorded auction — 4378 of them — with findings and ceiling.
- /v1/launch/{auction}.json
- One auction by its initializer address, lowercase.
- /v1/deployers.json
- Every address that has created an auction, with its record.
- /v1/deployer/{address}.json
- One deployer by address, lowercase, with its recent launches.
A launch, in full
{
"auction": "0xa6ad4ed103255572c719839f74773cfa689b6075",
"tx": "0xa833df11c4b14c923152e6e9b62f47d5deef99a2b6b037e4cb97dfda485ab756",
"block": 56307585,
"token": {
"address": "0xd9ec93b3cdfecbafaff1b2a89845557a5a4076fc",
"symbol": "AAPL"
},
"currency": {
"address": "0xaf3d76f1834a1d425780943c99ea8a608f8a93f9",
"symbol": "AAPL",
"official_stock_token": true
},
"recipient": {
"address": "0x77db4004656e4931ab8368652ee0ad5c22f20267",
"is_contract": true,
"nonce": 15
},
"lp_reserve_ratio": 0.2,
"pool": {
"fee": 3000,
"hook": "0x0000000000000000000000000000000000000000"
},
"migration_block": 57172059,
"outcome": "unfilled",
"ceiling": "FLAG",
"findings": [
{
"check": "exit_heavy",
"severity": "FLAG",
"detail": "30% of the raise is routed to liquidity; the remainder exits to the recipient"
},
{
"check": "recipient_delegated_wallet",
"severity": "INFO",
"detail": "raised funds are routed to a wallet running delegated code (EIP-7702)"
},
{
"check": "currency_official_stock",
"severity": "PASS",
"detail": "auction currency is an official Robinhood stock token (AAPL), verified by registered address"
}
]
}Fields worth explaining
- ceiling
- PASS, FLAG or FAIL. The best verdict the deterministic checks allow. A judged verdict may sit at it or below it, never above.
- findings[]
- Every check that fired, with its severity and the sentence GAVEL publishes for it. These strings are ours; nothing here is written by a model.
- currency.official_stock_token
- True only when the address is in the Robinhood issuer registry. A matching name is not enough.
- recipient
- Where raised currency and reserved LP tokens go if migration fails. is_contract and nonce are read from the chain at build time.
- lp_reserve_ratio
- Share of token supply set aside for liquidity, as a fraction.
- outcome
- pool, failed, live or silent — what has become of the auction so far.
x402 · the paid lane
The record is a snapshot. This lane reads the chain now.
The free files above are rebuilt every few minutes; a bidder deciding inside that window is deciding on old news. This endpoint answers at the current block — has the auction cleared, how much sold, how much raised, how many blocks remain — and never serves a cached answer. Payment is a USDG transfer on Robinhood Chain itself: no account, no API key, no card. The transaction is the receipt.
How to pay
Ask for the price
Call the endpoint with no payment header. The 402 answer names the asset, amount and receiving address — never trust a doc page over the challenge itself.
Pay on-chain, yourself
Send 0.5 USDG to the payTo address on Robinhood Chain (4663), from any wallet whose key you hold. There is nothing of ours to approve and no contract of ours to call.
Sign your receipt
Paste your tx hash into the panel below and press sign with wallet — your wallet shows the text gavel-pass:<hash> and signs it, nothing more. cast wallet sign works too. The signature never goes on-chain.
Retry with the header
X-PAYMENT: <tx hash>.<signature> — that is the whole pass. It lasts 7 days from the block your payment landed in, on any request, with no account behind it.
Try it, against production
Two things worth knowing before you pay: the server can verify payments but cannot spend them — there is no key on it — and signature recovery assumes the paying wallet is an EOA, so a smart-contract wallet (ERC-1271) cannot buy a pass yet.
Honest limits
- The free files are a snapshot, not a stream
- They are rebuilt from chain state, not served live. The current build was read at block 63,813,257; anything newer is not in them yet. The paid lane above is the exception — it reads the chain at request time.
- The ceiling is deterministic; the judge is not published here yet
- Every file carries the checks and the ceiling. Judged classifications are being added once their calibration is settled — publishing an uncalibrated verdict would be worse than publishing none.
- No key, and therefore no promises
- There is no account, no quota and no support commitment. If you build something that matters on it, pin a copy.