Getting Started

Quickstart

Launch a token programmatically in three calls. The API builds the transaction; you sign it with your own key.

1. Check the name is free

Every meme can only be launched once. Check availability (and see how your name canonicalizes) before you spend gas.

bash
curl "http://5.9.115.219:2442/api/v1/names/check?name=Solana&symbol=SOL"
# { "name": { "canonical": "solana", "available": true }, ... }

2. Build the launch transaction

The API returns an unsigned transaction. It never sees your private key.

bash
curl -X POST http://5.9.115.219:2442/api/v1/tx/create \
  -H 'content-type: application/json' \
  -d '{"name":"Solana","symbol":"SOL","devBuyEth":"0.05"}'
# { "tx": { "to": "0x4874…", "data": "0x…", "value": "50000000000000000", "chainId": 46630 }, ... }

3. Sign & broadcast

Sign the returned transaction with your wallet and send it.

javascript
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";

const API = "http://5.9.115.219:2442/api/v1";
const account = privateKeyToAccount(process.env.PK);
const wallet = createWalletClient({
  account,
  transport: http("https://rpc.testnet.chain.robinhood.com"),
});

// build
const { tx } = await (await fetch(`${API}/tx/create`, {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ name: "Solana", symbol: "SOL", devBuyEth: "0.05" }),
})).json();

// sign & send with YOUR key
const hash = await wallet.sendTransaction({
  to: tx.to, data: tx.data, value: BigInt(tx.value),
});
console.log("launched:", hash);
Tip.Don't want to broadcast yourself? Sign locally and POST the raw signed transaction to /api/v1/tx/send — still non-custodial, we just relay the bytes.

That's it — your token is live on the bonding curve. Buying and selling work the same way via /tx/buy and /tx/sell. See the full API Reference.