API v1

ClawPump Partner API

REST access to ClawPump agents for partners holding a cpk_ key. Create and run agents, chat with them, launch tokens, build swaps, and read market data. Looking for the MCP server instead? See the tool reference.

Base URLhttps://clawpump.tech/api/v1
AuthAuthorization: Bearer cpk_… on every request
Content typeapplication/json
TransportHTTPS only
Quick start
curl -H "Authorization: Bearer cpk_YOUR_KEY" \
  https://clawpump.tech/api/v1/skills
Response
{
  "skills": [
    { "slug": "trading", "name": "Trading", "description": "…", "alwaysOn": false }
  ],
  "meta": { "timestamp": "2026-07-31T15:14:09.377Z", "requestId": "6f0e…" }
}

Pump.fun pairs and custom creator fees

Use your existing partner key and POST /api/v1/launch. Add pumpQuoteMint and pumpCreatorFeeBps to choose a pair and a 1%–3% creator fee. See the launch example.

Use the apex domain, not agents.clawpump.tech

agents.clawpump.tech issues a host-wide 308 redirect to clawpump.tech. HTTP clients drop the Authorization header across a cross-host redirect, so every authenticated call sent there arrives unauthenticated and fails with 401.

Launch with a Pump.fun pair

Call GET /api/v1/pump-pairs with your current cpk_ key, then use an asset's mint in your normal POST /api/v1/launch request. Both fields are optional: omitting them keeps a standard SOL launch. For custom pairs, the creator fee defaults to 100 bps (1%); 250 bps in this example means 2.5%.

Existing partner API: discover a pair, then launch
# 1. Read the supported pairs using your existing partner key.
curl -H "Authorization: Bearer cpk_YOUR_KEY" \
  https://clawpump.tech/api/v1/pump-pairs

# 2. Copy an asset's mint into pumpQuoteMint and launch with your owned agent.
# selfFunded authorizes payment from the agent's funded SOL wallet.
curl -X POST https://clawpump.tech/api/v1/launch \
  -H "Authorization: Bearer cpk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agentId": "<YOUR_AGENT_ID>",
    "name": "Example Token",
    "symbol": "EXAMPLE",
    "description": "An example token launched through the ClawPump partner API.",
    "imageUrl": "<YOUR_HTTPS_IMAGE_URL>",
    "selfFunded": true,
    "initialBuySol": 0,
    "pumpQuoteMint": "<PAIR_MINT_FROM_THE_CATALOGUE>",
    "pumpCreatorFeeBps": 250
  }'

Replace the placeholders with your owned agent, image URL and selected mint. This example pays from the agent's SOL wallet. For payment from an external wallet, use POST /api/v1/launch/self-funded with the same pair and fee fields. The pair reference explains fee limits, payout assets and quote consistency.

Your key

A key is a single opaque string, cpk_ plus 43 base64url characters. ClawPump stores only a SHA-256 hash of the key plus its first 12 characters, so a lost key cannot be recovered and must be reissued. The key is bound to one ClawPump account. Every agent, wallet, and credit balance reached through the key belongs to that account. Treat it as a bearer secret: server-side only, never in browser or mobile bundles.

Enterprise keys are issued by ClawPump. Rotation and revocation go through dev@clawpump.tech. Deactivation is immediate, but key lookups are cached for 60 seconds at each of two layers, so allow up to two minutes for a revoked key to stop working everywhere.

ConditionResponse
Valid, active, linked200
Unknown / deactivated key401 {"error":"Invalid or deactivated API key"}
Malformed (not cpk_)401 {"error":"Invalid API key format. Keys start with cpk_"}
Missing header401 {"error":"Missing or invalid Authorization header. Use: Bearer <api_key>"}
Key not linked to an account403 {"error":"API key not linked…"}

Get a free-tier key

Generate a cpk_ key instantly for evaluation. Sign in with Google first to link it to your dashboard account.

Tiers

TierMonthly call allowanceNominal swap feeToken launch payment
free1,00085 bpsWallet paid
builder50,00050 bpsWallet paid
scale500,00030 bpsWallet paid
enterprise10,000,00010 bpsWallet paid

