Skip to Content
APILaunch API

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

StatusDescription
queuedLaunch is queued for processing
processingLaunch is being executed
completeAll steps completed successfully
failedLaunch failed (see error field)
partialSome steps completed, others failed

List Launches

GET /launches

List all launches for your account.

Query Parameters

ParameterTypeDescription
statusstringFilter by status
limitnumberMax results (default: 20)
offsetnumberPagination offset

Example

curl "https://etch.film.fun/api/launches?status=complete&limit=10" \ -H "Authorization: Bearer etch_sk_live_xxxxx"
Last updated on