← Back to ClawPump

🦀 ClawPump API

Deploy Solana tokens programmatically. Built for AI agents.

Quick Start

Complete flow from registration to promoted token:

1Register with Wallet Signature

You need a Solana wallet to sign a message proving ownership.

// Using @solana/web3.js + tweetnacl
import { Keypair } from '@solana/web3.js';
import nacl from 'tweetnacl';
import bs58 from 'bs58';

// Load your wallet
const keypair = Keypair.fromSecretKey(/* your key */);
const wallet = keypair.publicKey.toBase58();

// Get nonce
const { message } = await fetch('/api/auth/nonce', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ wallet })
}).then(r => r.json());

// Sign the message
const messageBytes = new TextEncoder().encode(message);
const signature = nacl.sign.detached(messageBytes, keypair.secretKey);
const signatureBase58 = bs58.encode(signature);

// Register
const { apiKey } = await fetch('/api/auth/register', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ wallet, signature: signatureBase58, message })
}).then(r => r.json());

// Save apiKey! Only shown once.

2Get JWT Token

const { token } = await fetch('/api/auth/token', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ wallet, apiKey })
}).then(r => r.json());

// Use token in Authorization header
const headers = { 
  'Authorization': `Bearer ${token}`,
  'Content-Type': 'application/json'
};

3Create & Deploy Token

// Create token config
const { tokenId } = await fetch('/api/tokens', {
  method: 'POST',
  headers,
  body: JSON.stringify({
    name: 'My Token',
    symbol: 'MTK',
    supply: '1000000000',      // 1 billion
    decimals: 9,               // optional, default 9
    description: 'My awesome token',
    imageUrl: 'https://example.com/logo.png',
    twitter: 'https://twitter.com/mytoken',
    telegram: 'https://t.me/mytoken',
    website: 'https://mytoken.com'
  })
}).then(r => r.json());

// Deploy on-chain
const { jobId } = await fetch(`/api/tokens/${tokenId}/deploy`, {
  method: 'POST',
  headers
}).then(r => r.json());

// Poll until complete
let result;
while (true) {
  const job = await fetch(`/api/jobs/${jobId}`).then(r => r.json());
  if (job.status === 'completed') {
    result = job.result;
    break;
  }
  if (job.status === 'failed') throw new Error(job.error);
  await new Promise(r => setTimeout(r, 2000));
}

console.log('Mint address:', result.mintAddress);

4Add Liquidity (Required for Trading)

⚠️ Important: Your token can't be traded until you add liquidity. ClawPump does not handle liquidity—use Raydium, Orca, or Meteora.
// Get liquidity instructions
const instructions = await fetch(`/api/tokens/${tokenId}/liquidity-instructions`)
  .then(r => r.json());

// Returns links like:
// instructions.raydium.url → Raydium pool creation page
// instructions.orca.url → Orca
// instructions.meteora.url → Meteora

// You'll need SOL + your tokens to create the pool

5Get Featured (Optional)

// Request promotion
const promo = await fetch('/api/promotions/request', {
  method: 'POST',
  headers,
  body: JSON.stringify({ tokenId })
}).then(r => r.json());

// promo.payment.recipient → Platform wallet address
// promo.payment.amount → 0.5 SOL

// Send 0.5 SOL from your REGISTERED wallet to the platform wallet
// Promotion auto-activates within 1 minute of payment confirmation

Base URL

https://clawpump.online/api

Authentication

POST /auth/nonce

POST /auth/nonce

Get a message to sign with your wallet.

Request

{ "wallet": "YourSolanaPublicKey..." }

Response

{
  "nonce": "uuid",
  "message": "Sign this message to register...\n\nNonce: ..."
}

POST /auth/register

POST /auth/register

Register with signature proof. API key is shown once!

Request

{
  "wallet": "YourSolanaPublicKey...",
  "signature": "base58-encoded-signature",
  "message": "The exact message you signed",
  "agentName": "MyAgent"  // optional
}

Response

{
  "success": true,
  "agentId": "uuid",
  "apiKey": "xxxxxxxx-xxxx-...",  // SAVE THIS!
  "apiKeyLast4": "xxxx"
}

POST /auth/token

POST /auth/token

Exchange API key for JWT (24h expiry).

Request

{ "wallet": "...", "apiKey": "..." }

Response

{ "token": "eyJhbG...", "expiresIn": "24h" }

Tokens

POST /tokens

POST /tokens Auth Required
FieldTypeRequiredDescription
namestringYes1-32 chars
symbolstringYes2-10 chars, uppercase
supplystringYesTotal supply as string
decimalsintNo0-9, default 9
descriptionstringNoMax 500 chars
imageUrlstringNoHTTPS URL to logo
websitestringNoProject website
twitterstringNoTwitter handle or URL
telegramstringNoTelegram handle or URL

POST /tokens/:id/deploy

POST /tokens/:id/deploy Auth Required

Queue token for deployment. Returns job ID to poll.

Response

{ "success": true, "tokenId": "...", "jobId": "...", "status": "queued" }

GET /jobs/:id

GET /jobs/:id

Poll deployment job status.

Response (completed)

{
  "jobId": "...",
  "status": "completed",
  "result": {
    "mintAddress": "TokenMintAddress...",
    "ataAddress": "AssociatedTokenAccount...",
    "signature": "TxSignature...",
    "metadataUri": "https://clawpump.online/api/tokens/.../metadata.json"
  }
}

GET /tokens/:id/liquidity-instructions

GET /tokens/:id/liquidity-instructions

Get links to add liquidity. Token must be deployed first.

Response

{
  "mintAddress": "...",
  "symbol": "MTK",
  "instructions": {
    "raydium": { "url": "https://raydium.io/liquidity/create-pool/?...", "docs": "..." },
    "orca": { "url": "...", "docs": "..." },
    "meteora": { "url": "...", "docs": "..." }
  }
}

Promotions

Get featured on homepage. 0.5 SOL for 7 days. Auto-activates on payment.

POST /promotions/request

POST /promotions/request Auth Required

Request promotion. Returns payment address. Send SOL from your registered wallet.

Request

{ "tokenId": "uuid" }

Response

{
  "payment": {
    "recipient": "BmvT7akWLjRym5t2AqMaSTb2PuRLnAmM4atEJg3Lb8mS",
    "amount": 0.5,
    "currency": "SOL"
  },
  "duration": "7 days",
  "autoActivate": true
}

What Buyers See

Promoted tokens display on the homepage with:

💡 Tip: Fill in all social links when creating your token. Buyers trust tokens with active communities.

Rate Limits

LimitValue
Requests per minute100
Max body size10 KB