Docs
How launching works and how fees are paid.
Launching
You give a name, a ticker and a picture, then approve twice. The first creates the token and opens its pool; the second locks the pool and takes your own first buy, in one instruction that cannot do one without the other. None of it can be changed afterwards.
1,000,000,000
Total supply, fixed
$3,840
Opening market cap
100%
Of the supply in the pool
≈0.23 SOL
Cost to launch. Network fees and account rent — pew.so takes none of it.
The token is created
The full supply is minted at once into a vault owned by the program. Mint and freeze authority are destroyed in the same transaction, so no more can ever be made and no wallet can be frozen. There is no team allocation and no pre-sale.
The pool opens, already locked
The whole supply goes into a Raydium pool, and the position is locked as it is created. There is no unlock — not after a year, not for you, not for pew.so. Nobody can withdraw the liquidity.
Trading starts
The launch ends with a buy worth about a tenth of a cent. Charts and aggregators ignore a pool that has never traded, and one trade of any size is enough to list it. After that the token is buyable from Jupiter like any other.
How the price moves
Nobody sets the price. It follows how much of the supply has been bought, and climbs faster the further it goes — the last tokens cost far more than the first.
Launch$3,840
Graduation$48,000
Graduation is 12.5× the launch price, at $48,000. Nothing happens there. The pool is a real Raydium pool from the first second, so there is no migration and no gate — the price keeps going.
Pairs
Every launch is priced against one of two assets. The choice decides how easily people can reach your token.
SPCX
Backpack's tokenized stock.
Buying an SPCX-priced token from SOL takes two steps, which pew.so does in one press. Most outside terminals cannot route it.
wSOL
Wrapped SOL.
One step from SOL, so aggregators, charts and terminals reach it normally.
Fees
Every trade pays 3%. Most of it goes back to the people holding the token. Launching one earns you nothing.
2.52%
Of every trade, back to the token. This is the part that gets paid out.
0.48%
Of every trade, to Raydium, the venue the pool sits on.
Where the 2.52% goes
When someone buys
The fee arrives in SPCX or SOL. Half is set aside for everyone holding the token, half goes to pew.so.
1.26%
Of everything bought, to holders.
When someone sells
The fee arrives in the token itself rather than in cash. It collects in the treasury, and we burn what has gathered there at intervals.
2.52%
Of everything sold, set aside to burn.
$100,000 of trading in a day, half of it buying: $630 shared out among holders, and 2.52% of the other half collected in the treasury to be burned.
What the creator gets
Nothing. Launching costs about 0.23 SOL and pays no revenue afterwards — there is no creator address anywhere in the payout. To earn from a token you launched, hold it. You are paid on the same terms as everybody else who holds it.
Claiming your share
Your share builds up on each token separately and stays there until you pull it. Nothing expires. Whoever signs the transaction pays for it, and the money still goes only to the wallet the share belongs to.
The first claim on a token costs about $0.50 in rent, for an account to receive the money and a small record of what you have already taken. Every claim after that on the same token is just the network fee. Below that, leave it to build.
Shares are worked out once an hour from who holds what. The figures are running totals rather than per-hour amounts, so a missed hour is covered by the next one.
What is guaranteed, and what is not
Fixed by the program
How much is set aside, and that it can only ever reach holders of that one token. It sits in the token's own vault. pew.so cannot spend it, take it back, or move it to another launch.
Decided by pew.so
How that amount is divided between holders, from the hourly snapshot pew.so signs. A wrong snapshot could divide one token's share pool wrongly. It could not change the size of it, reach another token's, or undo a claim already paid.
API
Plain JSON over GET. Nothing to sign up for, nothing to send, and every number in it is already public on chain — this is a shortcut past reading the accounts yourself, not access to anything you could not have read.
https://pew.so/api/v1
GET /launches
Every tradable launch. A launch appears here once its pool is locked, and never before.
- sort
- new, the default, or hot — the busiest above $12,000.
- limit
- 1 to 100. Defaults to 24.
- cursor
- The nextCursor of the page before it. Only sort=new pages: hot is a ranking by 24-hour volume, which reorders between two requests, so it returns the top of the list and a null cursor rather than a position it cannot keep.
GET /launches/{mint}
One launch, and the accounts on chain to check it against. A mint whose pool is not locked is a 404, whether it is thirty seconds old or was never real.
What comes back
Both endpoints return the same launch object; the second adds the accounts behind it. A launch has no market figures until the first pricing pass reaches it, about a minute after it locks, and every one of them is null until then — never zero, which would be a claim about the token rather than an admission about us.
launch
{"mint": string,"name": string,"symbol": string,"description": string | null,"imageUrl": string | null,"website": string | null,"twitter": string | null,"creator": string,"quoteMint": string,"createdAt": string,"priceQuote": number | null,"quoteUsd": number | null,"marketCapUsd": number | null,"volume24hUsd": number | null,"change24h": number | null,"soldPct": number | null,"graduated": boolean | null,"holders": number | null,"holderFeesUsd": number | null,"listed": boolean | null}
GET /launches
{"launches": [ launch, … ],"nextCursor": string | null}
GET /launches/{mint}
{… every field of launch, unwrapped,"pool": string,"vault": string,"lockedAt": string,"tickLower": number,"priceLower": number,"startFdvUsd": number,"quoteDecimals": number,"quoteTokenProgram": string,"holderReserved": string}
What each of them means:
Identity
- mint
- The Token-2022 mint. Unique, and what every other endpoint is keyed by.
- name, symbol
- What the creator typed, capped and trimmed. Neither is unique.
- description, imageUrl, website, twitter
- Supplied at launch and stored off chain. Any of them may be null.
- creator
- The wallet recorded on chain as having launched it. It earns nothing from doing so.
- quoteMint
- What the launch is priced against.
- createdAt
- ISO 8601, UTC.
Market
- priceQuote
- One token in quote units, read from the pool's sqrtPrice.
- quoteUsd
- What the quote asset was worth when this row was computed, so a stale figure is explicable rather than merely wrong.
- marketCapUsd
- Supply times price, in USD.
- volume24hUsd, change24h
- change24h is a fraction: -0.12 is down 12%.
- soldPct
- Fraction of the supply bought off the curve. 0.717 is graduation.
- graduated
- Whether it has passed 12.5× the launch price. Nothing happens there; the pool is real from the first second.
- holders, holderFeesUsd
- How many wallets hold it, and what is waiting in its pot for them.
- listed
- Whether an aggregator has ever seen the pool trade. While this is false, volume and change are placeholders rather than measurements.
On chain
/launches/{mint}- pool, vault
- The Raydium CLMM pool and the factory vault PDA. Everything above can be recomputed from these two accounts.
- tickLower, priceLower, startFdvUsd
- The left edge of the locked position — where the price started.
- quoteDecimals, quoteTokenProgram
- What it takes to read a raw quote amount correctly.
- holderReserved
- The pot in raw quote units, as a decimal string. This is the authoritative figure; holderFeesUsd is derived from it for display.
- lockedAt
- When the pool was locked. ISO 8601, UTC.
Try it
Against the live API, from this page. The URL builds itself as you move the controls, so what a parameter does is visible before anything is sent.
/api/v1/launches?limit=3
Press Send.
Terms
No key
Nothing to sign up for and no header to send. Every number here is already public on chain.
Any origin
Sent with access-control-allow-origin: *, so a page on your own site can call it directly.
120 a minute
Per IP address. Above that the answer is 429.
Cached 15 seconds
Which is as often as any of these figures move.
Anything other than a 200 is a JSON body with one key, and nothing is cached.
- 404 not_found
- No locked launch under that mint.
- 400 bad_cursor
- The cursor was not one we issued.
- 429 slow_down
- Over the rate limit.
- 503 no_index
- The index is unreachable. Nothing is invented in its absence.
Not yet
A holder's share of one launch with the proof a claim needs, and one wallet's launches and claimables. Both exist and both are what the site itself runs on; neither is under /v1 yet, so neither is something to build on.