{"openapi":"3.1.0","info":{"title":"longevity.trading public API","version":"2.0.0","summary":"Launch higher. Last longer. The cross-chain launchpad and OTC desk with a fairer open, holder rounds every 10 minutes and one supply on every chain.","description":"Read-only JSON over Longevity's launch index on Solana and on each EVM chain that is live, the OTC desk, the Summit Bounty, the integration kit and a server-sent-event stream. No API key. Full guide: https://longevity.trading/integrate","contact":{"name":"@Longevitylaunch on X","url":"https://x.com/Longevitylaunch"}},"servers":[{"url":"https://longevity.trading"}],"tags":[{"name":"launches"},{"name":"protocol"},{"name":"integration"}],"paths":{"/api/launch/list":{"get":{"operationId":"get_launch_list","summary":"Browse launches","description":"The list every tab of the home page reads. Raw amounts are decimal integer strings in the quote's decimals (`quote_decimals`); `price_quote` / `fdv_quote` are numbers in the quote asset; `*_usd` fields are null when the quote has no price. Cache: public, s-maxage=2, stale-while-revalidate=10. Example: /api/launch/list?chain=base&sort=new&limit=50","parameters":[{"name":"chain","in":"query","description":"one chain; omitted = every chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"sort","in":"query","description":"live (outside-wallet activity first; trending is an alias), new, mcap, volume, gainers, holders","schema":{"type":"string","enum":["live","new","mcap","volume","gainers","holders"]}},{"name":"window","in":"query","description":"the volume window for sort=volume|gainers","schema":{"type":"string","enum":["1h","24h","all"]}},{"name":"filter","in":"query","description":"a facet","schema":{"type":"string","enum":["fee0","burn","usdg","gitlawb","today","stock","holders","platform","parasite","posters"]}},{"name":"limit","in":"query","description":"rows per page, 1..200","schema":{"type":"integer"}},{"name":"offset","in":"query","description":"page offset, up to 100000","schema":{"type":"integer"}},{"name":"quote","in":"query","description":"one exact quote-asset address: every coin paired with it (combine with `chain`)","schema":{"type":"string","format":"address"}},{"name":"format","in":"query","description":"csv = the same rows as text/csv (RFC 4180, CRLF); omitted = JSON","schema":{"type":"string","enum":["json","csv"]}}],"responses":{"200":{"description":"{ sort, window, chain, filter, quote, limit, offset, has_more, ethUsd, launches: LaunchRow: { chain, chain_id, token, token_id, launcher (raw on-chain: the address the pool event names), creator (use this for display / attribution), quote, quote_key (eth|usdg|stock|custom), quote_symbol, quote_decimals, pool_id, hooks, start_tick, lp_fee (pips), supply (wei string), name, symbol, image_url, description, website, x_handle, telegram (https://t.me/…), tweet_url (https://x.com/<user>/status/<id>), kind (pool|curve|listing), curve, graduated, refunding, graduation_threshold, phantom_quote, creator_tax_bps, curve_raised, snipe_window, snipe_start_bps, airdrop_bps, airdrop_pool, pool_opened_at, pools[] { pool_id, quote, token_is_currency0, sqrt_price_x96, tick, supply_bps }, sqrt_price_x96, tick, price_quote, fdv_quote, quote_usd, price_usd, fdv_usd, volume_quote, volume_1h, volume_24h, volume_usd, buys, sells, trades_1h, trades_24h, traders_1h_ex, traders_24h_ex, holders, last_trade_at, block_time, tx_hash, recipients[], reward_pool, fee_vault, fee_mode, x_recipients[] }[] }. With format=csv: text/csv, one row per launch (chain, chain_id, token, name, symbol, launcher, kind, quote, quote_symbol, quote_decimals, lp_fee_pips, supply, price_quote, price_usd, fdv_quote, fdv_usd, volume_quote, volume_usd, volume_24h_quote, buys, sells, holders, block_time, tx_hash).","content":{"application/json":{"schema":{"type":"object","description":"{ sort, window, chain, filter, quote, limit, offset, has_more, ethUsd, launches: LaunchRow: { chain, chain_id, token, token_id, launcher (raw on-chain: the address the pool event names), creator (use this for display / attribution), quote, quote_key (eth|usdg|stock|custom), quote_symbol, quote_decimals, pool_id, hooks, start_tick, lp_fee (pips), supply (wei string), name, symbol, image_url, description, website, x_handle, telegram (https://t.me/…), tweet_url (https://x.com/<user>/status/<id>), kind (pool|curve|listing), curve, graduated, refunding, graduation_threshold, phantom_quote, creator_tax_bps, curve_raised, snipe_window, snipe_start_bps, airdrop_bps, airdrop_pool, pool_opened_at, pools[] { pool_id, quote, token_is_currency0, sqrt_price_x96, tick, supply_bps }, sqrt_price_x96, tick, price_quote, fdv_quote, quote_usd, price_usd, fdv_usd, volume_quote, volume_1h, volume_24h, volume_usd, buys, sells, trades_1h, trades_24h, traders_1h_ex, traders_24h_ex, holders, last_trade_at, block_time, tx_hash, recipients[], reward_pool, fee_vault, fee_mode, x_recipients[] }[] }. With format=csv: text/csv, one row per launch (chain, chain_id, token, name, symbol, launcher, kind, quote, quote_symbol, quote_decimals, lp_fee_pips, supply, price_quote, price_usd, fdv_quote, fdv_usd, volume_quote, volume_usd, volume_24h_quote, buys, sells, holders, block_time, tx_hash)."}},"text/csv":{"schema":{"type":"string","description":"The same rows as CSV (RFC 4180, CRLF), one header line then one line per row."}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/live":{"get":{"operationId":"get_launch_live","summary":"One call for a live page","description":"The activity feed, the site totals, the trending strip and (with `sort`) one list page, in one response. The site polls it every ~5 s. Cache: public, s-maxage=2, stale-while-revalidate=10. Example: /api/launch/live?chain=base&sort=live&limit=40","parameters":[{"name":"chain","in":"query","description":"one chain; omitted = every chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"sort","in":"query","description":"live (outside-wallet activity first; trending is an alias), new, mcap, volume, gainers, holders","schema":{"type":"string","enum":["live","new","mcap","volume","gainers","holders"]}},{"name":"window","in":"query","description":"the volume window for sort=volume|gainers","schema":{"type":"string","enum":["1h","24h","all"]}},{"name":"filter","in":"query","description":"a facet","schema":{"type":"string","enum":["fee0","burn","usdg","gitlawb","today","stock","holders","platform","parasite","posters"]}},{"name":"limit","in":"query","description":"rows per page, 1..200","schema":{"type":"integer"}},{"name":"offset","in":"query","description":"page offset, up to 100000","schema":{"type":"integer"}},{"name":"quote","in":"query","description":"one exact quote-asset address: every coin paired with it (combine with `chain`)","schema":{"type":"string","format":"address"}}],"responses":{"200":{"description":"{ at, feed: FeedItem[], totals: { launches, trades, volume_usd, fees_burned_usd, fees_to_creators_usd, usd_partial }, ethUsd, launches: LaunchRow[] | null, has_more, posts, trending: { window, items } }","content":{"application/json":{"schema":{"type":"object","description":"{ at, feed: FeedItem[], totals: { launches, trades, volume_usd, fees_burned_usd, fees_to_creators_usd, usd_partial }, ethUsd, launches: LaunchRow[] | null, has_more, posts, trending: { window, items } }"}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/feed":{"get":{"operationId":"get_launch_feed","summary":"Latest launches and trades","description":"The newest 24 launch and swap events across every chain, newest first. Cache: public, s-maxage=2, stale-while-revalidate=10. Example: /api/launch/feed","parameters":[{"name":"format","in":"query","description":"csv = the same rows as text/csv (RFC 4180, CRLF); omitted = JSON","schema":{"type":"string","enum":["json","csv"]}}],"responses":{"200":{"description":"{ items: ({ kind: 'launch', chain, at, tx_hash, token, name, symbol, launcher, lp_fee, quote_key, quote_symbol, launch_kind, image_url, ... } | { kind: 'swap', chain, at, tx_hash, token, name, symbol, trader, is_buy, is_dev, quote_wei, quote_key, quote_symbol, quote_decimals, usd, image_url })[] }. With format=csv: text/csv, launches and swaps in one flat shape (kind, chain, at, tx_hash, token, name, symbol, trader, is_buy, quote_amount, quote_symbol, quote_decimals, usd).","content":{"application/json":{"schema":{"type":"object","description":"{ items: ({ kind: 'launch', chain, at, tx_hash, token, name, symbol, launcher, lp_fee, quote_key, quote_symbol, launch_kind, image_url, ... } | { kind: 'swap', chain, at, tx_hash, token, name, symbol, trader, is_buy, is_dev, quote_wei, quote_key, quote_symbol, quote_decimals, usd, image_url })[] }. With format=csv: text/csv, launches and swaps in one flat shape (kind, chain, at, tx_hash, token, name, symbol, trader, is_buy, quote_amount, quote_symbol, quote_decimals, usd)."}},"text/csv":{"schema":{"type":"string","description":"The same rows as CSV (RFC 4180, CRLF), one header line then one line per row."}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/search":{"get":{"operationId":"get_launch_search","summary":"Search by name, symbol or address","description":"Substring match on name / symbol, exact match on a token address; at most 20 rows. Cache: public, s-maxage=5, stale-while-revalidate=30. Example: /api/launch/search?q=pepe&chain=base","parameters":[{"name":"q","in":"query","required":true,"description":"up to 80 characters","schema":{"type":"string"}},{"name":"chain","in":"query","description":"one chain; omitted = every chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}}],"responses":{"200":{"description":"{ q, launches: LaunchRow[] }","content":{"application/json":{"schema":{"type":"object","description":"{ q, launches: LaunchRow[] }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/candles":{"get":{"operationId":"get_launch_candles","summary":"OHLCV candles","description":"Sparse whole buckets in quote per token (multiply by `quote.usd` for dollars), at most 2000 including the current bucket; fill gaps from `baseline.price`. `launch.price` is the opening price from the start tick. Cache: public, s-maxage=5, stale-while-revalidate=30. Example: /api/launch/candles?chain=base&token=0x...&interval=5m","parameters":[{"name":"chain","in":"query","required":true,"description":"the chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"token","in":"query","required":true,"description":"the launch token address","schema":{"type":"string","format":"address"}},{"name":"interval","in":"query","description":"default 5m","schema":{"type":"string","enum":["1m","5m","15m","1h","4h","1d"]}},{"name":"from","in":"query","description":"unix seconds; bounded to the launch time and the bucket cap","schema":{"type":"integer"}},{"name":"wallet","in":"query","description":"also return that wallet's trades as markers (`mine`)","schema":{"type":"string","format":"address"}}],"responses":{"200":{"description":"{ interval, from, asOf, baseline: { price, hasPriorTrades }, launch: { t, price }, quote: { symbol, decimals, usd }, supply, candles: { t, open, high, low, close, volume, trades }[], mine }","content":{"application/json":{"schema":{"type":"object","description":"{ interval, from, asOf, baseline: { price, hasPriorTrades }, launch: { t, price }, quote: { symbol, decimals, usd }, supply, candles: { t, open, high, low, close, volume, trades }[], mine }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/holders":{"get":{"operationId":"get_launch_holders","summary":"Holder distribution","description":"Top holders, concentration, the creator's position and sniper-window buyers. `synced` is false while the token's transfer history is still being backfilled. Cache: no-store (5 s server memo). Example: /api/launch/holders?chain=base&token=0x...","parameters":[{"name":"chain","in":"query","required":true,"description":"the chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"token","in":"query","required":true,"description":"the launch token address","schema":{"type":"string","format":"address"}}],"responses":{"200":{"description":"{ synced, holders, supply, top: { holder, balance, bps, tag }[], top10Bps, poolBps, creator: { address, bps, bought, sold, sells }, sniper: { wallets, bps }, notes[] }","content":{"application/json":{"schema":{"type":"object","description":"{ synced, holders, supply, top: { holder, balance, bps, tag }[], top10Bps, poolBps, creator: { address, bps, bought, sold, sells }, sniper: { wallets, bps }, notes[] }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/rewards":{"get":{"operationId":"get_launch_rewards","summary":"Reward-coin payouts","description":"The holder-reward payouts the index has recorded for one coin on one chain. Cache: no-store (5 s server memo). Example: /api/launch/rewards?chain=base&token=0x...","parameters":[{"name":"chain","in":"query","required":true,"description":"the chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"token","in":"query","required":true,"description":"the launch token address","schema":{"type":"string","format":"address"}},{"name":"wallet","in":"query","description":"also total that wallet's payouts (`mine`)","schema":{"type":"string","format":"address"}}],"responses":{"200":{"description":"{ total, burned, rounds, holders_paid, last_at, mine }","content":{"application/json":{"schema":{"type":"object","description":"{ total, burned, rounds, holders_paid, last_at, mine }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/sisters":{"get":{"operationId":"get_launch_sisters","summary":"Sister-coin candidates","description":"Coins on one chain quoted in the same asset, for a sister-coin picker. Cache: no-store. Example: /api/launch/sisters?chain=base&quote=0x...","parameters":[{"name":"chain","in":"query","required":true,"description":"the chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"quote","in":"query","required":true,"description":"the quote asset address","schema":{"type":"string","format":"address"}},{"name":"q","in":"query","description":"name / symbol filter","schema":{"type":"string"}}],"responses":{"200":{"description":"{ candidates: { token, name, symbol, sister, module, fee_mode, image_url }[] }","content":{"application/json":{"schema":{"type":"object","description":"{ candidates: { token, name, symbol, sister, module, fee_mode, image_url }[] }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/public/v1/fees":{"get":{"operationId":"get_public_v1_fees","summary":"Public fee data: totals and per coin","description":"Fees every coin has generated and where they went, from indexed events only, in the buckets the response names. Totals per chain and quote asset across all coins (quote legs only: coin legs are different tokens); one page of coins with both legs. Every bucket: { amount | quote + coin, events, txs (its newest tx hashes) }. Solana: fee claims by source, in lamports. Raw integer strings, no USD. CORS open; unknown parameters are refused at the edge; a busy database answers 503 + retry-after. Cache: public, s-maxage=60, stale-while-revalidate=300. Example: /api/public/v1/fees?chain=base&limit=50","parameters":[{"name":"chain","in":"query","description":"one chain; omitted = every chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"limit","in":"query","description":"coins per page, 1..200 (default 50)","schema":{"type":"integer"}},{"name":"offset","in":"query","description":"page offset","schema":{"type":"integer"}}],"responses":{"200":{"description":"{ version, generated_at, chain, limit, offset, has_more, totals: { chain, quote, quote_symbol, quote_decimals, coins, generated, to: { creator, holders, handles, posters, modules, xchain, protocol, burn, credited, unattributed }, posters_paid_out }[], coins: CoinFees[], solana: { by_source: { source, amount, events, txs }[], asset, note, coins } | null }","content":{"application/json":{"schema":{"type":"object","description":"{ version, generated_at, chain, limit, offset, has_more, totals: { chain, quote, quote_symbol, quote_decimals, coins, generated, to: { creator, holders, handles, posters, modules, xchain, protocol, burn, credited, unattributed }, posters_paid_out }[], coins: CoinFees[], solana: { by_source: { source, amount, events, txs }[], asset, note, coins } | null }"}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/public/v1/fees/{chain}/{token}":{"get":{"operationId":"get_public_v1_fees_chain_token","summary":"Public fee data: one coin, event by event","description":"One coin's fee breakdown (generated, the buckets it went to, a summary, reconciled per leg) and its fee events newest first, each with tx_hash and log_index. chain = solana takes a mint and returns that coin's fee claims by source. Cache: public, s-maxage=60, stale-while-revalidate=300. Example: /api/public/v1/fees/base/0x...","parameters":[{"name":"chain","in":"path","required":true,"description":"base | robinhood | bnb | hyperevm | solana","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm","solana"]}},{"name":"token","in":"path","required":true,"description":"the coin (0x address, or a Solana mint)","schema":{"type":"string"}},{"name":"limit","in":"query","description":"events per page, 1..200 (default 100)","schema":{"type":"integer"}},{"name":"offset","in":"query","description":"events offset","schema":{"type":"integer"}}],"responses":{"200":{"description":"{ version, generated_at, chain, token, name, symbol, kind, quote: { address, symbol, decimals }, coin: { symbol, decimals }, fees: { generated, to, protocol_coin_burned, posters_paid_out, summary, reconciled, last_at }, events: { kind, category, tx_hash, log_index, block_number, block_time, currency, account, amount, quote_amount, token_amount, protocol_amount, creator_amount, tax_amount }[], limit, offset, has_more }","content":{"application/json":{"schema":{"type":"object","description":"{ version, generated_at, chain, token, name, symbol, kind, quote: { address, symbol, decimals }, coin: { symbol, decimals }, fees: { generated, to, protocol_coin_burned, posters_paid_out, summary, reconciled, last_at }, events: { kind, category, tx_hash, log_index, block_number, block_time, currency, account, amount, quote_amount, token_amount, protocol_amount, creator_amount, tax_amount }[], limit, offset, has_more }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/meta/{token}":{"get":{"operationId":"get_launch_meta_token","summary":"Token metadata by address","description":"Name, symbol, description, logo and links the creator registered. The logo is a 512x512 WebP on this domain when it was uploaded here, else the https URL the creator gave. Cache: public, max-age=300. Example: /api/launch/meta/0x...?chain=base","parameters":[{"name":"token","in":"path","required":true,"description":"the launch token address","schema":{"type":"string","format":"address"}},{"name":"chain","in":"query","description":"one chain; omitted = every chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}}],"responses":{"200":{"description":"{ name, symbol, description?, image?, external_url?, x?, website?, twitter?, telegram?, tweet?, extensions?: { website?, twitter?, telegram? }, token, x_recipients?: { handle, vault, bps, user_id? }[] }","content":{"application/json":{"schema":{"type":"object","description":"{ name, symbol, description?, image?, external_url?, x?, website?, twitter?, telegram?, tweet?, extensions?: { website?, twitter?, telegram? }, token, x_recipients?: { handle, vault, bps, user_id? }[] }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/launch/meta/{launcher}/{key}":{"get":{"operationId":"get_launch_meta_launcher_key","summary":"Token metadata by its on-chain URI","description":"The same metadata addressed by a launcher address and a 32-byte key. Same JSON as the by-address form. A Longevity pool's Listed event does not carry this form: use the by-address form, or the Solana mint's own uri. Cache: public, max-age=300. Example: /api/launch/meta/0x<launcher>/0x<key>","parameters":[{"name":"launcher","in":"path","required":true,"description":"the launcher wallet","schema":{"type":"string","format":"address"}},{"name":"key","in":"path","required":true,"description":"the 0x-prefixed 32-byte metadata key","schema":{"type":"string"}}],"responses":{"200":{"description":"{ name, symbol, description?, image?, external_url?, x?, website?, twitter?, telegram?, tweet?, extensions?, token, x_recipients? }","content":{"application/json":{"schema":{"type":"object","description":"{ name, symbol, description?, image?, external_url?, x?, website?, twitter?, telegram?, tweet?, extensions?, token, x_recipients? }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/vote":{"get":{"operationId":"get_vote","summary":"Advisory holder votes","description":"For a launch with a fee module: the proposals to switch its mode, their tallies (weight = min(balance when voting, balance at close), from the holder index) and, with `wallet`, that wallet's own vote. Advisory only: the creator decides; a vote changes nothing on-chain. Cache: no-store. Example: /api/vote?chain=base&token=0x...","parameters":[{"name":"chain","in":"query","required":true,"description":"the chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"token","in":"query","required":true,"description":"the launch token address","schema":{"type":"string","format":"address"}},{"name":"wallet","in":"query","description":"also return that wallet's vote and what it may do","schema":{"type":"string","format":"address"}}],"responses":{"200":{"description":"{ proposals: { id, chain, token, proposer, mode, sister, title, body, created_at, closes_at, state (open|closed|applied), tally: { for, against, voters }, passed, applied_at, applied_tx, my_choice }[], can_vote, can_propose, open_id }","content":{"application/json":{"schema":{"type":"object","description":"{ proposals: { id, chain, token, proposer, mode, sister, title, body, created_at, closes_at, state (open|closed|applied), tally: { for, against, voters }, passed, applied_at, applied_tx, my_choice }[], can_vote, can_propose, open_id }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/quotes":{"get":{"operationId":"get_quotes","summary":"Quote assets on a chain","description":"The fixed quotes (ETH; USDG on Robinhood Chain) and the chain's tokenized-stock registry with live USD prices. Only registry addresses are ever labelled stocks. Cache: no-store (30 s server memo). Example: /api/quotes?chain=base&q=AAPL","parameters":[{"name":"chain","in":"query","required":true,"description":"the chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"q","in":"query","description":"a ticker (AAPL) or an address","schema":{"type":"string"}}],"responses":{"200":{"description":"{ fixed: { key, address, symbol, decimals, usd }[], stocks: { key: 'stock', address, symbol, name, decimals, usd, usdAsOf, logo }[] }","content":{"application/json":{"schema":{"type":"object","description":"{ fixed: { key, address, symbol, decimals, usd }[], stocks: { key: 'stock', address, symbol, name, decimals, usd, usdAsOf, logo }[] }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/quotes/inspect":{"get":{"operationId":"get_quotes_inspect","summary":"Can this ERC-20 be a quote?","description":"On-chain reads, a market-depth check and (Base) a token-safety scan for an arbitrary quote coin. Per-IP limit: 30 per minute. Cache: no-store (10 min server cache). Example: /api/quotes/inspect?chain=base&address=0x...","parameters":[{"name":"chain","in":"query","required":true,"description":"the chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"address","in":"query","required":true,"description":"the ERC-20","schema":{"type":"string","format":"address"}}],"responses":{"200":{"description":"{ ok, symbol, name, decimals, usd, liquidityUsd, warnings[], blockers[] }","content":{"application/json":{"schema":{"type":"object","description":"{ ok, symbol, name, decimals, usd, liquidityUsd, warnings[], blockers[] }"}}}},"400":{"description":"a required or malformed parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/health":{"get":{"operationId":"get_health","summary":"Index freshness","description":"Database reachability and the indexer cursor per chain (block lag, last run, last error). Cache: no-store. Example: /api/health","parameters":[],"responses":{"200":{"description":"{ ok, alerts[], sync: { cursor_block, head_block, last_run_at, last_error }, chains[] }","content":{"application/json":{"schema":{"type":"object","description":"{ ok, alerts[], sync: { cursor_block, head_block, last_run_at, last_error }, chains[] }"}}}}}}},"/api/integrate/kit.json":{"get":{"operationId":"get_integrate_kit_json","summary":"This kit, machine-readable","description":"The Solana launch facts, the EVM contracts with their addresses on a live chain, Uniswap v4 addresses, event signatures and topics, the REST reference and the stream description; versioned. Cache: public, s-maxage=60, stale-while-revalidate=300. Example: /api/integrate/kit.json","parameters":[],"responses":{"200":{"description":"{ version, generatedAt, site, docs, solana, evm, chains: { base, robinhood, bnb, hyperevm }, apis[], rateLimits, stream, metadata, brand, indexing }","content":{"application/json":{"schema":{"type":"object","description":"{ version, generatedAt, site, docs, solana, evm, chains: { base, robinhood, bnb, hyperevm }, apis[], rateLimits, stream, metadata, brand, indexing }"}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/openapi.json":{"get":{"operationId":"get_openapi_json","summary":"OpenAPI 3.1","description":"The public read API, this kit and the stream as an OpenAPI 3.1 document. Cache: public, s-maxage=300, stale-while-revalidate=3600. Example: /api/openapi.json","parameters":[],"responses":{"200":{"description":"OpenAPI 3.1 document","content":{"application/json":{"schema":{"type":"object","description":"OpenAPI 3.1 document"}}}},"503":{"description":"the database is busy: retry after the `retry-after` header (2 s) and keep your last data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/api/stream":{"get":{"operationId":"get_stream","summary":"Real-time events (SSE)","description":"Server-sent events: new coins, swaps, holder-reward payouts and fee events as the indexer writes them. Resume with `Last-Event-ID` or `since=`. Cache: no-store. Example: /api/stream?chain=base","parameters":[{"name":"chain","in":"query","description":"one chain; omitted = every chain","schema":{"type":"string","enum":["base","robinhood","bnb","hyperevm"]}},{"name":"since","in":"query","description":"a cursor from a previous event id, or a moment (unix seconds, unix ms, ISO date; at most 24 h back); omitted = only what happens next","schema":{"type":"string"}}],"responses":{"200":{"description":"text/event-stream","content":{"text/event-stream":{"schema":{"type":"string","description":"text/event-stream"}}}}}}}}}