Queue positions for the token allocation program, ranked from on-chain pool
deposits with a time-in-queue multiplier and an optional trading-volume bonus. Read-only
except for /rerank and wallet linking.
Responses carry queue position only. Deposits, multipliers, volume and scores are never served: publishing them would expose every user's balance and trading activity, and a public score reads as an allocation promise.
/healthService health plus latest-snapshot metadata.
ok stays true while the volume source is degraded — the queue is still served; check volumeDegraded instead.{ "ok": true, "latestSnapshotId": 42, "asOf": 1756677600, "users": 1337,
"canRerank": true, "volumeFetchedAt": 1756677000, "volumeDegraded": false }
/leaderboard?limit=50&offset=0The current queue, paginated.
limit defaults to 50, max 500. offset defaults to 0.{ "snapshotId": 42, "asOf": 1756677600, "users": 1337, "limit": 50, "offset": 0,
"rows": [ { "rank": 1, "user": "0xabc…" }, … ] }
/leaderboard/:addressOne user's queue position.
{ "snapshotId": 42, "asOf": 1756677600, "users": 1337, "user": "0xabc…", "rank": 17 }
/snapshots?limit=20Ids of retained past rankings, newest first (limit max 100).
{ "snapshotIds": [42, 41, 40, …] }
/snapshots/:id?limit=50&offset=0A past ranking, same shape as /leaderboard.
/rerankTrigger a hot re-rank; responds with the fresh snapshot's metadata.
?full=true is refused — full sweeps run out-of-band, not over HTTP.{ "snapshotId": 43, "asOf": 1756677660, "users": 1337, "volumeFetchedAt": 1756677000 }
Credits a trading wallet's volume to a depositing account. The wallet (not the account) signs an EIP-712 message; a per-(account, wallet) nonce makes each signature single-use. An account may link at most 20 wallets, and a wallet linked to one account must be unlinked before it can move to another (409 otherwise).
/linkedWallets/:addressWallets currently linked to an account.
{ "account": "0xabc…", "wallets": ["0xdef…"] }
/linkNonce/:account/:walletThe nonce the next link/unlink signature must carry.
{ "account": "0xabc…", "wallet": "0xdef…", "nonce": 3 }
/linkWalletLink a wallet. Body: { account, wallet, nonce, signature }.
signature is the wallet's EIP-712 signature over the typed data below. ERC-1271 contract wallets verify too.// domain
{ "name": "IPO Leaderboard", "version": "1", "chainId": <CHAIN_ID> }
// types
LinkWallet(address account, address wallet, uint256 nonce)
// message: the lowercased account + wallet and the nonce from /linkNonce
/unlinkWalletUnlink a wallet. Same body and signature scheme as /linkWallet.