API Reference
Anyone can create a fixed-supply token with a one-sided, stablecoin-quoted market through the Stablememe API. The endpoint builds an unsigned Solana transaction; you sign it with your own wallet and submit it to any RPC. Trading-pool fees go towards buying back $STABLE.
Host a metadata JSON file (name, symbol, image, socials) at a public URL.
POST the token details and your wallet address to the build endpoint.
Receive a partially-signed base64 transaction and the new mint address.
Sign the transaction as fee payer with your wallet and submit it to Solana.
| Field | Type | Description |
|---|---|---|
| name* | string | Token name. Truncated to 32 characters on-chain. |
| symbol* | string | Ticker symbol. Truncated to 10 characters on-chain. |
| uri* | string | Public URL to a hosted metadata JSON file (see below). |
| quoteToken* | "USDC" | "USDT" | "USD1" | The stablecoin the token trades against. |
| payer* | string | Base58 public key that signs, pays rent, and receives pool fees. |
Fields marked * are required.
A token trades against exactly one stablecoin, chosen at launch.
| Key | Name | Mint |
|---|---|---|
| USDC | USD Coin | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| USDT | Tether | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB |
| USD1 | World Liberty USD | USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB |
The uri field must point to a publicly-readable JSON file in the standard token metadata shape. Host it anywhere (your own CDN, IPFS, Arweave).
{
"name": "My Stable Meme",
"symbol": "MSM",
"description": "A stable memecoin launched on Stablememe.",
"image": "https://your-cdn.com/logo.png",
"extensions": {
"twitter": "https://x.com/yourhandle",
"telegram": "https://t.me/yourgroup",
"website": "https://stablememe.lol"
}
}curl -X POST https://stablememe.lol/api/launch/build \
-H "content-type: application/json" \
-d '{
"name": "My Stable Meme",
"symbol": "MSM",
"uri": "https://your-cdn.com/metadata.json",
"quoteToken": "USDC",
"payer": "YourWalletPublicKeyBase58"
}'{
"transaction": "<base64-encoded legacy transaction>",
"mint": "Cu5...9pk",
"config": "8Hb...2aa",
"totalTokenSupply": "2000000",
"lastValidBlockHeight": 301872455
}The returned transaction is a legacy Solana transaction with the config and mint keypairs already partially signed. You only need to add the fee payer signature and send it.
import {
Connection,
Keypair,
Transaction,
} from '@solana/web3.js'
// Your creator wallet (pays fees, receives trading-pool fees).
const payer = Keypair.fromSecretKey(/* your secret key */)
const connection = new Connection('https://your-rpc-endpoint', 'confirmed')
// 1. Ask Stablememe to build the launch transaction.
const res = await fetch('https://stablememe.lol/api/launch/build', {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
name: 'My Stable Meme',
symbol: 'MSM',
uri: 'https://your-cdn.com/metadata.json',
quoteToken: 'USDC', // 'USDC' | 'USDT' | 'USD1'
payer: payer.publicKey.toBase58(),
}),
})
const { transaction, mint } = await res.json()
// 2. Deserialize, sign as fee payer, and submit.
// The config + mint keypairs are already partially signed server-side.
const tx = Transaction.from(Buffer.from(transaction, 'base64'))
tx.partialSign(payer)
const signature = await connection.sendRawTransaction(tx.serialize())
await connection.confirmTransaction(signature, 'confirmed')
console.log('Launched', mint, 'tx', signature)| Status | Meaning |
|---|---|
| 400 | Invalid JSON body, missing a required field, or an unsupported quote token. |
| 400 | Invalid payer address (not a valid base58 public key). |
| 500 | Server RPC is not configured, or the transaction failed to build. |
Error responses return a JSON object with an error string.