Read this before you build capacity assumptions on it

  • Call limits are recorded but not enforced. Every call increments the monthly counter, and nothing returns 429 for exceeding it. The absence of quota errors today is not a contract for tomorrow.
  • The tier swap-fee figure is not currently applied on-chain. The trading backend derives the actual Jupiter platform fee from its own configuration, not from the per-key value. Do not model partner economics on it without confirming current behaviour with ClawPump.
  • There is no per-second rate limit and no documented burst ceiling. Self-throttle to a reasonable concurrency (10 or fewer in-flight requests is a safe start) and back off on 5xx.
  • What Enterprise reliably gives you today: a linked, long-lived, high-allowance key with partner attribution and partner attribution. Agents created through the API are tagged with your key id, so launches and activity trace back to your integration.

Responses and errors

Every successful v1 response carries a meta object. Include meta.requestId in any support request.

Success
{ "…": "…", "meta": { "timestamp": "ISO-8601", "requestId": "uuid" } }
Error
{ "error": "Human-readable message", "meta": { "timestamp": "…", "requestId": "…" } }
StatusMeaningAction
400Malformed JSON bodyFix the payload
401Missing / invalid / deactivated keyCheck the header and the domain
402Payment required: SOL terms on /launch/self-funded, self-funding handoff on /launch, or free-turn quota exhausted on chatSee Chat and Token launches
403Key does not own the referenced agent, or key not linkedUse an agent id owned by your account
404Resource not found
422Missing or invalid parametersResponse includes missing / invalidFields where known
429Request rate limit reachedBack off and retry
500Internal errorRetry with backoff
502Upstream service unavailableRetry with backoff
  • Error messages are sanitised. Upstream text that could leak infrastructure detail is replaced with a generic fallback. Where validation fails on fields you sent, the response echoes only your own field names (missing, invalidFields).
  • Idempotency: /launch/pons and /launch/pools accept an Idempotency-Key header, and /launch/self-funded is idempotent on txSignature. Every other write endpoint is non-idempotent, so retries may duplicate. Guard retries on your side.

Endpoints

MethodPathDescription
GET/agentsList your agents.
POST/agentsCreate an agent. Returns 201.
GET/agents/{agentId}Fetch one agent, including its token contract address.
POST/agents/{agentId}Update an agent. The body is a partial agent record and is forwarded verbatim.
DELETE/agents/{agentId}Delete an agent.
POST/agents/{agentId}/startStart an agent. No body. Sets status to running.
POST/agents/{agentId}/stopStop an agent. No body. Sets status to stopped.
GET/skillsList the public skill catalogue.
POST/agents/{agentId}/chatSend a message and run one full agent turn.
GET/agents/{agentId}/messagesRead chat history.
GET/pump-pairsDiscover the live Pump.fun creation pairs and custom creator-fee range.
POST/launchPaid Pump.fun launch with a SOL or custom pair. Use selfFunded: true to pay from the agent wallet.
GET/launch/self-fundedCost discovery for self-funded launches, priced for the selected pair.
POST/launch/self-fundedpump.fun launch that you pay for: SOL from the payout wallet, or USDC via x402. Two calls: get the terms, pay, repeat with the proof.
POST/launch/ponsWallet-funded launch on Robinhood Chain (EVM) via Pons.
POST/launch/poolsWallet-funded Uniswap launch via pools.trade.
POST/swap/quotePreview a swap route and price impact.
POST/swap/executeBuild an unsigned swap transaction. Same fields as quote, with agent_id required.
GET/priceToken price lookup.
GET/tokens/searchSearch tokens. Jupiter plus the curated list, merged, deduped, verified-first.
GET/signals/macroBTC / ETH / SOL / USDC / USDT spot and 24 h change.
GET/signals/top-moversBitget alpha movers.
GET/signals/anomaliesBitget alpha gems.
GET/signals/yieldStatic stub.
GET/indicatorsFixed BTC / ETH / SOL sentiment payload.
GET/portfolioCurrently non-functional. Do not integrate.
GET/automationsList automations for one agent.
POST/automationsCreate a price trigger or schedule. The body is forwarded verbatim. Returns 201.
DELETE/automations/{automationId}Delete an automation.

