Launch API
Create and manage token launches.
Create Launch
POST /launch
Creates a new token launch with optional vesting and DAO configuration.
Request Body
interface CreateLaunchRequest {
// Required
name: string; // Token name (max 32 chars)
ticker: string; // Token symbol (max 10 chars)
totalSupply: number; // Total supply (before decimals)
// Optional
description?: string; // Token description
image?: string; // Image URL (Arweave/IPFS recommended)
decimals?: number; // Token decimals (default: 9)
reservePercent?: number; // % of supply for reserve (default: 0)
beneficiary?: string; // Wallet to receive vested tokens
// Vesting config
vestingConfig?: {
mode: 'time' | 'hybrid';
cliffMonths?: number;
durationMonths?: number;
time?: { // For hybrid mode
percent: number;
cliffMonths: number;
durationMonths: number;
};
};
// DAO config
daoConfig?: {
name?: string; // DAO name (default: token name)
minTokensToCreate?: number; // Min tokens to create proposal
votingTime?: number; // Voting period in seconds
};
// Liquidity config
liquidityConfig?: {
percent: number; // % of reserve for liquidity
initialPrice?: number; // Initial token price in SOL
};
// Webhook
webhookUrl?: string; // URL for status updates
webhookSecret?: string; // HMAC secret for verification
}Example Request
curl -X POST https://etch.film.fun/api/launch \
-H "Authorization: Bearer etch_sk_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Awesome Token",
"ticker": "AWE",
"description": "The most awesome token on Solana",
"image": "https://arweave.net/abc123",
"totalSupply": 1000000000,
"decimals": 9,
"reservePercent": 20,
"beneficiary": "8vP2...",
"vestingConfig": {
"mode": "time",
"cliffMonths": 6,
"durationMonths": 24
},
"daoConfig": {
"minTokensToCreate": 1000000,
"votingTime": 259200
},
"liquidityConfig": {
"percent": 50,
"initialPrice": 0.0001
},
"webhookUrl": "https://myapp.com/webhook/etch"
}'Response
{
"launchId": "launch_abc123xyz",
"status": "queued",
"createdAt": "2026-02-15T12:00:00Z",
"estimatedTime": "30s",
"config": {
"name": "Awesome Token",
"ticker": "AWE",
"totalSupply": 1000000000,
"reservePercent": 20
}
}Get Launch Status
GET /launch/:launchId
Retrieve the status and details of a launch.
Response
{
"launchId": "launch_abc123xyz",
"status": "complete",
"createdAt": "2026-02-15T12:00:00Z",
"completedAt": "2026-02-15T12:00:30Z",
"config": {
"name": "Awesome Token",
"ticker": "AWE",
"totalSupply": 1000000000,
"reservePercent": 20
},
"result": {
"mint": "AWE1234...",
"metadata": "META5678...",
"vestingContract": "VEST9012...",
"dao": {
"realm": "REALM3456...",
"governance": "GOV7890...",
"treasury": "TRES1234..."
},
"pool": {
"address": "POOL5678...",
"lpMint": "LP9012..."
}
},
"transactions": [
{
"type": "mint",
"signature": "5abc...",
"status": "confirmed"
},
{
"type": "vesting",
"signature": "5def...",
"status": "confirmed"
}
]
}Status Values
| Status | Description |
|---|---|
queued | Launch is queued for processing |
processing | Launch is being executed |
complete | All steps completed successfully |
failed | Launch failed (see error field) |
partial | Some steps completed, others failed |
List Launches
GET /launches
List all launches for your account.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status |
limit | number | Max results (default: 20) |
offset | number | Pagination offset |
Example
curl "https://etch.film.fun/api/launches?status=complete&limit=10" \
-H "Authorization: Bearer etch_sk_live_xxxxx"Last updated on