https://swarms.world/api/token/launch
Creates a minimal agent listing and launches an associated token on Solana. 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: You can pass an image URL, send a raw file (multipart), or base64 data. Raw images are stored and used for token metadata; omit for no image.
Request
Headers
| Name | Type | Required | Description |
|---|---|---|---|
Authorization | string | Yes | Bearer token. Use your API key: Bearer YOUR_API_KEY. |
Content-Type | string | Yes | Either application/json (for JSON body) or multipart/form-data (for raw file upload). |
Body Parameters
You can send the request in two ways: Option A — JSON (Content-Type: application/json)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | — | Display name of the agent. Minimum 2 characters. |
description | string | Yes | — | Description of the agent. Cannot be empty. |
ticker | string | Yes | — | Token symbol (e.g. MAG, SWARM). 1–10 characters; only letters and numbers. Automatically uppercased. |
private_key | string | Yes | — | Wallet private key used to sign the token-creation transaction. Accepted formats: JSON array of 64 bytes, base64 string, or base58 string. Must correspond to the creator wallet. |
image | string | No | — | Agent/token image. URL: used as-is. Base64 (data URL or raw): stored and used for token metadata. Omit for no image. |
Content-Type: multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Same as above. |
description | string | Yes | Same as above. |
ticker | string | Yes | Same as above. |
private_key | string | Yes | Same as above. |
image | file | No | Raw image file (e.g. PNG, JPEG, WebP, GIF). Stored and used for token metadata. Omit for no image. |
Response
Success (HTTP 200)
| Field | Type | Description |
|---|---|---|
success | boolean | Always true on success. |
id | string | UUID of the created agent in the database. |
listing_url | string | Full URL to the agent page, e.g. https://swarms.world/agent/{id}. |
tokenized | boolean | Always true for this endpoint. |
token_address | string | null | Solana mint address of the created token. |
pool_address | string | null | Pool or config address for the token, when available. |
HTTP Status Codes
| Code | Meaning |
|---|---|
200 | Success; agent created and token launched. |
400 | Bad request: validation failed (body params), invalid private key, tokenization failed, or content validation failed. |
401 | Unauthorized: missing or invalid API key. Response includes a user-friendly message and how_to_get_key pointing to https://swarms.world/platform/api-keys. |
405 | Method not allowed; only POST is accepted. |
429 | Too many requests; daily agent limit exceeded. |
500 | Internal server error, tokenization error, or database error. |
Example Request
-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)
| Field | Type | Description |
|---|---|---|
error | string | Short error category (e.g. Validation error, Authentication required). |
message | string | Human-readable error description. |
details | string | object | Extra context; may be a string or a structured object (e.g. validation errors). |
status_code | number | HTTP status code (same as the response status). |
Authentication errors (401)
| Field | Type | Description |
|---|---|---|
how_to_get_key | string | Canonical link to create or manage your API key: https://swarms.world/platform/api-keys. Use this URL (not the request host) so the link is correct when calling from any environment. |
Validation errors (400)
| Field | Type | Description |
|---|---|---|
errors | array | Zod-style validation errors (e.g. path and message per field). |
Rate limit errors (429)
| Field | Type | Description |
|---|---|---|
currentUsage | number | Current usage count for the limit. |
limits | object | Applied rate limit configuration. |
resetTime | string | When the limit resets (e.g. UTC timestamp). |
Example error responses
Validation error (400):Notes
-
Private key formats
private_keyis 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)
- JSON array: 64 integers, e.g.
-
Ticker
Only uppercase letters and numbers; maximum 10 characters. Stored and returned in uppercase. -
Image
Sendimageas a URL, a raw file inmultipart/form-data, or base64 in the JSON body. Image is optional; the token can be created without one. -
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. -
Rate limits
Subject to the same daily agent creation limits. See the API Reference for limits and reset behavior. -
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.", andhow_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.
- 401 (missing or invalid API key): The response body is always
See also
- API Reference – Overview, authentication, and other endpoints.