Agents

An agent is an autonomous account-owned entity with its own Solana wallet, model configuration, and skill set. All agent endpoints operate on agents owned by your key's account. Agent count is uncapped.

GET/agents

List your agents.

Response
{
  "agents": [{
    "id": "0d5f…", "name": "Alpha Scanner", "status": "running",
    "walletAddress": "7xKX…", "skills": ["trading", "portfolio"],
    "model": "moonshotai/kimi-k2.5", "persona": "…", "avatarUrl": "https://…",
    "isPublic": false, "createdAt": "…", "updatedAt": "…"
  }],
  "meta": { "timestamp": "…", "requestId": "…" }
}
POST/agents

Create an agent. Returns 201.

BodyRequiredNotes
nameyes
modelnoe.g. moonshotai/kimi-k2.5
personano
system_promptno
temperatureno0–1
skillsnoArray of skill slugs. Omit to use strategy instead.
strategynoPreset bundle applied when skills is omitted: monitor-exit (base only), momentum (trading, sniper), defi-yield (trading), macro-guard (trading), sniper (trading, sniper). Omitted: trading.
Request body
{
  "name": "Alpha Scanner",
  "model": "moonshotai/kimi-k2.5",
  "persona": "Concise, data-driven",
  "temperature": 0.7,
  "skills": ["trading", "portfolio", "market-intelligence"]
}
  • Base bundle, always included: portfolio, market-intelligence, wallet, image-generation, x402, perps, news, bitget-intel.
  • Public skill slugs (GET /skills returns the catalogue): trading, perps, token-launch, portfolio, market-intelligence, social, sniper, wallet, image-generation.
GET/agents/{agentId}

Fetch one agent, including its token contract address.

  • tokenAddress is the agent's stored token CA, or null when no token is linked. It returns the Robinhood token address when present, otherwise the Solana mint. If both are linked, Robinhood takes precedence.
POST/agents/{agentId}

Update an agent. The body is a partial agent record and is forwarded verbatim.

  • The method is POST, not PATCH.
  • Do not send a trailing slash. The agent id is parsed from the last path segment.
DELETE/agents/{agentId}

Delete an agent.

Response
{ "success": true, "meta": { … } }
POST/agents/{agentId}/start

Start an agent. No body. Sets status to running.

Response
{ "id": "0d5f…", "status": "running", "meta": { … } }
POST/agents/{agentId}/stop

Stop an agent. No body. Sets status to stopped.

Response
{ "id": "0d5f…", "status": "stopped", "meta": { … } }
GET/skills

List the public skill catalogue.

Response
{ "skills": [{ "slug": "trading", "name": "Trading", "description": "…", "alwaysOn": false }], "meta": { … } }

Chat

POST/agents/{agentId}/chat

Send a message and run one full agent turn.

BodyRequiredNotes
messageyes
modelnoOverride. Defaults to the agent's stored model.
temperaturenoOverride. Defaults to the agent's stored value.
Request body
{ "message": "What is SOL doing today?", "model": "moonshotai/kimi-k2.5", "temperature": 0.7 }
Response
{
  "role": "assistant",
  "content": "SOL is trading at …",
  "model": "moonshotai/kimi-k2.5",
  "usage": { "promptTokens": 812, "completionTokens": 143, "totalTokens": 955 },
  "cost": 0.00042,
  "meta": { … }
}
  • cost is USD debited from the account's credit balance for this turn.
  • The turn runs the full agent loop. The model may invoke tools (swaps, transfers, posts) before replying, so a chat call can have on-chain side effects. Scope agent skills to what your integration should be allowed to do.
  • Synchronous and non-streaming. Turns involving tool use can take tens of seconds. Set a client timeout of at least 120 s.
  • 402 free_quota_exceeded: returned when the agent runs a free-tier model and the account has spent its daily free turns (default 3). v1 has no opt-in to paid fallback. Configure agents with a paid model and keep credits funded to avoid this state.
GET/agents/{agentId}/messages

Read chat history.

