Developer reference

Agents

No API key, no signup. On Solana an agent launches a coin by posting one JSON intent and paying one SOL transaction; the engine creates the coin within seconds, and every buy in its first three slots pays a 99% opening fee, so early bots and bundles pay to jump the line. The OTC desk and the Summit Bounty are JSON too. How a coin reaches the other chains is below.

The interface is optional.Everything the site does, an agent can do over JSON and one signature.

Start with a launch
01

Launch on Solana

One intent, one payment. The engine does the rest.

A launch: your agent posts the coin and pays 0.25 SOL to Longevity's deployer. The worker creates the coin within seconds from a mint derived from a secret; every buy in the first three slots pays 99% (a bot or a bundle can still buy there, and pays 99% to do it); then the worker traces the first slots of buyers and serves that bundle check from the coin's endpoint. The creator's share of the trading fees builds up from the first trade and is paid to the launcher as the coin grows (nothing for 3 days, then a quarter of what has built up from a $50K peak, topped up at most every 6 hours, and everything at graduation; it is forfeited if the launcher's wallets sell more than half of what they bought in the first 3 days, or if the coin has not graduated and goes 7 days without a trade), or, when the intent names the holders as its destination, paid to them as often as every 10 minutes, by how long each has held. The launcher's own coins earn holder rewards like any holder's, and a forfeit never changes that. If the worker cannot create the coin, the payment is refunded.

A launch from the command lineShell, curl
# 1. settings: the published price, fee choices and caps
curl -s https://longevity.trading/api/launch/solana/blind/info

# 2. the intent: the coin plus the wallet that pays. The reply carries one unsigned SOL payment (base64)
curl -s -X POST https://longevity.trading/api/launch/solana/blind/intent \
  -H 'content-type: application/json' \
  -d '{"ticker":"MYT","name":"My Token","launcher":"<your wallet>","feeBps":100,"devBuyLamports":"500000000"}'

# 3. check the payment before signing (engine/src/tx-check.mjs): exactly the published price, to the published
#    deployer, carrying this intent's reference. Then sign it, send it, and tell the engine the signature
curl -s -X POST https://longevity.trading/api/launch/solana/blind/<id>/paid -H 'content-type: application/json' -d '{"sig":"<signature>"}'

# 4. poll until status is live; the mint appears then, at the same moment it appears for everyone
curl -s https://longevity.trading/api/launch/solana/blind/<id>

Check the payment transaction before your wallet signs it. The price, the reused-ticker fee and the deployer are published to the browser at build time (lib/launchpad/engineConfig.ts), never read from an API reply, so a bad server cannot move the goalposts. Never share your private key.

Engine endpointsNo API key
GET
/api/launch/solana/blind/info

The launch's settings: the price, the reused-ticker fee, the fee choices, the opening fee (`antiSniper`), the caps, whether launches are configured or paused, and the other chains with their pool fees

POST
/api/launch/solana/blind/check

{ ticker, name, imageHash? }: ticker protection. Flags a ticker or image an older coin used (a reused ticker costs more) and refuses a name that reads as a brand or a slur

POST
/api/launch/solana/blind/image

The image bytes (PNG, JPG, GIF or WEBP, 1 MB at most) as the body; answers { hash } to pass with the intent

POST
/api/launch/solana/blind/intent

The coin plus `launcher`: answers { id, reference, payment, dupFeeLamports, xchainLamports, devBuyLamports }. `payment` is the one unsigned SOL transaction (base64) the launcher signs. `payoutDest` fixes where the creator's share goes (below); absent, the launcher's wallet

{ticker, name, description?, website?, xUrl?, telegram?, sourceUrl?, imageHash?, launcher, feeBps, devBuyLamports?, payoutDest?, pairWith?, chains?, evmPayout?}
POST
/api/launch/solana/blind/<id>/paid

{ sig }: records the payment the wallet just sent (only what is on chain counts) and starts the launch

GET
/api/launch/solana/blind/<id>

The launch's public state: status (awaiting_payment, paid, launching, live, refund_due, refunding, refunded, expired), the mint once it is live, `indexed` once its page exists

GET
/api/launch/solana/blind/intent

A wallet's launches, a mint only once each coin is live

?wallet=<address>
GET
/api/launch/solana/blind/pairs

Coins launched here that match, or whether one coin can be the pair for a fee choice: the chain must end in SOL and go at most two deep, a filled curve waits for its pool, and the raise's move on the parent is reported, never refused

?q=<text> or ?check=<mint>&feeBps=
GET
/api/engine/coin/<mint>

What the engine knows about a coin: the launch (fee choice, opening fee, reused-ticker fee, graduation, peak market cap), the ticker flags, the creator's trading fees, the graduation rebates, where it stands in the bounty, its pair and children, and its other chains. 404 for a coin the engine did not launch

POST
/api/engine/route

A trade on a coin paired with another coin launched here, routed through its parents in one transaction (SOL, parent, coin on a buy; the reverse on a sell). Same reply shape as /api/launch/solana/swap

GET
/api/otc/feed

The last filled deals and the desk's totals

GET
/api/otc/deals

A wallet's deals, made and received

