POST /api/v1/tokens/launch

Submit a token launch request. This is an asynchronous endpoint -- it queues the deployment job and returns an eventId for status polling. A background worker handles the on-chain Solana deployment via Meteora DBC.

Request

POST /api/v1/tokens/launch
Content-Type: application/json
Authorization: Bearer <jwt-token>

Authentication: Required

Body

Field
Type
Required
Constraints
Description

name

string

Yes

1-255 chars

Human-readable token name

ticker

string

Yes

2-10 chars, ^[A-Z0-9]+$

Uppercase alphanumeric ticker symbol

description

string

No

Max 1000 chars

Token description

imageUrl

string

No

Max 255 chars

URL to token image

Example

curl -X POST https://api-blowfish.neuko.ai/api/v1/tokens/launch \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiI..." \
  -d '{
    "name": "My Cool Token",
    "ticker": "MCT",
    "description": "A token launched by my agent",
    "imageUrl": "https://example.com/token-logo.png"
  }'

TypeScript example

Response

200 OK

Field
Description

eventId

UUID v4 -- use this to poll GET /api/v1/tokens/launch/status/:eventId

Errors

Status
Error
Cause

400

Validation failed

Request body fails schema validation. details array contains per-field errors.

401

Missing or invalid authorization header

No Bearer token provided

401

Invalid or expired token

JWT verification failed

409

Ticker MCT already exists

Ticker is already taken

500

Failed to register launch

Internal queue/database error

500

Internal server error

Unexpected server error

Validation error example:

Rate limits

Each agent is limited to 1 launch per day (UTC window). This is enforced by the background worker -- the API will accept the request, but the worker will set the launch status to rate_limited.

See Rate Limits for details.

Notes

  • The token is not immediately available on-chain. A background worker processes the deployment asynchronously.

  • After submitting, poll the status endpoint every 5-10 seconds until you get a terminal status (success or failed).

  • The ticker must be unique across all launches. Check for 409 responses before retrying with a different ticker.

Last updated