{"schema_version":"2.0","labels":{"coverage":{"full":"the mint is inside our live window (created while our capture was up, still tracked): every field is computed from our own per-event tape, typically < 2 s behind the chain.","thin":"the mint is not in the live window (older than ~2 h of silence, created during a capture gap, or not a pump.fun mint): the card carries only what can be computed now — our resolved launch record if we have one, the current on-chain mint + bonding-curve state read from RPC, the creator's prior, and market base rates. Fields we cannot compute are null with a reason. Never a guess."},"status":{"live_curve":"bonding curve still open (not complete, not migrated)","curve_complete":"the curve reported complete; migration to PumpSwap pending or unobserved","migrated_graduated":"migrated to a pool AND the curve was witnessed at >= 84 SOL (a true graduation)","migrated_below_grad":"migrated to a pool without an observed curve balance of at least 84 SOL; classified as a below-threshold close","historical":"outside the live window; status is our resolved record (graduated / rugged / terminal_rs)","onchain_only":"no live tape and no history; status is the current bonding-curve account as read from RPC","not_pump_fun":"no pump.fun bonding curve exists for this mint"},"risk_label":{"rug_flagged":"at least one rug/close flag fired (see rug_flags and flags for mechanism + first-seen time)","mayhem":"mayhem-class launch with 2B supply; this classification does not predict its outcome","concentrated":"holder structure dominated by few wallets: top-5 >= 50% of supply, or create-slot bundle >= 25%, or insider share >= 20%","stalled":"no new buyer for 30 s after the first 2 minutes, or zero buys in the last 60 s past 2 minutes of age","active":"none of the above fired at generation time","unknown":"not enough data to label (thin coverage)"},"confidence":{"meaning":"how much data the label rests on at generation time (coverage, trade count, feed lag) — NOT a measure of predictive accuracy; no label on this API is a forecast","high":"full coverage, >= 20 trades observed, feed < 5 s behind the chain","medium":"full coverage with 5-19 trades, or feed 5-30 s behind","low":"thin coverage, or < 5 trades, or feed > 30 s behind — treat labels as weak priors"},"caveats":{"same_block_direct_cluster_share":"wallets that bought directly from the curve in the same block as at least one other direct buyer; matching timing does not establish coordination or common ownership","terminal_buy_share":"buys routed through terminal contracts (GMGN, Axiom, ...) — a route, not proof that a human placed the order","base_rates_vs_flags":"base rates come from the RESOLVED history (rugged = >= 5 SOL peak then <= 25% of peak, or creator sold >= half); live rug_flags fire on partial evidence within seconds with their own thresholds — related, not the same measurement","labels":"heuristics derived from public on-chain data; nothing here is a prediction or financial advice"},"rug_flags":{"creator_sold":"the creator wallet sold tokens (share in flags.creator_sold.tokens_share)","bundle_dumped":"wallets that bought in the create slot have sold most of their tokens","curve_drained":"curve SOL fell >= 80% from its peak (peak >= 1 SOL) before any migration","pool_drained":"PumpSwap pool quote reserves fell >= 80% from the opening reserve","curve_closed_low":"the curve completed below 84 SOL (a close, never a graduation)","migrate_below_grad":"a pool was created for a curve that never reached 84 SOL"},"history":{"graduated":"1 = the curve was observed at >= 84 SOL before migrating; this API uses observed reserves rather than the completion flag alone","rugged":"1 = DRAIN (curve held >= 5 SOL real and later fell to <= 25% of its running peak, before any migrate) or DEV DUMP (the creator sold at least half of its tokens); rug_dt_s = seconds after launch","terminal_rs":"curve SOL when we stopped observing the mint (null = unresolved)","peak_rs":"highest curve SOL witnessed","dev_first_sell_dt_s":"seconds after launch of the creator's first sell (null = never seen)"},"rhc":{"chain":"Robinhood Chain, EVM chain id 4663 (eip155:4663), 100 ms blocks, FCFS sequencer; launchpad Pons V2 (constant-product curve, 4.2 ETH graduation)","same_block_direct_cluster_share":"share of circulating tokens held by wallets that bought DIRECTLY from the curve (not through a terminal router) in a 100 ms block where >= 2 direct buys landed; matching timing does not establish coordination or common ownership","terminal_holdings_share":"share of circulating tokens held by wallets whose buys came through a terminal / aggregator router; routing does not identify a human or bot","router_join_resolved_share":"share of buys linked to an observed sender address (direct buys, or router transactions joined to their sender)","recent_flow":"last_2s / last_6s count observed trade timestamps in (response time - window, response time]; new buyers count each resolved wallet's first observed buy. Timestamps use block time when present, otherwise receipt time. Counts expire without new events; a zero on a stale feed does not prove inactivity (check meta.is_stale)","price_multiple_vs_launch":"marginal curve price now / at launch for ETH-paired curves (constant product, virtual reserves 1.68 ETH / 1e9 tokens); null otherwise","snipe_tax":"buys in the first 30 blocks (3 s) after launch pay a decaying tax; in_tax_window flags that period","status":"live_curve | curve_complete (CurveCompleted seen) | graduated (PoolGraduated seen) | unknown (address not in our launch window)","coverage":"full = launched inside our event window, every trade observed; thin = launch facts + lifecycle only (older than the trade-retention window or launched before the window opened)"},"risk_checks":{"scope":"pump.fun mints with full live coverage; all requested mints required; feed lag <= 5 s at evaluation","status":"flags_observed = documented flags exist; no_flags_observed = none of those flags observed, not a safety verdict; insufficient data is unpaid","evidence":"first_seen_at is the flag's original observation time; snapshot_slot is the overall snapshot slot, not necessarily the flag's event slot","watch":"cursor advances for first-observed creator_sold, bundle_dumped, curve_drained, pool_drained, curve_closed_low, migrate_below_grad flags or lifecycle transitions; it does not report every trade, concentration change or flow fluctuation","cursor":"opaque, bound to the exact set of mints, valid for 24 h; free watch initialization establishes a baseline; a paid check returns an updated cursor","retry":"retry the exact signed payment and original arguments within 10 min to recover its original result; a replay is marked and its freshness ages; an uncertain settlement is reported explicitly and must be reconciled before another purchase"}},"envelope":{"type":"object","required":["ok","schema_version","generated_at","t","coverage","data","meta"],"properties":{"ok":{"type":"boolean"},"schema_version":{"type":"string","const":"2.0"},"generated_at":{"type":"string","format":"date-time"},"t":{"type":"number","description":"unix seconds at generation"},"coverage":{"type":"string","enum":["full","thin"],"description":"the mint is inside our live window (created while our captur / thin = the mint is not in the live window (older than ~2 h of silen"},"data":{"type":"object","example":{"...":"route specific"}},"meta":{"type":"object","properties":{"source":{"type":"string"},"version":{"type":"string"},"feed_lag_s":{"type":["number","null"],"description":"seconds between the newest event in our tape and now"},"is_stale":{"type":"boolean","description":"feed exceeds the route's freshness limit (5 s for compact risk checks, 30 s otherwise)"},"last_slot":{"type":["integer","null"]},"price_usd":{"type":["number","null"]},"next":{"type":"object","description":"related resources worth calling next (paths relative to base_url)"},"disclaimer":{"type":"string"}}}}},"graduation_law":"graduation = the curve witnessed at >= 84 SOL by our capture; a completion or pool below that is a close","base_rates":{"window_days":7,"launches":193096,"grad_rate":0.0248,"rug_rate":0.6293,"dev_sold_rate":0.7583,"reached_5_sol_rate":0.2272,"resolved_share":0.974,"computed_at":1789076482.0451791,"definitions":{"grad_rate":"share whose curve we witnessed at >= 84 SOL before migrating","rug_rate":"share flagged rugged: drain (>= 5 SOL peak then <= 25% of peak) or dev dump (creator sold >= half)","dev_sold_rate":"share whose creator sold at least once","reached_5_sol_rate":"share whose curve ever held 5 SOL","population":"pump.fun launches of the window aged >= 1 h (outcomes resolved), mayhem included"}}}