GAVELGAVELSCAN

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.

/api/x402/watch/{auction}Live auction state at the block your request lands on. 0.5 USDG buys a 7-day pass — the 402 response below is the always-current price sheet.

How to pay

01

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.

02

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.

03

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.

04

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

LIVE REQUEST · PRODUCTIONGET /api/x402/watch

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.