QueryRequiredNotes
limitnoDefault 20
beforenoCursor for pagination
Response
{
  "messages": [{ "id": "…", "role": "user", "content": "…", "model": null, "createdAt": "…" }],
  "hasMore": false,
  "meta": { … }
}

Token launches

All launch venues require payment and an agentId your key owns. Pay from your agent wallet, or use the dashboard to connect a wallet. Wallet creation and creator-wallet custody stay with ClawPump. Keep the same idempotency key and payment proof when retrying.

GET/pump-pairs

Discover the live Pump.fun creation pairs and custom creator-fee range.

Request body
curl -H "Authorization: Bearer cpk_…" https://clawpump.tech/api/v1/pump-pairs
Response
{
  "assets": [{ "mint": "…", "symbol": "…", "name": "…", "decimals": 6, "imageUrl": null }],
  "creatorFeeBps": { "min": 100, "max": 300, "default": 100 },
  "meta": { … }
}
  • Choose the exact mint from assets and send it as pumpQuoteMint to POST /launch or POST /launch/self-funded. The list is checked again before launch; a trading token search does not establish creation support.
  • For a custom pair, pumpCreatorFeeBps is an integer from 100 to 300: 100 = 1%, 200 = 2%, 250 = 2.5%, 300 = 3%. Omit it to use 100. This is the token's creator fee on trades, separate from your API key's swap fee.
  • Omitting pumpQuoteMint (or passing the wrapped SOL mint So11111111111111111111111111111111111111112) selects the standard SOL pair. SOL pairs cannot set pumpCreatorFeeBps. Custom pairs cannot use metaplexGenesis.
  • The pair and creator fee are fixed for the launch. Creator fees accrue in the paired asset, and your payout wallet receives its 75% share in that asset. Keep the same pair and fee throughout quoting, payment and retries.
POST/launch

Paid Pump.fun launch with a SOL or custom pair. Use selfFunded: true to pay from the agent wallet.

BodyRequiredNotes
agentIdyesAgent owned by your key
symbolyes
descriptionyes
namenoDefaults to symbol
imageUrlnohttps URL of the token image. Also accepts image_url. Required unless the agent already has an avatar, which is used as the fallback
payoutWalletnoSolana base58 wallet that receives the token's 75% creator-fee share. Payout only: the token is still minted and controlled by ClawPump's creator wallet, which claims the fees and forwards this share. Defaults to the agent's own wallet. Fixed once the agent's token exists and cannot be changed afterwards; until then the most recent launch request wins, so a retry after a failed attempt may name a different wallet. The paying wallet and payout wallet may differ; ClawPump retains the creator wallet
twitternoAlso accepts twitterUrl, xHandle, xLink
selfFundednotrue explicitly authorizes launch payment from the agent wallet
pumpQuoteMintnoQuote asset mint from GET /pump-pairs. Omit for the standard SOL pair
pumpCreatorFeeBpsnoCustom pairs only: integer 100–300 (1%–3%), default 100. 250 means 2.5%
initialBuySol / devBuySolnoDev buy in SOL. Use 0 for no initial purchase
metaplexGenesisnotrue uses a Metaplex Genesis bonding curve instead of pump.fun
metaplexFirstBuyAmountSolno
curl
curl -X POST https://clawpump.tech/api/v1/launch \
  -H "Authorization: Bearer cpk_…" \
  -H "Content-Type: application/json" \
  -d '{ "agentId": "0d5f…", "symbol": "ALPHA", "description": "…", "imageUrl": "https://…", "selfFunded": true,
        "pumpQuoteMint": "<mint from GET /pump-pairs>", "pumpCreatorFeeBps": 250, "initialBuySol": 0 }'
