POST/api/launch/build
Builds the launch transactions for a new meme dollar. Generates the mint keypair server-side and keeps it in memory for 15 minutes so you can retry.
{
"name": "Dollar Doge", // ≤ 32 chars
"symbol": "DOGE", // ≤ 10 chars, A–Z 0–9
"image": "data:image/png;base64,…", // PNG/JPEG/WebP ≤ 1 MB; omit when "uri" is set
"uri": "https://…/metadata.json", // optional: host your own metadata instead of an image
"description": "…", // optional, ≤ 500 chars
"twitter": "https://x.com/…", // optional
"telegram": "https://t.me/…", // optional
"website": "https://…", // optional
"quoteToken": "USDC", // USDC | USDT | USD1 (default USDC)
"payer": "<your wallet pubkey>",
"devBuy": "25", // optional, quote units to buy in the same flow
"mint": "<mint from a previous build>" // optional: resume a launch after a blockhash expiry
}{
"transactions": ["<base64>", "<base64>", "<base64>?"], // sign & send in order
"steps": [{ "label": "Create the token", "description": "…" }, …],
"sizes": [678, 993, 724], // bytes, each ≤ 1232
"mint": "…", "pool": "…", "vault": "…", "position": "…", "quoteMint": "…",
"lastValidBlockHeight": 123456789,
"estimatedNetworkCostLamports": "188496130", // rent + fees, as a string (≈ 0.19 SOL)
"estimatedNetworkCostSol": "0.18849613",
"resumed": { "mint": false, "pool": false, "binArray": false, "vault": false, "devBuy": false },
"requirements": { "quoteToken": "USDC", "quoteBalance": "any non-zero amount", "sol": "about 0.19 SOL" }
}The first transaction is already partially signed by the mint keypair; add the payer signature and send. When uri is omitted the image is converted to a 512×512 PNG at /i/<mint>.png and the metadata JSON is served from /m/<mint>.json. If a transaction expires, call the endpoint again with the same body plus mint: only the transactions that have not landed are returned. Before you build: the payer wallet must hold a non-zero balance of the chosen quote token (any amount, it is not spent — Meteora requires the pool creator to hold both tokens of a new pool) and about 0.19 SOL for rent and fees (the exact figure comes back as estimatedNetworkCostLamports).
| Code | Status | When |
|---|---|---|
| validationa field is missing or malformed | 400 | a field is missing or malformed |
| no_quote_balancethe payer wallet holds none of the chosen quote token (Meteora's token-launch proof) | 400 | the payer wallet holds none of the chosen quote token (Meteora's token-launch proof) |
| insufficient_solthe payer wallet holds less SOL than the rent and fees of the remaining steps (error carries required and balance) | 400 | the payer wallet holds less SOL than the rent and fees of the remaining steps (error carries required and balance) |
| mint_existsresuming a mint that exists with a different configuration | 409 | resuming a mint that exists with a different configuration |
| forbiddenresuming with a different payer | 403 | resuming with a different payer |
| resume_expiredthe mint keypair left memory (15 minutes) | 410 | the mint keypair left memory (15 minutes) |
| rate_limitedmore than RATE_LIMIT_BUILD_PER_MIN builds per minute per IP | 429 | more than RATE_LIMIT_BUILD_PER_MIN builds per minute per IP |
| chain_not_configuredthe server has no RPC or quote mints for this cluster | 503 | the server has no RPC or quote mints for this cluster |