Developer reference
Agents
No API key, no signup. A launch is one payable contract call from any wallet: send exactly the factory's launchFee() as value (read it right before sending), plus gas. Everything the site shows is also JSON.
The interface is optional.The same protocol is yours to build with.
Launch a token
One call, from your own wallet.
Base
Chain 8453Robinhood Chain
Chain 4663BNB Chain
Chain 56Call launch(params) on that chain's factory. The example below launches on Base with an ETH quote.
cast send 0xFf66c00C1eE1079B425fEF4e5E6682ae6beb188E \
"launch((string,string,string,address,uint256,int24,uint24,bytes32,(address,uint16)[]))" \
"(My Token,MYT,,0x0000000000000000000000000000000000000000,0,184200,10000,0x$(openssl rand -hex 32),[(0xYourWallet,10000)])" \
--rpc-url https://mainnet.base.org --private-key $PKExample only. Replace the wallet placeholder and review the parameters before sending a transaction. Never share your private key. The contracts have had six internal review passes and no third-party audit: read the verified source before you let an agent sign against them.
Parameters, without the guesswork
quote- ETH uses address zero. For a tokenized stock use its issuer-registry address (
GET /api/quotes?chain=base|robinhood|bnb&q=AAPLlists them with live prices); for USDG on Robinhood Chain,0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168. Any other ERC-20 on the chain works too (pair with any coin): check it first withGET /api/quotes/inspect?chain=base|robinhood|bnb&address=0x…, which returnsblockers(the site refuses those: no readable ERC-20, over 18 decimals, under $10,000 of DexScreener liquidity, GoPlus honeypot / transfer tax / pausable on Base) andwarnings. For any ERC-20 quote callfindSalt(...)first so the token address sorts above the quote. supply0means the default1Bsupply.startTick- Sets the opening market cap. A multiple of
200;184200 ≈ 10 ETHFDV for1Bsupply. lpFee- In pips:
10000 = 1%,20000 = 2%or30000 = 3%. Anything under 1% revertsBadFee. recipients- Your split of the creator share: bps summing to
10000, at most6rows, each at least2bps. The factory registers the protocol'sFeeRouterfirst at3000bps (30%) and scales your rows into the remaining7000(70%).forward()splits the router's balance by a constant, half totreasury()and half topayee();payee()is a second protocol wallet. Empty means your share is burned. Preview the on-chain list withpreviewRecipients(recipients). vaultOf(platformId, handle)- Fees to a social account. Each chain's
SocialVaultFactory(Base0xcc976c58705673bd349E0d1A9f0812575c29bdA1Robinhood Chain0x614e413586c5D298C0A1aF03436e4Cfcd81af40CBNB Chain0xCAe11577F88d7bF8E4fb1DDB241556f008C32F25) maps a handle on a registered platform (1X[a-z0-9_]{1,15},2TikTok[a-z0-9_.]{2,24},3Instagram[a-z0-9_.]{1,30},4GitHub[a-z0-9_-]{1,39},5Twitch[a-z0-9_]{4,25}; lowercase, no @) to a deterministic CREATE2 vault, salted with the platform so the same spelling on two platforms is two vaults: passvaultOf(platformId, "handle")as a recipientpayoutand the locker pays it like any wallet, before the vault even exists. The account's owner claims by signing in with that platform on the site (today X, at/x/<handle>; the other platforms' claims open as their sign-ins ship, and the fees wait in the vault meanwhile): the site's attester signs EIP-712Claim(bytes32 handleHash,bytes32 userId,address to,uint256 deadline)(domainSocialVaultFactory/1) andclaim(platformId, handle, userId, to, deadline, sig, currencies)sweeps the vault toto.userIdis the platform account id as bytes32 (an X id is the numeric id widened) that the handle binds to on its first claim: a signature over the olduint256 xUserIdstruct or a three-fieldClaimwill not verify. Anyone may submit it; funds only ever go toto. Send the handle ↔ vault map asx_recipients({platform, handle, vault, bps}) with the metadata so the site labels the row@handle. launchWithHolderRewards(params)- The holders fee mode (a reward coin): the same
LaunchParamswithrecipientsempty, anything else revertsRecipientsNotAllowed. The factory deploys aRewardPoolfor the launch, returns it as a third value (token, tokenId, pool; alsoRewardPoolCreated(token, pool, quote)andrewardPoolOf(token)) and registers it for your7000bps. Buy-side fees, in the quote asset, are paid out to holders pro-rata by the protocol keeper a few times a day;distribute()is capped per holder on-chain (capOf(holder)), so the keeper cannot misdirect funds. The leg paid in the launch token is burned by anyone viaburnTokenLeg(): on a direct or listed pool that is the sell side, on a graduated curve pool it is the buy side, and on a coin still trading on its curve there is no token leg because every fee is charged in the quote asset. Views:pot(),totalDistributed(),rounds(),circulating().
Read the API
JSON endpoints, plus a plain-text agent reference.
/api/launch/listBrowse and sort launches
?chain=base|robinhood|bnb&sort=live|new|mcap|volume|gainers|holders&window=1h|24h|all&limit=50/api/launch/feedLatest launches + trades
/api/launch/meta/<token>Image, description and links
/api/quotes/inspectCheck a coin before pairing with it
?chain=base|robinhood|bnb&address=0x…/api/launch/rewardsHolder-reward payouts for a reward coin
?chain=base|robinhood|bnb&token=0x…&wallet=0x…/x/<handle>An X account's fee vaults, balances and launches (page)
/llms.txtMachine-readable reference
/api/integrate/kit.jsonIntegration kit as JSON: contracts, v4 addresses, event topics, constants, the stream
/api/openapi.jsonOpenAPI 3.1 for every public read endpoint
/api/streamReal-time launches, trades and curve changes (server-sent events)
?chain=base|robinhood|bnb&since=<cursor|unix|ISO>GET https://nasdegen.fun/api/launch/list?chain=base|robinhood|bnb&sort=live|new|mcap|volume|gainers|holders&window=1h|24h|all&limit=50
GET https://nasdegen.fun/api/launch/feed # latest launches + trades
GET https://nasdegen.fun/api/launch/meta/<token> # image / description / links
GET https://nasdegen.fun/api/quotes/inspect?chain=base|robinhood|bnb&address=0x… # can this coin be a quote? {ok, symbol, decimals, usd, liquidityUsd, warnings, blockers}
GET https://nasdegen.fun/api/launch/rewards?chain=base|robinhood|bnb&token=0x…[&wallet=0x…] # reward-coin payouts: {total, burned, rounds, last_at, mine}
GET https://nasdegen.fun/llms.txtRaw token and quote amounts are decimal integer strings. Use quote_decimals for quote amounts, not a blanket 18 decimals. price_quote and fdv_quote are numbers in the token's quote asset; explicit price_usd, fdv_usd and volume_usd fields are USD values and may be null when pricing is unavailable.
Poll modestly and back off on errors. Indexing and server-side caching mean responses are not a guarantee of the latest chain state, even when an HTTP response uses no-store.
Trade & collect
Standard pools. Direct contract calls.
Speak Uniswap v4
Pools are plain Uniswap v4 with tick spacing 200 and one hook, the chain's LiquidityGate: build the PoolKey with it, not with address(0), or you will compute the wrong pool id. It holds a single permission, beforeAddLiquidity, and reverts LiquidityGated() for anyone but an allow-listed launchpad factory; it never touches a swap, so routing and quoting are unaffected. The quote can be ETH, USDG (Robinhood Chain), a supported issuer-registry stock token, or any ERC-20 the creator paired with (quote_key is custom in the API; quote_symbol then comes from the coin's own contract). Get the actual pool key with poolKeyOf(token) on the factory. Swap through the Universal Router with a V4_SWAP command, or any router that speaks v4.
Pay out accrued fees
Anyone may call collect(tokenId) on that chain's locker to pay out accrued fees. Base locker: 0x52b459199c054A5503F72811Ee7C368956927c1F. Use the matching chain address above.
Tokenized stocks are third-party securities offered under Regulation S. The site recognizes them from issuer registries, not on-chain names.