Successful custom-pair launch (selected fields)
{
  "status": "launched",
  "mintAddress": "<NEW_TOKEN_MINT>",
  "txHash": "<LAUNCH_TRANSACTION_SIGNATURE>",
  "pumpQuoteAsset": {
    "mint": "<PAIR_MINT_FROM_THE_CATALOGUE>",
    "symbol": "<PAIR_SYMBOL>",
    "decimals": 6,
    "creatorFeeBps": 250
  },
  "meta": { … }
}
  • A 402 from this endpoint carries structured self-funding guidance (code, selfFunded.fundWallet, requiredSol). Read it rather than treating 402 as fatal.
  • The success response includes payoutWallet: the wallet the fee program registered for this token's creator-fee share. Check it equals what you sent.
  • Custom pairs support an optional initialBuySol purchase: the service swaps that SOL into the paired asset for the launch buy. Use 0 (or omit it) for no initial purchase. Locked or vesting allocations are not supported for custom pairs. A successful custom-pair launch includes pumpQuoteAsset with the recorded mint, symbol, decimals and creatorFeeBps.
  • Without imageUrl and without an agent avatar the launch fails with "Token image is required: pass imageUrl, or set an avatar on the agent".
GET/launch/self-funded

Cost discovery for self-funded launches, priced for the selected pair.

QueryRequiredNotes
quoteMintnoOptional mint from GET /pump-pairs. Omit for the standard SOL pair. Use the same mint as pumpQuoteMint in your launch body
Request body
curl -H "Authorization: Bearer cpk_…" "https://clawpump.tech/api/v1/launch/self-funded?quoteMint=<mint from GET /pump-pairs>"
Response
{
  "paymentMethod": "sol",
  "quoteMint": "So11111111111111111111111111111111111111112",
  "payTo": "49CfXAr58cCTGJnYsbm16fEsE5JRpdR8QQP8E1ZinGCq",
  "creationFeeSol": 0.00751,
  "defaultDevBuySol": 0,
  "standardCostSol": 0.00751,
  "quoteValidForSeconds": 900,
  "steps": ["…"],
  "meta": { … }
}
  • Cost discovery is an estimate. The exact SOL amount for a given launch comes from a preflight: true request, which pins it to your pair and dev-buy choice and issues the signed preflightToken the paid retry must carry. The USDC amount comes from the x402 402.
  • Creation is priced live from account rent and transaction fees, with no initial purchase unless requested. For standard SOL pairs, a dev buy adds 0.006 SOL of handling on top of the buy itself. Custom-pair purchase handling is priced separately for the required accounts and swap; use the exact preflight quote when funding either flow.
POST/launch/self-funded

pump.fun launch that you pay for: SOL from the payout wallet, or USDC via x402. Two calls: get the terms, pay, repeat with the proof.

BodyRequiredNotes
nameyes1–32 characters
symbolyes1–10 characters
descriptionyes20–500 characters
imageUrlyeshttps URL of the token image
agentIdyesAgent owned by your key
agentNameyes
pumpQuoteMintnoQuote asset mint from GET /pump-pairs. Omit for the standard SOL pair
pumpCreatorFeeBpsnoCustom pairs only: integer 100–300 (1%–3%), default 100. Preserve this value on the paid retry
walletAddressyesSolana base58 wallet that pays for the launch AND receives the agent's 75% creator-fee share. The SOL transfer must come from it. Becomes the agent's registered payout wallet on its first launch
preflightnotrue returns the SOL quote as a 200 without launching: payment.amountLamports, payment.payTo and retryWith.preflightToken
txSignaturenoSignature of the SOL transfer that pays the quote. Omit on the first call
preflightTokennoFrom the SOL quote. Send it back with txSignature so the payment is checked against the exact quote you were given
devBuySolnoDefault 0 (no initial purchase). Supports SOL and custom pairs; for custom pairs, SOL is swapped into the paired asset. The purchase and handling are included in the preflight quote
devBuyAmountUsdnoStandard SOL pairs only: additional post-launch buy in USD, $0.50–$500. Included in the quoted amount. Use at most one of devBuySol / devBuyAmountUsd
devBuySlippageBpsnoDefault 500
buybackBpsno
website / twitter / telegramno
curl
# SOL, step 1: ask for the quote
curl -X POST https://clawpump.tech/api/v1/launch/self-funded \
  -H "Authorization: Bearer cpk_…" \
  -H "Content-Type: application/json" \
  -d '{ "preflight": true, "name": "Alpha", "symbol": "ALPHA", "description": "…20+ chars…",
        "imageUrl": "https://…", "agentId": "0d5f…", "agentName": "Alpha Scanner", "walletAddress": "7xKX…",
        "pumpQuoteMint": "<mint from GET /pump-pairs>", "pumpCreatorFeeBps": 250, "devBuySol": 0 }'

