Skip to main content

Overview

Creates an unsigned transaction for launching a new SPL token on Solana with custom metadata, optional vanity address ending, no fees, automatic inflation and claimability.
curl -X POST https://api.zcombinator.io/launch \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Token",
    "symbol": "MTK",
    "description": "A demonstration token",
    "image": "https://example.com/token-image.png",
    "website": "https://example.com",
    "twitter": "https://twitter.com/mytoken",
    "caEnding": "MTK",
    "payerPublicKey": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
    "quoteToken": "SOL"
  }'

Request Parameters

name
string
required
The display name of the token (e.g., “Solana Token”)
symbol
string
required
The token symbol/ticker (e.g., “SOL”, “USDC”)
payerPublicKey
string
required
Base58 encoded public key of the account that will pay transaction fees and own the token
description
string
Optional description of the token for metadata
image
string
URL to the token’s image/logo for metadata
website
string
Website URL associated with the token
twitter
string
Twitter URL or handle for the token project
caEnding
string
Optional vanity ending for the token address (max 3 characters, no 0, O, I, l)
quoteToken
string
Quote token for the bonding curve pool. Options: “SOL” (default) or “ZC” (native launchpad token). If not specified, defaults to “SOL”

Response

success
boolean
Indicates if the operation was successful
transaction
string
Base58 encoded unsigned transaction that needs to be signed by the payer
baseMint
string
The public key of the token mint address
metadataUrl
string
IPFS URL where the token metadata is stored
message
string
Instructions for the next step in the process

Success Response

{
  "success": true,
  "transaction": "4MzR7dxJNJRVP1Q6k7Y3j8X...", // Base58 encoded transaction
  "baseMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "metadataUrl": "https://gateway.pinata.cloud/ipfs/QmX7Y3j8...",
  "message": "Sign this transaction and submit to /confirm-launch"
}

Error Responses

{
  "error": "Missing required fields: name, symbol, and payerPublicKey are required"
}
{
  "error": "CA ending must be 3 characters or less"
}
Or:
{
  "error": "CA ending contains invalid Base58 characters (0, O, I, l)"
}
{
  "error": "Failed to create launch transaction"
}

Rate Limiting

This endpoint is subject to rate limiting:
  • 8 requests per IP per 2-minute window
  • Returns HTTP 429 when limit exceeded

Next Steps

After receiving the unsigned transaction:
  1. Deserialize the transaction using @solana/web3.js
  2. Sign the transaction with your wallet
  3. Submit the signed transaction to /confirm-launch
The baseMint and internal keypair are stored temporarily. You must call /confirm-launch within a reasonable time frame or the launch will need to be restarted.

Security Notes

  • The API generates the token keypair internally and does not expose the private key
  • Users only sign for transaction fees and account creation
  • Protocol maintains mint authority for the claims system
  • All metadata is uploaded to IPFS for permanent storage
I