Developer docs

Launch from your own code

One call to Clipfund builds your launch transaction and co-signs it. You sign it with your wallet and send it yourself. Clipfund watches the chain, lists the token on Explore within seconds, and its campaign starts collecting fees. No sign-in needed.

Overview

  1. 1Ask Clipfund to build itOne POST with your token details and wallet.
  2. 2Sign and sendYour wallet pays and signs. You send it with your RPC.
  3. 3Show up on ExploreWe see it on-chain and list it. Nothing else to call.

Account keys

These values are live from this Clipfund server.

AccountAddressUsed for
Pump program6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6Pcreate_v2
Pump fees programpfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZfee sharing config and shares
PumpSwap programpAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEAtrading after graduation
Quote mint (WSOL)So11111111111111111111111111111111111111112quoteMint for update_fee_shares_v2
Clipfund platform walletGWPsnZHy2i3RCJhkQT1pyiqVweqRucsxqmi267tjFJGbshareholder at exactly 1000 bps
Clipfund admin27DmJunQPVWHrW9i5yudtmPmuQ5vJGhWgjZGUkPt2fr2token creator and split admin; co-signs every launch
Address lookup tableHyif6eWb8x88RVrvjPfabsgRYnwkVnyByEXTVTXbUcyPoptional, makes the tx smaller
ShareValueRule
Platform1000 bps (10%)Exactly this. Fixed.
Campaign5000-9000 bpsAt least 50%. Goes to your campaign wallet.
Creator0-4000 bpsThe rest. Any wallet you choose.

Build the launch

POST /api/launch/prepare with multipart form data. Clipfund picks a fresh campaign wallet and a mint, stores your image and metadata, builds the transaction, and signs it with the mint and the Clipfund admin key.

FieldValueMeaning
creatorrequiredYour wallet address. It pays, signs, and gets the creator share.
name, symbolrequiredToken name and ticker.
imagerequiredToken image file.
campaignBps5000-9000Campaign share. Default 9000.
description, twitter, telegram, websiteoptionalShown on pump.fun.
cpmCents, platforms, guidelines, watermarkoptionalCampaign settings. Defaults: 100, all 4, empty, $TICKER.

The answer has mint and txBase64. Sign it with your wallet first, then POST /api/launch/cosign with { mint, txBase64 }. Clipfund checks that it is exactly the transaction it built, adds the mint and admin signatures, sends it, and returns the signature. Do it within about a minute, or the blockhash expires. For a dev buy, call POST /api/trade after the launch lands.

What is inside

You can check every instruction before you sign. The launch transaction holds:

#InstructionProgram
1set compute unit limitCompute budget
2create_v2 (creator = Clipfund admin, user = you)Pump
3transfer 0.00585 SOL from you to the Clipfund admin, for the fee config rentSystem
4create_fee_sharing_configPump fees
5update_fee_shares_v2 (you, campaign wallet, platform wallet)Pump fees

pump.fun no longer lets anyone lock a split forever. Clipfund holds the split's admin key, so a creator cannot move the campaign share to themselves after launch.

Full example

Node 20+ with @solana/web3.js and bs58. The buy at the end is optional. Keep the secret key in an environment variable.

import { Connection, Keypair, VersionedTransaction } from "@solana/web3.js";
import bs58 from "bs58";
import { readFile } from "node:fs/promises";

const BASE = "https://clipfund.fun";
const connection = new Connection(process.env.RPC_URL!, "confirmed");
const creator = Keypair.fromSecretKey(bs58.decode(process.env.CREATOR_SECRET!));

const form = new FormData();
form.append("creator", creator.publicKey.toBase58());
form.append("name", "Clip Coin");
form.append("symbol", "CLIP");
form.append("description", "Funds clippers on Content Rewards.");
form.append("image", new Blob([await readFile("logo.png")], { type: "image/png" }), "logo.png");
form.append("campaignBps", "9000");

const post = (path, body) =>
  fetch(BASE + path, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body) })
    .then((r) => r.json());

const data = await fetch(BASE + "/api/launch/prepare", { method: "POST", body: form }).then((r) => r.json());
if (!data.txBase64) throw new Error(data.error);

const tx = VersionedTransaction.deserialize(Buffer.from(data.txBase64, "base64"));
tx.sign([creator]);
const { signature, error } = await post("/api/launch/cosign", {
  mint: data.mint,
  txBase64: Buffer.from(tx.serialize()).toString("base64"),
});
if (error) throw new Error(error);
await connection.confirmTransaction(signature, "confirmed");

const buy = await post("/api/trade", {
  mint: data.mint, side: "buy", amountSol: 0.5, slippageBps: 500, payer: creator.publicKey.toBase58(),
});
const buyTx = VersionedTransaction.deserialize(Buffer.from(buy.txBase64, "base64"));
buyTx.sign([creator]);
await connection.sendRawTransaction(buyTx.serialize());

console.log("launched", data.mint, signature);

After launch

The token appears on Explore with a via code tag, and anyone on Explore sees a notice when it lands. Its campaign starts with these defaults: $1.00 CPM, TikTok, Instagram, YouTube and X, your token image as the reference image, and the watermark $TICKER. Sign in with the creator wallet to see it in your dashboard.

Powered by Content Rewards

Every Clipfund campaign runs on contentrewards.com. When a token's campaign wallet reaches about $1,000, Clipfund swaps it to USDC and funds the token's Content Rewards campaign. Clippers join, post, and get paid per view there. Views are bot-checked by Content Rewards.