For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Supported Chains

The :chain segment accepts these slugs. Aliases and numeric chain IDs are rejected with a 400.

Slug
Chain ID
Launch
Fee split at launch
Existing manager
Create manager

base

8453

Yes

Yes

Yes

Yes

base-sepolia

84532

Yes

Yes

Yes

Yes

robinhood

4663

Yes

Yes

Yes

Yes

Fee split at launch works on every chain, including Robinhood. Passing feeSplitRecipients deploys a fee split manager as part of the launch — on Robinhood that is a DynamicAddressFeeSplitManager, on Base a static AddressFeeSplitManager. Recipient shares behave identically either way.

The distinction that matters is which manager gets deployed, not whether managers are supported.

Chain support is machine-readable at /api/v1/config, so you should not need to hardcode this table. Check capabilities there before assuming a chain supports an operation:

A chain that does not support an operation rejects it with Manager operations are not supported on this chain before any side effect — no metadata is pinned, nothing is queued, and no RPC call is made.

Health Check

GET /livez

Reports the API's dependency health. status is ok when every check passes and degraded otherwise; the endpoint still returns 200 either way.

Headers

Name
Value

Content-Type

application/json

Response

Service Configuration

GET /api/v1/config

Returns the chains this deployment supports, their capabilities, and whether sandbox launches are accepted. Prefer this over hardcoding chain lists.

Response

Create a Revenue Manager (Launchpad)

POST /api/v1/{{ base | base-sepolia | robinhood }}/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

Response

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:

Custom Splits with Email Owner:

Success Response

Token Metadata Upload

The /api/v1/upload-metadata endpoint uploads token metadata to IPFS via Pinata and returns the IPFS hash and token URI. This endpoint is similar to the metadata upload step in the Launch Token flow but is available as a standalone service.

POST /api/v1/upload-metadata

Request Body

Parameters

Required.

Name
Value

name

The token name

symbol

The token symbol

description

Token description

imageIpfs

IPFS hash of the token image (without ipfs:// prefix). Use Image Upload endpoint to generate an imageIPFS.

Optional.

Name
Value

websiteUrl

Project website URL

discordUrl

Discord server URL

twitterUrl

Twitter/X profile URL

telegramUrl

Telegram channel/group URL

Response

Example Usage

Basic Metadata Upload

The endpoint creates ERC-20/ERC-721 compatible metadata with this structure:

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

Response

Video Upload

Upload a video file to Cloudflare Stream for use in token creation.

Request Body

Field
Type
Description

maxDurationSeconds

number

Maximum video duration in seconds (default: 300, max: 300)

maxSizeBytes

number

Maximum file size in bytes (default: 52,428,800, max: 52,428,800 = 50MB)

userId

string

User identifier for tracking (default: "anonymous")

Rate Limiting

  • 10 uploads per hour per IP address

  • API enforces maximum limits of 50MB and 5 minutes duration

  • Users can specify lower limits via request parameters

Request Example

Success Response

Error Responses

Upload Process

  1. Request upload URL from this endpoint

  2. Upload video file directly to the returned uploadURL using a POST request with form data

  3. Monitor processing status using the Video Status endpoint

  4. Use videoUID in token creation once processing is complete


Video Status

Check the processing status of an uploaded video.

Query Parameters

Parameter
Type
Required
Description

uid

string

Yes

Video UID returned from upload endpoint

Response

Video States

State
Description

uploading

Video is being uploaded to Cloudflare

processing

Video is being processed and encoded

nsfw_checking

Content moderation in progress

nsfw_approved

✅ Video approved and ready for use

nsfw_rejected

❌ Video rejected due to inappropriate content

error

Processing failed


When launching your token you can now include the additional videoUID value.

This will use an automatically generated image from your video. If you would like to customise the thumbnail used for the token you can use the Image Upload api and include the resulting IPFS hash in your token creation.

List User Videos

Get all videos uploaded by a specific user.

Request Body

Response

Add video to your app

Enhanced Token Metadata

When a video is included, the token metadata structure is enhanced:

You can use the streamUrl and thumbnail in your app to showcase your videos.

Launch Token

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

Tokens can be launched on base, base-sepolia or robinhood. See Supported Chains for what each one allows.

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

  • $10k starting market cap

  • 80% dev / 20% community split

  • No revenue manager

  • Launched immediately; fair launch and sniper protection are currently paused

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).

imageIpfs

IPFS hash from the image upload endpoint. Optional only if you supply an approved videoUID instead, in which case the video thumbnail is used.

description is optional and defaults to an empty string.

Creator Authentication Options (choose at most 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

sniperProtection

boolean : Currently paused. Must be omitted or false; sending true returns a 400. See Antibot Protection.

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%)

videoUID

UID of a video that has passed moderation. Attaches video metadata to the token and, when no imageIpfs is given, uses the video thumbnail as the image.

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

Antibot Protection

When active, sniperProtection caps any single wallet at 0.25% of total supply for the duration of the fair launch, then lifts the cap once fair launch ends.

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)

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

3. Array of objects with custom splits:json

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

"user@example.com"

twitter

Alphanumeric + underscores, max 15 chars

"justinavery"

farcaster

Alphanumeric + underscores, 1+ chars

"javery"

Headers

Name
Value

Content-Type

application/json

Body

Option 1: No Treasury Management

Option 2: Revenue Manager (require Revenue Manager)

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

Which manager gets deployed. feeSplitRecipients deploys a fee split manager as part of the launch. On Base and Base Sepolia that is a static AddressFeeSplitManager; on Robinhood it is a DynamicAddressFeeSplitManager, whose recipient shares can be changed after deployment by the moderator (the resolved creator). The request and the response are the same either way — the deployed instance is returned as feeSplitManagerAddress on the status endpoint.

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

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

Response

Check Launch Status

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

Retrieves the launch status of a jobId. This endpoint is chainless — the job already knows which chain it was queued for.

Headers

Name
Value

Content-Type

application/json

Response

If the transaction was already broadcast before the failure, the hash is preserved and the response is annotated. Check the block explorer before retrying — the launch may in fact have succeeded.

Last updated

Was this helpful?