API

This API covers the creation of tokens, revenune managers, uploading images.

If you're looking to consume data from the Flaunch API, see the RESTful API section.

To reduce the friction of creating launchpads and launching tokens we have released an API, allowing builders to create their own launchpad contract and users to launch tokens via their launchpad with no-wallet/no-gas API calls.

There is no requirement for a wallet to be connected and instead a user can Flaunch a token connected to their email address, X (Twitter), Farcaster account or Base wallet address.

The account connected to the flaunched token will be able to connect to Flaunch, or any external flow, using Privy to have access to their launchpad fee or coin fee claims and offramp their fees into either crypto or fiat.

So whether you're extending your existing platform to benefit from token launches, or building a more generic plugin that an entire ecosystem can use, the Flaunch API should have ample logic to support you.

API Keys

No API keys are required for the use of the Web 2 API endpoint. If you are hitting the current rate limits reach out on discord for increased access.

Example Integration

To demonstrate the power of this API, we have put together a landing page that will allow for fast flaunching across multiple recipient types.

https://just.flaunch.gg/

Have you integrated the Flaunch API? Get in touch and we'll feature it here!

Available API Calls

Below we have documented the API calls that are available for the Memecoin API. These are also available as a Postman collection for quicker prototyping.

Download the Flaunch Memecoin API Postman Collection

Base API URI

https://web2-api.flaunch.gg/livez

Health Check

GET /livez

Checks if the API is running and returns the network configuration.

Headers

Name
Value

Content-Type

application/json

Response

{
  "status": "ok",
  "serverWallet": "0x4d7c5DFceC78E011E16BFe9F701D857841bbDFbB",
  "network": "base-sepolia"
}

Create a Revenue Manager (Launchpad)

POST /api/v1/{{ base | base-sepolia }}/create-revenue-manager

Required Fields

Name
Value

protocolFee

Protocol fee in basis points (0-10000, where 100 = 1%)

Fee Recipient Options (MUST choose one)

Name
Value

recipientAddress

Ethereum wallet address for the fee recipient

recipientEmail

Email address for the fee recipient

recipientTwitterUsername

Twitter username (without @ symbol)

recipientFarcasterUsername

Farcaster username (without the @ symbol)

Optional Fields

Name
Value

ownerAddress

Ethereum address that will own the revenue manager (defaults to fee recipient below)

Headers

Name
Value

Content-Type

application/json

Body

{
  "protocolFee": "1000",
  "recipientAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
  "ownerAddress": "0xabcdef123456789abcdef123456789abcdef1234"
}

Response

{
    "success": true,
    "managerAddress": "0x57ac78c4a704233e274bbcdeb057ba640b65de23",
    "txHash": "0x171c6358fabc86337bfe6decc6d2d6fc2fe3ca9918a680ad36b5a71bec34e56e",
    "owner": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
    "recipientAddress": "0xF1a700000087c011413C21C9b357A6962Aa256f9",
    "protocolFee": 1000,
    "privy": null
}

Create a Fee Split Manager (Launchpad)

POST /api/v1/:chain/create-fee-split-manager

Create a reusable fee split manager contract that can be used across multiple token launches.

Required Fields

Name
Type
Description

recipients

Array

Array of fee split recipients (same format as feeSplitRecipients above)

Owner (one required):

ownerAddress

string

Wallet address of the fee split manager owner

ownerEmail

string

Email address of the owner

ownerTwitterUsername

string

Twitter username of the owner

ownerFarcasterUsername

string

Farcaster username of the owner

Creator Share (optional)

creatorShare

number

Optional: Creator share in basis points (0-10000, where 1000 = 10%). Defaults to 0 when not included.

Request Examples:

Basic Fee Split Manager with Wallet Owner:

{
  "recipients": [
    {"type": "email", "id": "[email protected]"},
    {"type": "twitter", "id": "justinavery"},
    {"type": "wallet", "id": "0x1234567890123456789012345678901234567890"}
  ],
  "creatorShare": 1500 // 15% to creator
  "ownerAddress": "0x9876543210987654321098765432109876543210"
}

Custom Splits with Email Owner:

