Deployer tokens

Every token a deployer address has launched, newest first, each with the peak market cap it reached. The summary block scores the address itself: how many launches, how many made it to Raydium, and the best peak any of them hit.

GET/v1/devs/:address/tokens a deployer's full launch history

Example

curl -sS -H "Authorization: Bearer $API_KEY" \
  "https://api.cookin.fun/v1/devs/Deployer123.../tokens?limit=50"

Response

{
  "data": [
    {
      "mint":         "BgNrWZK...",
      "name":         "Sample Token",
      "symbol":       "SMP",
      "image_uri":    "https://ipfs.io/ipfs/Qm...",
      "deployed_at":  "2026-09-20T12:00:00.000000Z",
      "launchpad":    "pumpfun",
      "has_migrated":  true,
      "migrated_at":  "2026-09-20T13:44:00.000000Z",
      "dex_paid":      false,
      "ath_mcap":      412000,
      "ath_slot":      371829104,
      "ath_at":       "2026-09-20T14:02:11.000000Z"
    },
    {
      "mint":         "7Kd2mNx...",
      "name":         "Earlier Attempt",
      "symbol":       "TRY",
      "image_uri":     null,
      "deployed_at":  "2026-09-14T08:11:00.000000Z",
      "launchpad":    "pumpfun",
      "has_migrated":  false,
      "migrated_at":   null,
      "dex_paid":      false,
      "ath_mcap":      18400,
      "ath_slot":      369102447,
      "ath_at":       "2026-09-14T08:19:36.000000Z"
    }
  ],
  "summary": {
    "total_deployed":  37,
    "bonded_count":     4,
    "bond_rate":       10.81,
    "best_ath_mcap": 412000,
    "ath_sample_size": 29,
    "ath_milestones": [
      { "mcap":  10000, "reached": 17, "pct": 58.62 },
      { "mcap":  20000, "reached":  9, "pct": 31.03 },
      { "mcap":  30000, "reached":  7, "pct": 24.14 },
      { "mcap":  50000, "reached":  4, "pct": 13.79 },
      { "mcap":  75000, "reached":  3, "pct": 10.34 },
      { "mcap": 100000, "reached":  2, "pct":  6.90 }
    ],
    "ath_mcap_percentiles": {
      "p25":  6200,
      "p50": 11400,
      "p75": 38900,
      "p90": 94500
    }
  },
  "meta": {
    "request_id": "F9x...",
    "cached_at":  "2026-09-20T15:00:00Z",
    "page": { "limit": 50, "offset": 0, "returned": 2 }
  }
}

Query parameters

ParamTypeDescription
limitintegerTokens per page. Defaults to 50, capped at 100. A larger value is clamped, not rejected.
offsetintegerTokens to skip. Defaults to 0. Launch bots can have tens of thousands of tokens, so page rather than trying to pull a history in one call.

Either param returns 400 if it is not a non-negative integer. Broken pagination fails loudly instead of silently re-serving page one.

Token schema

FieldTypeDescription
mintstringToken mint address (base58).
namestringToken name.
symbolstringToken symbol.
image_uristring | nullToken image, once metadata has been retrieved.
deployed_atstring (ISO 8601)When the token was deployed. Results are ordered by this, newest first.
launchpadstringWhich launchpad deployed it: pumpfun, meteora, bags, or raydium_launchpad.
has_migratedboolWhether the token graduated to Raydium/PumpSwap.
migrated_atstring (ISO 8601) | nullWhen it graduated. Null if it never did.
dex_paidboolWhether a DexScreener paid order was confirmed.
ath_mcapinteger | nullHighest market cap the token ever reached, in USD. See the note below on nulls.
ath_slotinteger | nullSolana slot of the trade that set the peak.
ath_atstring (ISO 8601) | nullWall-clock time of that same trade.

Summary schema

FieldTypeDescription
total_deployedintegerTokens this address has ever launched. Covers the whole history, not the page.
bonded_countintegerHow many of those graduated.
bond_ratefloatbonded_count / total_deployed as a percentage (0..100). 0.0 for an address with no launches.
best_ath_mcapinteger | nullBest peak across every token this address launched, in USD.
ath_sample_sizeintegerHow many of this address's tokens have a recorded peak. This is the denominator the percentiles were computed over, and it can be well below total_deployed.
ath_milestonesarraySurvival curve for this address. One entry per market cap rung, ascending, each with mcap (USD), reached (how many tokens got there) and pct (share of ath_sample_size).
ath_mcap_percentilesobject | null valuesSpread of this address's peaks as p25, p50, p75, p90, each an integer USD market cap, or null when nothing has a recorded peak.

Reading the milestones

ath_milestones answers "how often does this address produce a token that goes anywhere". Rungs are cumulative, so a token that peaked at 120k counts on every rung including 100k, and a token that peaked at 9k counts on none.

The shape of the curve carries the signal. An address where 40% clear 10k and 3% clear 100k is a different operation from one where 5% clear 10k and 4% clear 100k, even though their best launch might be identical. pct is a share of ath_sample_size, not of total_deployed, so it never counts a token we have no peak for as a failure.

Rungs may be added in future releases. Read the array in order and key off each entry's mcap rather than its position.

Reading the percentiles

best_ath_mcap is one launch, and one lucky launch lifts it on its own. p50 is the more honest number for judging an address: it says what a typical launch of theirs actually reaches.

Every percentile is a peak that one of this address's tokens really hit. We pick an observed value rather than interpolating between two, so you can always point at the launch a figure came from. With an even sample the lower of the two straddling values is returned.

Tokens with no recorded peak are left out of the calculation entirely rather than counted as zero. Compare ath_sample_size against total_deployed before trusting a median: a p50 drawn from 6 of 800 launches describes those 6, not the address.

Why ATH can be null

A null ath_mcap means no peak was ever recorded for that token, not that it peaked at zero. The two are different claims and this endpoint does not collapse them, so treat null as unknown rather than as a low score.

Peaks are recorded from the point a token is tracked. Tokens that stopped trading before peak tracking existed have no value and never will. Everything launched since has one.

Empty results

An address that has never deployed a token returns 200 with an empty data array and a zeroed summary, not a 404. "This address has launched nothing" is a real answer to the question you asked.

A malformed address returns 400. The address must be 32-44 base58 characters.

Bug or unclear docs? Include the request_id from the response envelope when reporting.

Ready to build? Mint an API key.