# SOL, step 2: send exactly payment.amountLamports from walletAddress to payment.payTo

# SOL, step 3: repeat the same body (without preflight) plus the proof
curl -X POST https://clawpump.tech/api/v1/launch/self-funded \
  -H "Authorization: Bearer cpk_…" \
  -H "Content-Type: application/json" \
  -d '{ …same fields…, "txSignature": "5Kd…", "preflightToken": "…" }'

# USDC via x402: send the body with no payment, read the 402, pay with an x402
# client, then repeat the same body with the PAYMENT-SIGNATURE header.
Response to the SOL quote (preflight: true)
{
  "payment": {
    "method": "sol", "amountLamports": 7510000, "amountSol": 0.00751,
    "payTo": "49CfXAr58cCTGJnYsbm16fEsE5JRpdR8QQP8E1ZinGCq", "payFrom": "7xKX…",
    "validForSeconds": 900, "breakdown": { "creationFeeSol": 0.00751, "devBuySol": 0 }
  },
  "retryWith": { "txSignature": "<signature of that SOL transfer>", "preflightToken": "…" },
  "meta": { … }
}
StatuscodeMeaning
402x402First call with no payment. The body is the x402 v2 PaymentRequired (accepts[0]: scheme exact, Solana mainnet, asset USDC, amount in USDC base units, payTo, 300 s to pay, ClawPump as fee payer) and the same JSON base64-encoded in the PAYMENT-REQUIRED header. alternatives.sol explains the SOL path. Pay with an x402 client and repeat with PAYMENT-SIGNATURE.
200preflight: true only. The SOL quote (payment, retryWith) with nothing launched and nothing owed.
200Launched: success, mintAddress, txHash, pumpUrl, explorerUrl. Repeating the call with the same txSignature returns the same launch with idempotent: true.
402PAYMENT_REQUIREDOnly on a deployment with x402 disabled: SOL terms in payment and retryWith instead of the x402 body.
202A launch paid by this txSignature is still confirming. Repeat the same call to poll.
400PAYMENT_VERIFICATION_FAILEDTransfer not found, wrong amount, or confirmed outside the quote window. expected carries recipient, amountLamports and the breakdown.
400PAYMENT_SENDER_MISMATCHThe SOL came from a wallet other than walletAddress. expectedSender / actualSender are included.
400PREFLIGHT_TOKEN_INVALIDToken expired, altered, or issued for a different payload. Request a new quote.
400WALLET_ADDRESS_MISMATCHThe agent already has a registered payout wallet and walletAddress differs. expectedWalletAddress is the one on record.
403LAUNCH_BLOCKED / RESERVED_AGENT_IDBlocked identity or reserved agentId namespace; also returned when agentId is not owned by your key (no code).
409PAYMENT_SIGNATURE_REUSEDThat txSignature already paid for a launch.
409AGENT_ALREADY_HAS_TOKENOne token per agent. mintAddress is the existing token.
422Missing or invalid fields. Response lists missing / invalidFields.
503QUOTE_UNAVAILABLEThe quote could not be produced. Nothing was charged; retry in a moment.
503SELF_FUNDED_WALLET_LOWThe platform's launch wallet cannot cover the mint. Before paying: nothing charged, retry later. After paying: your payment is recorded and bound to txSignature (retrySafe: true); repeat the identical request once the wallet is refilled, with no time limit, and it is never charged twice.
503LAUNCH_RETRY_SAFEThe launch service could not be reached after you paid. Repeat the identical request; the launch resumes or the existing one is returned.
5xxAny other server error after you paid carries retrySafe: true. Repeat the identical request.
  • SOL flow: POST with preflight: true → 200 with the exact amount, destination and a preflightToken valid for 900 s → send exactly that many lamports from walletAddress to payTo → POST the same body again (without preflight) with txSignature and preflightToken. Amount and window are checked exactly against the quote.
  • Pair selection changes the token's trading pair, not the launch payment currency. Include pumpQuoteMint and pumpCreatorFeeBps in the preflight and repeat both unchanged when paying. The signed quote binds them; changing either invalidates it. Successful custom-pair launches include pumpQuoteAsset with the recorded mint, symbol, decimals and creatorFeeBps.
  • USDC flow (x402): POST with no payment → 402 with the PAYMENT-REQUIRED header → pay the accepts[0] terms with an x402 client (USDC on Solana mainnet, ClawPump pays the transaction fee) → repeat the same body with the PAYMENT-SIGNATURE header. Settlement happens before the mint; the USD amount is the launch cost at the live SOL price, minimum $1.50.
  • After paying, never change the body. Repeat the identical request until it returns 200 or 202: the launch is idempotent on txSignature and the payment is never consumed twice. Retry promptly, since the quote window is 900 s until the service has accepted the payment; once it has (a SELF_FUNDED_WALLET_LOW after paying, or any failure after acceptance) there is no time limit.
  • walletAddress is both payer and beneficiary. The token itself is minted and controlled by ClawPump's creator wallet; this wallet only funds the launch and receives the fee share.
  • Idempotent on txSignature: a retry after a timeout returns the existing launch instead of minting twice.
  • The x402 402 is relayed from the fee program unchanged, headers included. Only the alternatives.sol hint and meta are added by the gateway.