{
  "recipients": [
    {"type": "email", "id": "[email protected]", "split": "5000000"},
    {"type": "twitter", "id": "justinavery", "split": "3000000"},
    {"type": "wallet", "id": "0x123...", "split": "2000000"}
  ],
  "creatorShare": 5000 // 50% to creator
  "ownerEmail": "[email protected]"
}

Success Response

{
  "success": true,
  "message": "Fee split manager created",
  "managerAddress": "0x6baa4ec493a9698dc7388c0f290e29ea3d149f99",
  "txHash": "0x04e594ee46312eecee8827aa2fef777dd2a94d247b723662be3a6daabb300028",
  "owner": "0x9876543210987654321098765432109876543210",
  "recipients": [
    {
      "address": "0x1234567890123456789012345678901234567890",
      "percentage": "33.33333",
      "originalInput": {"type": "email", "id": "[email protected]"}
    },
    {
      "address": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd", 
      "percentage": "33.33333",
      "originalInput": {"type": "twitter", "id": "justinavery"}
    },
    {
      "address": "0x1234567890123456789012345678901234567890",
      "percentage": "33.33334",
      "originalInput": {"type": "wallet", "id": "0x1234567890123456789012345678901234567890"}
    }
  ],
  "totalRecipients": 3
}

Image Upload

POST /api/v1/upload-image

Uploads and validates an image before creating a memecoin. Images are checked for appropriate content and stored on IPFS.

Rate Limit: Maximum 4 image uploads per minute per IP address.

Headers

Name
Value

Content-Type

application/json

Body

{
  // Base64 Encoded Image String (https://www.base64-image.de/)
  "base64Image": "data:image/jpeg;base64,/9j/4AAQSkZJRgAB...FwySj0f/2Q=="
}

Response

{
  "success": true,
  "ipfsHash": "QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "tokenURI": "ipfs://QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "nsfwDetection": null
}

Launch Token

POST /api/v1/{{ base | base-sepolia }}/launch-memecoin

Tokens can be launched on either base or base-sepolia based on the parameter passed in the API call.

Creates a new memecoin token on the selected network with the following default parameters:

  • $10k starting market cap

  • 60% of the total supply for fair launch

  • 80% dev / 20% community split

  • No revenue manager

After a token has been flaunched, a jobId will be returned in the response. This jobId signifies its position in a queue to be flaunched. It can then be referenced when querying the launch-status endpoint to retrieve the status of the token and subsequent deployed contract address of the token.

Required Fields

Name
Value

name

Token name.

symbol

Token symbol (max 8 characters).

description

Token description.

imageIpfs

IPFS hash from the image upload endpoint.

Creator Authentication Options (MUST choose one)

Name
Value

creatorAddress

Ethereum address to receive creator benefits.

creatorEmail

Email address to create a managed wallet via Privy.

creatorTwitterUsername

Twitter username for verification and wallet creation.

creatorFarcasterUsername

Farcaster username for verification and wallet creation.

If no creator authentication option is provided, the creator fees will go to the Flaunch.gg wallet.

Optional Fields

Name
Value

revenueManagerAddress

Ethereum address of a deployed revenue manager (must be valid address format)

feeSplitManagerAddress

Ethereum address of a deployed fee split manager (must be valid address format)

feeSplitRecipients

An array of Ethereum wallet addresses that will automatically receive an equal share of fees from the launched token [0x123..., 0xabc...]

creatorShare

Only include when specifying feeSplitRecipients if you also want the creator to take a portion of the fees. (default: 0, basis points so 8000 = 80%)

marketCap

Initial market cap in USDC (default: 10,000 = 10000000000)

creatorFeeSplit

Creator fee allocation in basis points (default: 8000 = 80%)

fairLaunchDuration

Duration of fair launch in seconds (default: 1800 = 30 minutes)

fairLaunchSupply

Percentage mount of total token supply available for fair launch (default: 60% of initial supply = 60)

websiteUrl

Website URL

telegramUrl

Telegram group URL

discordUrl

Discord server URL

twitterUrl

Twitter/X URL

Rate Limits: Maximum 2 memecoin launches per minute per IP address

Treasury Management Options for Token Launches