?wallet=<address>
POST
/api/otc/deals

{ blob }: posts a deal the maker signed in their browser; the server rebuilds it from its terms and demands identical bytes

GET
/api/otc/deals/<id>

One deal: its terms, its state, the seller's flags, and whether a test run of it passes

GET
/api/otc/quote

What the same sale would get on the open market right now, for the comparison

?mint=&amount=&quote=SOL|USDC
GET
/api/otc/book

The open book: with ?mint= one coin's offers (sells cheapest first, buys dearest first, each priced now against the pool), the best of each side, the spread and the last fills; with ?wallet= that wallet's open offers; alone, every coin with open offers

?mint=<mint> | ?wallet=<address>
GET
/api/otc/book/preview

What a fill of that many coins settles at right now: the price used, the quote, the fee, the net, and whether the pool sits inside the offer's limit

?offer=<address>&fill=<base units>
POST
/api/otc/book/tx

The dealer API: an unsigned transaction for a book action, built by the same code the browser uses, with a fresh blockhash; sign with the fee payer and send it yourself. { action: 'post', maker, mint, side, pricing, amount, priceQ64 | total, offsetBps, boundQ64, minFill?, expiresAt?, taker?, quoteMint? } | { action: 'fill', offer, taker, fill, maxQuote? } | { action: 'cancel', offer } | { action: 'closeExpired', offer, anyone }

GET
/api/otc/rfq

Open requests for quotes: a wallet's signed note of what it wants to move, with how many offers reserved for it already answer

?mint=<mint> | ?wallet=<address>
POST
/api/otc/rfq

{ wallet, mint, side, amount, hours, note?, ts, signature }: post a request, signed by the wallet over the text GET /api/otc/rfq?message=1 describes; { close: id, wallet, ts, signature } withdraws one. Answer a request by posting a book offer with taker = the asker

GET
/api/otc/rfq/<id>

One request and the offers on the book that answer it

GET
/api/bounty

The weekly Summit Bounty: this week's pool and countdown, the rule (tiers, the 24-hour check, the split), coins in their check, past weeks

The rules an agent should know

feeBps
The trading fee, one of the published choices (fees in the info reply: 1% or 3%). Every launch opens with the fee in antiSniper in the info reply: 99% on the first three slots, about 1.2 seconds, then the coin's fee. It is a fixed rule, so an antiSniper field in the request is ignored. devBuyLamports (optional, 0.001 to 10 SOL in lamports) is the creator's first buy: added to the payment, made inside the launch transaction as the pool's first swap at the normal fee, delivered to the launcher's wallet.
pairWith
SOL when absent, or the mint of a coin launched here. Check it first with /api/launch/solana/blind/pairs?check=: the chain of pairs must end in SOL and go at most two deep, a filled curve waits for its pool, and the check reports what the raise would move the parent without refusing it. A paired coin's curve is priced in its parent, so a buy of it buys the parent first, and it launches on exactly the chains its parent is on.
payoutDest
Where the creator's share goes, fixed at launch; absent, the launcher's wallet. { kind: "solana", address } another Solana wallet. { kind: "wallet", chain, address, asset } a wallet on another chain, delivered through Longevity's payout wallet in that chain's coin or USDC, offered only where the info reply says anyChainPayouts. { kind: "handle", platform, handle } an @handle on X, TikTok, Instagram, GitHub or Twitch, where the money waits until its owner signs in and names a wallet, accepted only on the platforms the info reply lists in handlePlatforms (the ones whose sign-in is switched on here; an empty list means none). Those three are paid only as the schedule above releases money, and a forfeit reaches none of them. { kind: "holders" } the coin's holders: nothing is held or locked; as often as every 10 minutes the worker snapshots the holders and pays the share that came in, in SOL. Each round's pot is split by coins held times the multiplier for how long you have held them: 1× after 10 minutes, 2× after an hour, 3× after two hours, 4× after three hours and 5× after four hours. Coins you add later start their own clock and do not change what your older coins count for. Sell, or move coins out, and every coin the wallet holds starts over at round one: it earns no share that round, and that share goes to the wallets that stayed. What it was already owed stays owed. Coins bought since the last round count for nothing in that round, and a wallet holding less than $20 of the coin earns no share that round. Final once set; only a community takeover changes it. /api/engine/coin/<mint> carries the destination and the rounds paid.
chains and evmPayout
Other chains, only the ones the info reply marks live. The coin keeps 5% of its supply per picked chain and opens that chain's pool at the Solana price when it graduates; xchainLamports in the intent is the published price for that wiring.
OTC deals
A named counterparty, one transaction, two ways to price: a fixed total for any Solana coin (engine/src/deal.mjs), or at market for a coin launched here (engine/src/market-deal.mjs): the deal_guard program reads the coin's pool when the deal lands and settles at that price plus the maker's offset, inside the maker's signed floor or ceiling, only while the pool sits within the site's tolerance of a reference price Longevity posts on chain. The maker signs with a durable nonce so the signature keeps; nothing moves until the taker signs and sends it, and then every leg settles together or none does. The program fails the transaction after the deadline; a deal lives 7 days at most. A flat 0.3% fee on the price, taken from the seller's proceeds and sent to the treasury. Call parseDeal or parseMarketDeal before signing: each rebuilds the deal from its terms and demands identical bytes. GET /api/otc/pool?mint= gives the pool a market deal prices against.
The Summit Bounty
/api/bounty carries the rule: the tiers with the line a coin must break and where it must still be 24 hours later, and each winner's split, 30% to its creator, 50% to its top 50 holders and 20% to buying the coin in its own pool and burning it.
02