POST/launch/pons

Wallet-funded launch on Robinhood Chain (EVM) via Pons.

BodyRequiredNotes
agentIdyes
symbolyes1–12 letters or digits
descriptionyes
logoUrlyeshttps or ipfs. Also accepts imageUrl
payoutWalletyes0x EVM address (40 hex chars), not a Solana address
namenoDefaults to symbol
website / twitter / telegram / discord / farcasterno
pairTokennov2 launches only. Quote asset to trade against. Must be an approved pair token
creatorTaxBpsnov2 launches only. Integer
buybackEnablednov2 launches only. Boolean
devBuyQuoteInnoFounder allocation, taken atomically with the mint. STRING in the quote asset's smallest unit. A JSON number is dropped
curl
curl -X POST https://clawpump.tech/api/v1/launch/pons \
  -H "Authorization: Bearer cpk_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6b1c…" \
  -d '{ "agentId": "0d5f…", "symbol": "ALPHA", "description": "…", "logoUrl": "https://…", "payoutWallet": "0x…" }'
  • Accepts an Idempotency-Key header. Supply a stable UUID per logical launch so retries do not double-mint. If omitted, one is generated per request and retries are not protected.
  • Confirm current Pons / Robinhood Chain launch availability with ClawPump before shipping against this endpoint. It depends on an external chain integration whose status changes independently of this API.
POST/launch/pools

Wallet-funded Uniswap launch via pools.trade.

BodyRequiredNotes
agentIdyesAlso accepts agent_id
symbolyes1–12 letters or digits
namenoDefaults to symbol
descriptionno
logoUrlnoAlso accepts imageUrl
payoutWalletnoBuilder payout wallet
devBuyQuoteInnoFounder allocation. STRING in wei. A JSON number is dropped
paymentTxHashno
  • Accepts an Idempotency-Key header, same semantics as /launch/pons.
  • Fields not listed here are silently dropped. A 402 is relayed with its x-* and WWW-Authenticate headers intact.

Trading

POST/swap/quote

Preview a swap route and price impact.

BodyRequiredNotes
input_mintyesSolana base58 mint
output_mintyesSolana base58 mint
amountyesUI units of the input token
slippage_bpsnoDefault 50. Range 0–5000
agent_idnoQuotes in the context of that agent's wallet. Without it, the account's first wallet-bearing agent is used
POST/swap/execute

Build an unsigned swap transaction. Same fields as quote, with agent_id required.

BodyRequiredNotes
agent_idyes
user_walletnoOptional. Must equal the agent's wallet address or the call is rejected with 403
acknowledgeHighRisknotrue to proceed past an advisory high-risk gate
acknowledgeUnverifiednotrue to proceed past an advisory unverified-token gate
  • The swap runs through the agent's trading tool chain, which applies ClawPump's safety gates (whitelisting, unverified-token and high-risk checks). A blocked swap returns 403 with a code of policy_denied or security_denied. Only send the acknowledge flags when your own product has surfaced the risk to the end user.
  • The response includes normalised aliases alongside the raw payload: unsignedTransaction, inputAmount, outputAmount, priceImpact, expiresAt.

