Skip to main content
POST https://swarms.world/api/token/launch Creates a minimal agent listing and launches an associated token on Solana (via Jupiter). Only name, description, ticker, private key, and optional image are required. The agent is created with placeholder code and default metadata; the token is created and linked in a single request. Token creation costs approximately 0.04 SOL (paid from the wallet associated with the private key). Image flow: If you send a raw image (file or base64), the endpoint uploads it to Supabase Storage first, then sends the resulting Supabase URL to Jupiter for token metadata. You can also pass an existing image URL.

Request

Headers

Body Parameters

You can send the request in two ways: Option A — JSON (Content-Type: application/json) Option B — Multipart (Content-Type: multipart/form-data)

Response

Success (HTTP 200)

Example success response:

HTTP Status Codes

Example Requests

Multipart (raw image file): Use -F for each field and -F "image=@/path/to/agent-icon.png" with cURL; with Python use requests.post(..., files={"image": open("agent-icon.png", "rb")}, data={...}).

Error Responses

All error responses share a common shape. Additional fields may be present depending on the error type.

Error response body (4xx / 5xx)

Authentication errors (401)

Validation errors (400)

Rate limit errors (429)

Example error responses

Validation error (400):
Authentication failed (401): When the API key is missing or invalid, the response is normalized so you always get a clear message and the canonical API-keys link (not the request host):
Insufficient SOL balance (400): Returned when the creator wallet (derived from private_key) has less than 0.04 SOL. Token launch requires enough SOL for transaction fees and rent.
Tokenization failed (400):

Notes

  1. Private key formats
    private_key is accepted as:
    • JSON array: 64 integers, e.g. [1,2,3,...,64]
    • Base64: 64-byte key encoded as base64
    • Base58: 64-byte key encoded as base58 (e.g. Phantom export format)
  2. Ticker
    Only uppercase letters and numbers; maximum 10 characters. Stored and returned in uppercase.
  3. Image (raw upload → Supabase → Jupiter)
    • Raw file (multipart): Send image as a file in multipart/form-data. The endpoint uploads it to Supabase Storage, then sends the Supabase URL to Jupiter.
    • Base64 (JSON): Send image as a data:image/...;base64,... string or raw base64 in the JSON body. The endpoint uploads it to Supabase Storage, then sends the Supabase URL to Jupiter.
    • URL: Any publicly fetchable URL (e.g. an existing Supabase URL). Used as-is for Jupiter token metadata; no Supabase upload is performed.
      Image is optional; the token can be created without one.
  4. Frenzy mode (fee_selection: "frenzy")
    Frenzy mode routes the token through a 2× fee Jupiter API key, doubling the bonding curve fees. Tokens launched with fee_selection: "frenzy" appear on the Frenzy leaderboard for increased visibility. Omit this field or set it to "market" for standard fees.
  5. Quote mint (quote_mint)
    Controls the denomination of the bonding curve:
    • "SOL" (default): SOL-quoted pool. Market cap defaults are initialMarketCap: 18 SOL, migrationMarketCap: 400 SOL.
    • "USDC": USDC-quoted pool. Market cap defaults are initialMarketCap: 4000 USDC, migrationMarketCap: 9000 USDC.
      On-chain mint addresses: SOL = So11111111111111111111111111111111111111112, USDC = EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v.
  6. Authentication
    Uses the same API key as the rest of the Swarms Platform API. Create and manage keys at https://swarms.world/platform/api-keys.
  7. Rate limits
    Subject to the same daily agent creation limits. See the API Reference for limits and reset behavior.
  8. Error handling
    Some errors are normalized for a better client experience:
    • 401 (missing or invalid API key): The response body is always error: "Authentication failed", message: "Invalid or missing API key. Please check your API key and try again.", and how_to_get_key: "https://swarms.world/platform/api-keys" (canonical link; never localhost or another host).
    • Other errors (validation, tokenization, rate limit) are forwarded with the same status code and body shape.

See also