A coin on the other chains

A coin reaches an EVM chain from its Solana launch, not from here.

To put a coin on an EVM chain, name the chain in chains on the Solana launch intent above. No chain has a launch form of its own. There is no contract an agent calls to launch a coin on an EVM chain. The coin keeps 5% of its supply for each picked chain. Its token on that chain is created by the TwinOFTFactory, and its pool there opens when the coin graduates on Solana, at the Solana price.

Base

Chain 8453

No Longevity contract address is published for this chain.

Robinhood Chain

Chain 4663

No Longevity contract address is published for this chain.

BNB Chain

Chain 56

No Longevity contract address is published for this chain.

Hyperliquid

Chain 999

No Longevity contract address is published for this chain.

An address appears here only for a chain whose status is live. Never share your private key, and read the source before you let an agent sign against any contract.

What an agent can read

chains in the info reply
Each chain with live and feeLamports, the published price for wiring a coin to that chain. Only a chain marked live can be named in the intent.
xchain in /api/engine/coin/<mint>
The chains the coin picked, where each slice stands (slices), and the coin's price on each chain against Solana (view) once its pools are open.
TwinDeployed
The TwinOFTFactory event that names the coin's token on a chain and its Solana mint. Use it to join the two.
Listed
The AlignedListingFactory event that announces the coin's pool on a chain. Signatures and topic0s are on the indexing guide.
03

Read the API

JSON endpoints, plus a plain-text agent reference.

Public endpointsNo API key
GET
/api/launch/list

Browse and sort launches (EVM index)

?chain=base|robinhood|bnb&sort=live|new|mcap|volume|gainers|holders&window=1h|24h|all&limit=50
GET
/api/launch/feed

Latest launches and trades

GET
/api/launch/meta/<token>

Image, description and links

GET
/api/quotes/inspect

What the site reads about an ERC-20 on a chain: symbol, decimals, price and liquidity

?chain=base|robinhood|bnb&address=0x…
GET
/llms.txt

Machine-readable reference

GET
/api/integrate/kit.json

Integration kit as JSON: the engine's facts, contracts, event topics, constants, the stream

GET
/api/openapi.json

OpenAPI 3.1 for every public read endpoint

GET
/api/stream

Real-time launches, trades and curve changes (server-sent events)

?chain=base|robinhood|bnb&since=<cursor|unix|ISO>
Read endpointsHTTP reference
GET https://longevity.trading/api/engine/coin/<mint>            # the engine's view of a coin: creator fees, rebates, bounty, pair
GET https://longevity.trading/api/bounty                        # this week's Summit Bounty
GET https://longevity.trading/api/engine/stakes?wallet=<wallet>  # a wallet's staking positions and claimable SOL (engine/src/stake-vault.mjs builds the stake / unstake / claim instructions)
GET https://longevity.trading/api/otc/feed                      # the OTC desk's filled deals and totals
GET https://longevity.trading/api/launch/list?chain=base|robinhood|bnb&sort=live|new|mcap|volume|gainers|holders&window=1h|24h|all&limit=50
GET https://longevity.trading/api/launch/feed              # latest launches and trades
GET https://longevity.trading/api/launch/meta/<token>      # image / description / links
GET https://longevity.trading/api/quotes/inspect?chain=base|robinhood|bnb&address=0x…   # what the site reads about an ERC-20: {ok, symbol, decimals, usd, liquidityUsd, warnings, blockers}
GET https://longevity.trading/llms.txt

Raw 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. Lamports in the engine's replies are decimal strings too.

Poll modestly and back off on errors. Indexing and server-side caching mean a response can lag the chain, even when an HTTP response uses no-store.

04

Trade on an EVM chain

One Uniswap v4 pool per coin per chain, open from graduation.

Swap

Speak Uniswap v4

A coin's pool is a Uniswap v4 pool with tick spacing 200, the dynamic-fee flag in the fee field and one hook, the chain's FeeStyleHook. Do not rebuild the key by hand: get it with poolKeyOf(token) on the AlignedListingFactory, or you can compute the wrong pool id. The fee a swap pays now is quoteFee(key, params) on the hook. The quote is the chain's native coin, or for a paired coin its parent coin's token on that chain. Swap through the Universal Router with a V4_SWAP command, or any router that speaks v4.

Read

Price on every chain

xchain.view in /api/engine/coin/<mint> carries what the coin costs on each chain against Solana. Before graduation the token exists on a picked chain and has no pool, so there is nothing to trade there yet.

Stock pairings are held back and not offered here. Where a coin from elsewhere is quoted in an issuer-registry stock token, those are third-party securities offered under Regulation S. The site recognizes them from issuer registries, not on-chain names.