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.

1

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.

2

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.

3

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.

GET

/api/v1/launches?limit=3

no request yet
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.