The memecoin launch API supports four distinct treasury management options:

  1. No Treasury Management: Default behavior with no fee splitting

  2. Revenue Manager: Use a pre-deployed revenue manager contract

  3. Fee Split Manager: Use a pre-deployed fee split manager contract

  4. Custom Fee Split: Define recipients directly in the launch request

Field Documentation

Name
Type
Description

revenueManagerAddress

string (optional)

Address of a pre-deployed revenue manager contract

feeSplitManagerAddress

string (optional)

Address of a pre-deployed fee split manager contract

feeSplitRecipients

Array (optional)

Array of fee split recipients in one of three formats (see below). Remember to also inclue creatorShare if you want the token creator to take a portion of the fees.

Mutual Exclusivity Rules

  • You can specify either revenueManagerAddress OR feeSplitManagerAddress, never both

  • You cannot specify manager addresses and feeSplitRecipients at the same time

  • Choose only one treasury management option per token

Enhanced feeSplitRecipients Field

The feeSplitRecipients field supports three formats:

1. Array of wallet addresses (legacy format)

"feeSplitRecipients": [
  "0x1234567890123456789012345678901234567890",
  "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd"
]

2. Array of objects with account types (even split):json

"feeSplitRecipients": [
  {"type": "email", "id": "[email protected]"},
  {"type": "twitter", "id": "username"}, 
  {"type": "farcaster", "id": "username"},
  {"type": "wallet", "id": "0x1234567890123456789012345678901234567890"}
]

3. Array of objects with custom splits:json

"feeSplitRecipients": [
  {"type": "email", "id": "[email protected]", "split": "5000000"},
  {"type": "twitter", "id": "username", "split": "3000000"},
  {"type": "wallet", "id": "0x123...", "split": "2000000"}
]

Custom Split Rules

  • When using custom splits, all recipients must have splits if any recipient has a custom split

  • Splits must sum to exactly 10000000 (representing 100.00000%)

  • Split values are in micro-percentages: multiply UI percentage by 100000

  • Example: 33.33333% = "3333333", 50% = "5000000"

  • Maximum 100 recipients allowed

  • 5 decimal precision supported

If you also want the creatorAddress to receive a portion of the fees you need to specify a creatorShare as part of the POST body. Omiitting the value defaults to a 0 share or the creator.

Account Type Validation

Type

Validation Rule

Example

wallet

Must be valid Ethereum address (0x + 40 hex chars)

"0x1234567890123456789012345678901234567890"

email

Must be valid email format

twitter

Alphanumeric + underscores, max 15 chars

"justinavery"

farcaster

Alphanumeric + underscores, 1+ chars

"javery"

Headers

Name
Value

Content-Type

application/json

Body

No Fee Management options
{
  "name": "Example Coin",
  "symbol": "EXCOIN",
  "description": "This is an example memecoin for demonstration purposes.",
  "imageIpfs": "QmR4Tnqvm4SahFwez3FBCbweYwUPUXo2SP8yePhLXYQJkd",
  "websiteUrl": "https://example.com",
  "discordUrl": "https://discord.gg/example",
  "twitterUrl": "https://twitter.com/example",
  "telegramUrl": "https://t.me/example",
  "creatorAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
  "marketCap": "10000000000",
  "creatorFeeSplit": "8000",
  "fairLaunchDuration": "1800"
}
Fee Split
{
  "name": "Community Coin",
  "symbol": "COMM",
  "description": "A token with shared revenue among community members",
  "imageIpfs": "QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "websiteUrl": "https://community.example.com",
  "creatorAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
  "creatorShare": 5000 // creator receives 50% of the fees, the other 50% shared to feeSplitRecipients
  // NEW: Fee Split Recipients (choose this OR revenueManagerAddress, not both)
  "feeSplitRecipients": [
    "0x1234567890123456789012345678901234567890",
    "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
    "0x9876543210987654321098765432109876543210"
  ],
  
  // Optional advanced settings
  "marketCap": "10000000000",
  "creatorFeeSplit": "8000",
  "fairLaunchDuration": "1800"
}
{
  "name": "Community Coin",
  "symbol": "COMM",
  "description": "A token with shared revenue among community members",
  "imageIpfs": "QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "websiteUrl": "https://community.example.com",
  "creatorAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
  "revenueManagerAddress": "0x57ac78c4a704233e274bbcdeb057ba640b65de23",
  // Optional advanced settings
  "marketCap": "10000000000",
  "creatorFeeSplit": "8000",
  "fairLaunchDuration": "1800"
}

