PONS Create Token API: Launch a Robinhood Chain Token in One POST
Launch a token on ponsfamily.com's bonding curve on Robinhood Chain from code, with full wallet custody. One request returns an unsigned launch transaction — name, symbol, image, socials, the dev buy priced from the fresh curve, the snipe-tax exempt list, the gas — and you sign and send it yourself.
PONS Lightning Create signs and sends for you — same body without publicKey, 1% commission on the dev buy.
API Endpoints
| Endpoint | Description |
|---|---|
POST https://rhc.pumpdev.io/api/create-local | Launch a PONS token (optional dev buy) — unsigned transaction back, you sign |
POST https://rhc.pumpdev.io/api/create-lightning | The same launch, signed and sent by PumpDev — see Lightning Create |
No API key. No signup. No custody. The commission is 0.5% of the dev buy, taken inside the launch transaction by PumpDev's launch router — an immutable contract with no owner and no setter, which forwards the launch to PONS and never holds your funds. A launch with no dev buy costs nothing beyond PONS's own launch fee.
How a PONS launch works
- You POST the token details (and
publicKey) — the launch is encoded, the dev buy is priced from the fresh curve, gas is estimated, and the token address is predicted with aneth_callof the very same transaction. - You get back one EVM transaction: sign it with ethers/viem and send it to any Robinhood Chain RPC or straight to the sequencer.
- The transaction goes through PumpDev's launch router into the PONS launcher. The token, its bonding curve and your dev-buy tokens all land in one block.
Compare with Lightning Create if you would rather not sign at all.
Key facts
- The token goes live on a bonding curve paired with ETH. Every curve opens at the same state, so the dev buy is priced exactly, before the token exists.
- PONS charges a launch fee (0.0005 ETH at the time of writing, read live
from the factory). It is paid in the same transaction and shown in the
response as
launchFee. - The dev buy is optional, with no minimum.
buyAmountin ETH is bought on the fresh curve at launch, in the launch transaction, and lands in your wallet;0launches without a buy. The chain sets no floor on a buy — any positive amount of wei trades — so the practical minimum is gas. - Metadata limits are the chain's, in UTF-8 bytes (an emoji is 4): name 64,
symbol 16, image URL 512, description 2048, each social link 256. Longer
strings revert on chain, so the API refuses them with a
400first. - The creator is exempt from the snipe tax. Every PONS curve taxes buys up
to 99% in the first 3 seconds (see The snipe tax);
the creator's dev buy and any wallet in
snipeTaxExemptpay 0%. That list is how PONS does bundle launches — up to 30 wallets, fixed at creation. - The creator earns a tax of their own on every buy of the curve if
creatorTaxBpsis set (0–1000, i.e. up to 10%).
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
publicKey | string | Yes | Your wallet address — the creator, the recipient of the dev buy, and from |
name | string | Yes | Token name, 64 bytes or less |
symbol | string | Yes | Ticker, 16 bytes or less |
image | string | Yes | Image URL (https://… or ipfs://…), 512 bytes or less. Stored in the launch itself — there is no metadata JSON on PONS |
description | string | No | Up to 2048 bytes. Default: Launched on pumpdev.io — the fastest PONS API |
twitter, telegram, website | string | No | Social links, 256 bytes each |
buyAmount | number | No | Dev buy in ETH, default 0. buyAmountSol / buyAmountQuote are accepted as aliases |
creatorTaxBps | number | No | Your tax on every buy of the curve, in basis points, 0–1000 (default 0) |
slippage | number | No | Slippage percentage on the dev buy (default: 90). The curve is untouched when your buy lands, so the quote is exact |
snipeTaxExempt | string[] | No | Up to 30 wallet addresses that buy the first seconds tax-free. You are always exempt |
priorityFee | number | No | Priority fee in gwei per gas (default: 0.05). Refused above 100 |
gasLimit | string | No | Skips gas estimation. A launch costs ~3.7–4.2M gas |
nonce | number | No | Skips the nonce lookup; pass it when firing several transactions in a row |
pairToken | string | No | Only the zero address (ETH) is accepted for now; USDG and tokenized-equity pairs are refused with 400 |
Response
{
"transaction": {
"chainId": 4663,
"type": 2,
"from": "0xYourWallet",
"to": "0xLaunchRouter",
"data": "0x9fbbeb66…",
"value": "10500000000000000",
"gasLimit": "4573000",
"maxFeePerGas": "450000000",
"maxPriorityFeePerGas": "50000000",
"nonce": 12
},
"token": "0xNewToken",
"curve": "0xItsBondingCurve",
"salt": "0x…",
"publicKey": "0xYourWallet",
"launchFee": "500000000000000",
"fee": { "bps": 50, "amount": "50000000000000", "asset": "ETH" },
"quote": {
"amountIn": "9950000000000000",
"expectedOut": "5862…",
"amountOutMin": "586…",
"quoteAsset": { "symbol": "ETH", "decimals": 18 }
}
}
transaction.valueislaunchFee + buyAmount— PONS's fee plus your gross dev buy — in wei.fee.amountis the part of the buy that is PumpDev's commission;quote.amountInis what actually buys tokens.tokenandcurveare known before you send: the address is deterministic from the salt, the name, the symbol and your wallet. Subscribe to it on the PONS WebSocket right away. They arenullonly if the prediction call failed — the receipt'sTokenLaunchedlog carries both regardless.quoteisnullwhen there is no dev buy.- Every amount is a decimal string in base units.
Example
import { JsonRpcProvider, Wallet } from 'ethers';
const wallet = new Wallet(process.env.PRIVATE_KEY, new JsonRpcProvider('https://rpc.mainnet.chain.robinhood.com'));
const res = await fetch('https://rhc.pumpdev.io/api/create-local', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
publicKey: wallet.address,
name: 'My Token',
symbol: 'MINE',
image: 'https://example.com/logo.png',
twitter: 'https://x.com/mytoken',
buyAmount: 0.01,
snipeTaxExempt: ['0xTeamWallet1', '0xTeamWallet2'],
}),
});
const { transaction, token } = await res.json();
console.log('Token will be', token);
const sent = await wallet.sendTransaction(transaction);
const receipt = await sent.wait();
console.log('Launched in block', receipt.blockNumber);
transaction goes straight into wallet.sendTransaction() (ethers) or
sendTransaction (viem) — every field is already set.
Error Responses
All errors return JSON with an error field:
{ "error": "Description of what went wrong" }
| HTTP Status | Cause |
|---|---|
400 | Missing required fields (publicKey, name, symbol, image), a value out of range (name > 64 bytes, symbol > 16, image > 512, description > 2048, a social link > 256, creatorTaxBps > 1000, more than 30 snipeTaxExempt addresses), a non-ETH pairToken, or Gas estimation failed: … — the launch reverted in simulation, almost always because publicKey cannot cover the launch fee + dev buy + ~4M gas |
500 | Transaction build failed (RPC unavailable) |
503 | Token creation is not configured on this server |
Best Practices for a PONS Token Launch
- Fund the wallet for the whole launch —
launchFee(0.0005 ETH) +buyAmount+ gas for ~4M units. Gas estimation runs against your balance, so an underfunded wallet fails at build time, not on chain. - List the team in
snipeTaxExempt— that is PONS's bundle mechanism; anyone not on the list pays up to 99% for three seconds. You are exempt automatically. - Subscribe to
tokenbefore you send — the address is deterministic, so asubscribeTokenTradeopened first sees the dev buy land. - Leave
slippageat the default — the curve is untouched when your buy executes, so the quote is exact; a tight floor only guards against a race. - Keep
creatorTaxBpsmodest — it is taken from every buy of your curve for its lifetime and is visible to every buyer.
Not supported yet
- ERC-20 pairs (USDG, tokenized equities such as AMD or SPY).
- Vanity addresses — the salt is generated server-side.
The ETH pair is where most PONS launches happen; the others follow once this endpoint has run in production.
Next Steps
- ⚡ PONS Lightning Create — the same launch in one call, no signing
- PONS Trading API — buy and sell the token you launched, client-signed
- ⚡ PONS Lightning Trade — one-call buy/sell for the team wallets
- PONS WebSocket — see your launch and every trade on it in real time
- Pricing — commission details
- PONS Family API — the full Robinhood Chain toolkit: feed, trading and launches
- Create Token on Pump.fun — launching on Solana instead? The pump.fun equivalent, with Jito bundles