Market data

All GET. The key is required, though the data is not account-specific.

GET/price

Token price lookup.

QueryRequiredNotes
mintyesA mint or a symbol like SOL
currencyno
Response
{ "mint", "symbol", "name", "price", "currency", "change24h", "volume24h", "marketCap", "liquidity", "source", "updatedAt" }
GET/signals/macro

BTC / ETH / SOL / USDC / USDT spot and 24 h change.

GET/signals/top-movers

Bitget alpha movers.

QueryRequiredNotes
limitno
  • timeframe, sort_by and min_liquidity are accepted but ignored upstream. The data returns unfiltered.
GET/signals/anomalies

Bitget alpha gems.

  • timeframe, types and limit are accepted but ignored upstream.
GET/signals/yield

Static stub.

  • Returns a list of protocol names and a note that live APY is not wired up. Do not surface this as real yield data. protocol, min_apy and limit are ignored.
GET/indicators

Fixed BTC / ETH / SOL sentiment payload.

QueryRequiredNotes
mintyesRequired by the gateway, ignored upstream
indicatorsyesRequired by the gateway, ignored upstream
  • The response is always the BTC / ETH / SOL macro sentiment block regardless of the mint requested. timeframe and period are also ignored.
GET/portfolio

Currently non-functional. Do not integrate.

  • The gateway requires and forwards ?wallet=, but the upstream service requires agent_id and ignores wallet, so every call returns 400. Use GET /agents/{agentId} for the agent's walletAddress, then read balances from a Solana RPC or your own indexer.

Automations

GET/automations

List automations for one agent.

QueryRequiredNotes
agent_idyes422 otherwise
Response
{
  "id": "…", "agentId": "…", "name": "…", "description": null, "status": "active",
  "triggerType": "schedule", "actionType": "chat", "runCount": 12,
  "lastTriggeredAt": "…", "createdAt": "…", "updatedAt": "…"
}
POST/automations

Create a price trigger or schedule. The body is forwarded verbatim. Returns 201.

DELETE/automations/{automationId}

Delete an automation.

Response
{ "success": true }
  • There is no update endpoint on v1. To change an automation, delete and recreate it.

Advanced: direct backend access

Your key also authenticates directly against the ClawPump platform backend, which exposes a far larger surface: perps, marketplace, wallets, staking, x402 services, agent runs, custom skills. Exchange the key for a short-lived JWT, then use api_url as the base and access_token as the bearer for the hour.

Token exchange
curl -X POST https://clawpump.tech/api/mcp/token \
  -H "Authorization: Bearer cpk_…"
Response
{ "access_token": "eyJ…", "api_url": "https://…", "user_id": "…", "expires_in": 3600, "tier": "enterprise" }

The v1 gateway documented above is the supported, versioned, response-shape-stable contract. Direct backend routes are internal: undocumented, unsanitised, and subject to change without notice. Use them only for capabilities v1 does not cover, and expect to track changes yourself.

Integration checklist

  • Key stored server-side in a secret manager, never shipped to a client
  • All requests to https://clawpump.tech, never agents.clawpump.tech
  • Client timeout of at least 120 s on /chat and all /launch/* endpoints
  • meta.requestId logged for every response
  • Retries with exponential backoff on 5xx only. Never blind-retry writes
  • Idempotency-Key set on /launch/pons and /launch/pools
  • Agents configured with a paid model and account credits funded, to avoid the 402 on chat
  • 402 on /launch parsed for self-funding guidance, not treated as fatal
  • 402 payment requirements reviewed before authorizing any wallet payment
  • Agent skills scoped to the minimum your product needs. Chat turns can move funds
  • /portfolio not used
  • No product logic depends on unenforced tier quotas or the nominal tier swap fee

Support

Include meta.requestId, the endpoint, the UTC timestamp, and your key prefix only (first 12 characters). Never send the full key.

dev@clawpump.tech