Option 1: No Treasury Management

{
  "name": "Simple Token",
  "symbol": "SIMPLE",
  "description": "A basic token with no fee management",
  "imageIpfs": "QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "creatorAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96"
}

Option 2: Revenue Manager (require Revenue Manager)

{
  "name": "Revenue Token",
  "symbol": "REV", 
  "description": "A token using a revenue manager",
  "imageIpfs": "QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "creatorAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
  "revenueManagerAddress": "0x712fa8ddc7347b4b6b029aa21710f365cd02d898"
}

Option 3: Fee Split Manager (require Fee Split Manager)

{
  "name": "Split Token",
  "symbol": "SPLIT",
  "description": "A token using a pre-deployed fee split manager", 
  "imageIpfs": "QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "creatorAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
  "feeSplitManagerAddress": "0xb31435D40c0cB02c27bf732940dB3d9e4A3b253A"
}

Option 4: Custom Fee Split (Even Distribution, no fees for the creator)

{
  "name": "Community Token",
  "symbol": "COMM",
  "description": "A token with shared revenue among community members",
  "imageIpfs": "QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "creatorAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
  "feeSplitRecipients": [
    {"type": "email", "id": "[email protected]"},
    {"type": "twitter", "id": "justinavery"},
    {"type": "farcaster", "id": "javery"},
    {"type": "wallet", "id": "0x1234567890123456789012345678901234567890"}
  ]
}

Option 5: Custom Fee Split (Custom Percentages, 20% of the fees to the creator)

{
  "name": "Weighted Token", 
  "symbol": "WCOMM",
  "description": "A token with custom revenue splits",
  "imageIpfs": "QmX7UbPKJ7Drci3y6p6E8oi5TpUiG7NH3qSzcohPX9Xkvo",
  "creatorAddress": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96",
  "creatorShare": 2000
  "feeSplitRecipients": [
    {"type": "email", "id": "[email protected]", "split": "5000000"},
    {"type": "twitter", "id": "justinavery", "split": "3000000"}, 
    {"type": "wallet", "id": "0x123...", "split": "2000000"}
  ]
}

Response

{
  "success": true,
  "message": "Memecoin launch request queued",
  "jobId": "40",
  
  // Queue status will show how long the expected flaunch time should be. The
  // `estimatedWaitSeconds` can offset the initial "Check Launch Status" delay.
  "queueStatus": {
    "position": 0,
    "waitingJobs": 0,
    "activeJobs": 1,
    "estimatedWaitSeconds": 0
  },
  
  // Privy data will vary depending on the `creatorType` specified
  "privy": {
    "type": "wallet",
    "address": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96"
  }
}

Check Launch Status

GET /api/v1/launch-status/{{ jobId }}

Retrierves the launch status of a jobId.

Headers

Name
Value

Content-Type

application/json

Response

{
  "success": true,
  "state": "completed",
  "queuePosition": 0,
  "estimatedWaitTime": 0,
  "transactionHash": "0x04e594ee46312eecee8827aa2fef777dd2a94d247b723662be3a6daabb300028",
  "collectionToken": {
    "address": "0x06199b4b69f815141C197D034698d9E67Cdd265b",
    "imageIpfs": "QmQX8pdLRGeNps92Ma4esew7cbnYuBxQK7xUvp5soe3Lec",
    "name": "Community Coin",
    "symbol": "COMM",
    "tokenURI": "ipfs://QmSxzzNaeHbYZbPyFF29Z1PrhrsfNNMyFvebZeuLPrkzvA",
    "creator": "0x498E93Bc04955fCBAC04BCF1a3BA792f01Dbaa96"
  },
  "revenueManagerAddress": null,
  // NEW: Fee split information
  "feeSplitManagerAddress": "0x6baa4ec493a9698dc7388c0f290e29ea3d149f99",
  "feeSplitRecipients": [
    "0x1234567890123456789012345678901234567890",
    "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd", 
    "0x9876543210987654321098765432109876543210"
  ]
}

Last updated

Was this helpful?