Tokens

Token momentum fires — new-token surges + dormant-token revivals

Newest momentum fires, newest first. Two kinds: surge — a token < 30 min old whose market cap runs hard vs its launch MC (tier 'early' ≤10 min / ≥$12k / ≥3× launch MC; 'strong' ≤30 min / ≥$30k / ≥6× and ≥2× the lowest sample of the last 3 min; 'breakout' ≤2 min / ≥$45k / ≥8×; each tier fires once per mint, and only when SUSTAINED — the level must hold on the current tick and on a sample ≥10 s older, nothing before 20 s of age, so a one-tick same-slot bundle mark is not a surge) — and revival — a token with no 1-minute trade candle for ≥24 h that started trading again, CONFIRMED by real buys + buy volume from the tape (≥5 buys, ≥$500 buy volume, ≥1.5× the pre-dormancy MC), never by the price mark alone. Hard gates on both kinds: liquidity ≥ $1.5k and ≥ 2% of MC when known (a thin-pool 'MC' is an artefact), MC ≤ $100B, and the MC gained must be PAID FOR — buy volume on the tape ≥ 3% × (MC − launch / pre-dormancy MC); a price mark moves MC on ~$0 of volume. Every fire carries the burst tape (buys/sells/volume with 'tape.source' = candles | wallet_trades | null — the open minute candle lands only at rollover, so a < 90 s-old surge is measured on the live wallet tape where covered; unique buyers where the mint is in token_trades coverage), tracked-KOL involvement, the first-20 early-buyer cohort (bundled / sold / sniper wallets), deployer reputation and 'risk_flags[]' (bundled_launch, few_buyers, wash_pattern, thin_liquidity, cold_deployer, sniper_heavy, early_buyers_exiting, sell_pressure, no_tape_trades, no_prior_price, mint_authority_active, transfer_fee). Fires ≥65 min old carry 'outcome' (+1 h MC / peak / low) and '?stats=1' prints per-tier hit-rates — out-of-sample by construction. Filters are DB-native: 'kind', 'tier', 'mint', 'launchpad', 'deployer_tier', 'min_mc_usd'/'max_mc_usd', 'min_buys', 'exclude_flags' (comma list), 'only_clean=1'. Cursors 'since'/'before' on fired_at. Pushed live on the 'token:surges' WebSocket channel and the webhook registry as 'token:surge' / 'token:revival'. The thresholds are echoed in 'definitions' so the docs can never drift from what fires. PRO+.

get/tokens/surges

Request

  • Base URL: https://madeonsol.com/api/v1
  • URL: https://madeonsol.com/api/v1/tokens/surges
  • Auth: HTTP bearer

Query parameters

kind'surge' | 'revival'
tier'early' | 'strong' | 'breakout'

Surges only (400 with kind=revival)

mintstring
sincestring date-time

Only fires after this instant (use pagination.next_since)

beforestring date-time

Page back: only fires before this instant

min_mc_usdnumber
max_mc_usdnumber
min_buysinteger

Buys on the tape at fire time

launchpadstring

e.g. pumpfun, launchlab, pumpswap, raydium

deployer_tier'elite' | 'good' | 'moderate' | 'rising' | 'cold' | 'unranked'
exclude_flagsstring

Comma list of risk flags; rows carrying ANY are dropped. Unknown flag → 400 with known_flags[]

only_clean'1' | '0' | 'true' | 'false'

Only rows with no risk flags

stats'1' | '0' | 'true' | 'false'

Add per-(kind,tier) +1h hit-rates

daysinteger

Stats window

limitinteger

Response

OK

filtersobject
statsobject

Only with ?stats=1: { days, note, rows[] { kind, tier, fires, with_outcome, up_1h, up_1h_pct, median_peak_multiple, p75_peak_multiple, median_mc_1h_multiple, doubled_1h, doubled_1h_pct } }

streamobject

WebSocket pointer for the token:surges channel

definitionsobject

The live thresholds behind every tier / the revival confirmation / each risk flag

notestring

Changes

No recorded changes to this operation across all 1 revision of this API.