Documentation · v1.0

Launch API

Launch tokens programmatically. Non-custodial — Furnace prepares the transaction, you sign it.

How it works

The launch API is non-custodial. You send your token parameters, Furnace pins the metadata to IPFS and returns the exact transaction (to, data, value) for the FurnaceLaunchFactory.launchToken call on Robinhood Chain (chain ID 4663). You then sign and broadcast that transaction from your own wallet. Furnace never touches your keys.

Endpoint

POST https://foragepad.com/api/launch/prepare

Send a GET to the same URL to fetch the live machine-readable spec (fields, defaults, and the current factory address).

Request body

  • name — string, required
  • symbol — string, required (≤ 10 chars)
  • description — string, optional
  • image — image URL or ipfs://, optional
  • banner — image URL, optional
  • socials{ twitter, telegram, discord, github, gitbook, website }, optional
  • profileMemecoin | Growth | Bluechip | Custom (default Growth)
  • feeDistributionCreator | BuybackBurn | AddLiquidity | Staking | None (default None)
  • bondingCurveFeeBps — fixed at 150 (1.50% total trade fee)
  • postGradFeeBps0135 (default 50)
  • tokenSupply10K | 1M | 10M | 100M | 1B | 10B (default 1B)
  • developerBuyEth — optional ETH to buy your own token at launch
  • feeRecipient0x address receiving creator fees (Creator mode)
  • feeRecipients / feeBps — arrays for on-chain fee splitting (Creator mode)

Example — prepare

curl -X POST https://foragepad.com/api/launch/prepare \
  -H "content-type: application/json" \
  -d '{
    "name": "ForgeCoin",
    "symbol": "FORGE",
    "description": "A token forged on Robinhood Chain.",
    "profile": "Growth",
    "socials": { "twitter": "https://x.com/forgecoin" }
  }'

Response:

{
  "chainId": 4663,
  "to": "0x...factory",
  "data": "0x...calldata",
  "value": "0",
  "metadataUri": "ipfs://...",
  "note": "Sign and broadcast this transaction from your own wallet..."
}

Example — sign & broadcast (viem)

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

const rhc = defineChain({
  id: 4663,
  name: "Robinhood Chain",
  nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
  rpcUrls: { default: { http: ["https://rpc.mainnet.chain.robinhood.com"] } },
});

const prep = await fetch("https://foragepad.com/api/launch/prepare", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ name: "ForgeCoin", symbol: "FORGE" }),
}).then((r) => r.json());

const account = privateKeyToAccount(process.env.PRIVATE_KEY);
const wallet = createWalletClient({ account, chain: rhc, transport: http() });

const hash = await wallet.sendTransaction({
  to: prep.to,
  data: prep.data,
  value: BigInt(prep.value),
});
console.log("launch tx:", hash);

The new token and bonding-curve addresses are emitted in the Launched event of the transaction receipt. The 1.50% total trade fee and the 0.50% protocol split are enforced by the contract regardless of API input.