Skip to main content
POST
One request names the chains and the columns it wants. Each column is ranked and filtered on its own, and answers with its whole ranked set.

Columns

Each column is one stage of a token’s launchpad life; see launchpad terms.

Body

Name at least one chain and at least one column. A repeated chain slug is read once, and every column ranks tokens from all the named chains as one set. Leave a column out to skip it, and send {} to take its defaults. Inside a column, sortBy names the field to rank on, order is desc or asc, a limit outside 1 to 100 is moved into that range rather than refused, and filters adds conditions on top of the column defaults.

Column defaults

Every column applies conditions of its own, on top of your filters:
  • Every column leaves out tokens with no update in the last 24 hours.
  • graduating and graduated keep only tokens with at least 10 holders, 1,000ofliquidityanda1,000 of liquidity and a 5,000 market cap.
  • graduating also leaves out tokens with no update in the last 60 minutes, unless they are at 99.5% of their curve or more.
Your filters can tighten these conditions but not loosen them. A holderCount minimum below 10 on graduated, for example, is raised to 10, and a maxGraduationStaleMinutes above 60 on graduating is lowered to 60.

Sort fields

Tokens with equal values keep a fixed order.

Filters

A token must meet every filter you send, as well as the column defaults. The schema below names each filter; these rules hold across all of them.
The API ignores a filter name it does not know, rather than refusing it. Check spellings: the sort field is holdersCount, but the filter is holderCount.
  • Ranges are { "min": …, "max": … }. Both bounds are inclusive, and either can be left out. A min above max returns 400 VALIDATION_ERROR. Each bound takes the type of the field it bounds: decimal strings for USD values, numbers for counts and percentages.
  • Lists are unions: a token passes when it matches any entry. symbolOrName and excludeSymbolOrName match the symbol or the name, ignoring case, and a word that looks like an address matches the token’s address exactly instead.
  • withAtLeastOneSocial keeps tokens that carry at least one social link. It is the only switch, and false applies no condition.
  • Time limits are lastActivityMinutes, which keeps tokens updated within that many minutes, and maxGraduationStaleMinutes, which drops tokens with no update within that many minutes unless they are at 99.5% of their curve or more. maxGraduationStaleMinutes applies on any column, and graduating caps it at 60. An update is any change to a token’s record, such as a trade, not only curve progress.
twitterReuseCount is accepted but not yet applied: every token passes it.

Response

columns holds one entry per requested column, in the order newPairs, graduating, graduated. Each entry’s deltas is the whole ranked column, one item per rank from 1, and each item’s data is the same token object Token details returns.

Errors

Authorizations

Authorization
string
header
required

Send the API key as Authorization: Bearer <key>.

Body

application/json

A discovery request: one or more chains, up to three columns.

chains
enum<string>[]
required

Chains every column ranks over, as one mixed set.

Chain slug. One spelling per chain, in paths and bodies alike. Only a chain with spot data is published.

Available options:
solana,
base,
bsc,
robinhood,
arc
graduated
null | object

Graduated column; omitted means not requested.

graduating
null | object

Graduating column; omitted means not requested.

newPairs
null | object

New-pairs column; omitted means not requested.

Response

One snapshot per requested column, in page order.

POST /v1/discovery response: one snapshot per requested column, in page order.

columns
object[]
required

The requested columns' snapshots.