Rankings
Sorts#
by selects the sort column, descending, with nulls last and the mint address as a stable tiebreak. The default is newest. An unrecognised value returns 400 with the valid list in the message.
| by | Sorts on | Means |
|---|---|---|
newest | created_at | most recently launched first. The default. |
profit | profit_swept | most profit swept out of the bankroll |
fees | fees_claimed | most quote fees claimed |
boughtBack | paid_to_holders | most quote spent buying the token back |
burned | tokens_burned | most supply destroyed |
paysHolders | profit_to_holders_bps | largest holders' share of profit, which funds the buyback |
activePositions | open_positions_count | most Remote venue accounts with a non-zero attested equity |
marketCap | nothing | not implemented, see below |
Every sort key is an indexed column or a cheap indexed-subquery count, never a full scan.
The sort that refuses#
by=marketCap returns 200 with a body that says it is unavailable and why, rather than returning an empty list or quietly sorting by something else.
{
"by": "marketCap",
"available": false,
"reason": "live per-token market cap requires reading the launched token's LaunchLab/CPMM pool account directly on chain. The bankroll program's events and StonkFun's public API (opening/graduation market cap of the QUOTE, at launch time only) do not carry this. Not implemented by this indexer yet.",
"rows": []
}Filters#
All seven combine freely with any sort, and the response echoes the parsed values back under filters so a client can see exactly what was applied.
| Parameter | Type | Matches |
|---|---|---|
quoteMint | address | policies quoted in one stock |
mode | Passive or Agent | exact string match on the mode column |
model | integer | exact model_id |
riskMin | integer | risk at or above |
riskMax | integer | risk at or below |
locked | boolean | true, 1, false or 0. Anything else parses as no filter. |
hasOpenPositions | boolean | true means at least one Remote venue with non-zero attested equity; false means none |
GET /rankings?by=burned&mode=Agent&riskMin=80&limit=10{
"by": "newest",
"filters": {
"quoteMint": null, "mode": null, "model": null,
"riskMin": null, "riskMax": null, "locked": null, "hasOpenPositions": null
},
"source": "chain: policies table (Policy account snapshot + counted VenueAccount attestations)",
"limit": 50,
"offset": 0,
"rows": [ ... ]
}Pagination#
| Parameter | Default | Range | Out of range |
|---|---|---|---|
limit | 50 | 1 to 200 | clamped |
offset | 0 | 0 to 100000 | clamped |
An unparseable value falls back to the default rather than erroring. The values actually used are echoed in the response.
The row shape#
{
"mint": "AUCgvtVBJNRaZXAqGuhRM8smJoqtXtNhiRzJ9m7zkL4x",
"quoteMint": "7Gm5YPpxNuTihtRhsghDsy5Vp3zgyP4KZTDTw4dZEUqV",
"quoteSymbol": null, "quoteName": null, "quoteDecimals": 8,
"quoteSymbolSource": null, "quoteIconUrl": null, "quoteIconSource": null,
"marketCap": { "quote": { "...": "figure" }, "usd": { "...": "figure" },
"priceQuotePerBase": null,
"pool": "6taTbZGQsTvazUEWQYwkc6J4a8pZZHQPsiPVNVf1TyQH",
"poolStatus": null },
"mintName": null, "mintSymbol": null, "mintImageUrl": null,
"mode": "Agent", "modelId": 5, "modelName": "Claude Opus 5",
"risk": 80, "locked": false, "paused": false,
"targetAsset": "57houCUPYrnJ1VCGDqTBLaEpE3ZpQUkNzRcY72igLryJ",
"targetLeverageX": 5,
"feesClaimed": "0", "protocolFees": "0", "routedToLp": "0", "routedToBankroll": "0",
"profitSwept": "0", "paidToHolders": "0", "tokensBurned": "0", "creditSpent": "0",
"paysHolders": true,
"openPositionsCount": 0,
"createdAt": "2026-09-23T01:34:04.000Z",
"updatedAt": "2026-09-23T01:34:12.766Z"
}Two fields worth reading carefully#
A row carries two different symbols#
quoteSymbol is the stock the launch is priced in. mintSymbol is the launched token's own symbol, from its Token-2022 metadata. They are deliberately prefixed differently because a row carries both and confusing them mislabels the whole list. Both can be null, and quoteSymbolSource says which of the two sources produced the quote symbol when it is not.
paysHolders is not a payment#
It is profit_to_holders_bps > 0. A true value means a share of profit funds the buyback, which burns supply. Nothing is ever paid to a holder's wallet, and a list sorted by paysHolders is a list sorted by how much of profit goes to the burn. See buyback and burn.