LIVE
CHAINRobinhood · 4663BLOCKGASETH$1,700LAUNCHES924H VOL$39.4K
Documentation · v1.0

Launch API

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

How it works

The launch API is non-custodial. You send your token parameters, OV3 pins the metadata to IPFS and returns the exact transaction (to, data, value) for the OV3InstantLauncher.launch call on Robinhood Chain (chain ID 4663). That call deploys your token and opens a locked Uniswap V3 pool for it in one transaction — tradeable from block one. You then sign and broadcast that transaction from your own wallet. OV3 never touches your keys.

Endpoint

POST https://ov3.fun/api/launch/prepare

Send a GET to the same URL to fetch the live machine-readable spec (fields, defaults, and the current launcher 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
  • feeDistributionCreator | None (default None)
  • creatorFeeBps — creator share of the pool's 1% swap fee, in bps: 50009000 (default 5000 = 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://ov3.fun/api/launch/prepare \
  -H "content-type: application/json" \
  -d '{
    "name": "GrowthCoin",
    "symbol": "GROW",
    "description": "A token launched on Robinhood Chain.",
    "creatorFeeBps": 7000,
    "socials": { "twitter": "https://x.com/growthcoin" }
  }'

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://ov3.fun/api/launch/prepare", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ name: "GrowthCoin", symbol: "GROW" }),
}).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 Uniswap V3 pool addresses are emitted in the InstantLaunchedevent of the transaction receipt. The pool's 1% swap fee and the 0.50% protocol fee are enforced by the contract regardless of API input.