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 URL | https://clawpump.tech/api/v1 |
| Auth | Authorization: Bearer cpk_… on every request |
| Content type | application/json |
| Transport | HTTPS only |
curl -H "Authorization: Bearer cpk_YOUR_KEY" \
https://clawpump.tech/api/v1/skills{
"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%.
# 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.
| Condition | Response |
|---|---|
| Valid, active, linked | 200 |
| Unknown / deactivated key | 401 {"error":"Invalid or deactivated API key"} |
| Malformed (not cpk_) | 401 {"error":"Invalid API key format. Keys start with cpk_"} |
| Missing header | 401 {"error":"Missing or invalid Authorization header. Use: Bearer <api_key>"} |
| Key not linked to an account | 403 {"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
| Tier | Monthly call allowance | Nominal swap fee | Token launch payment |
|---|---|---|---|
| free | 1,000 | 85 bps | Wallet paid |
| builder | 50,000 | 50 bps | Wallet paid |
| scale | 500,000 | 30 bps | Wallet paid |
| enterprise | 10,000,000 | 10 bps | Wallet 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.
{ "…": "…", "meta": { "timestamp": "ISO-8601", "requestId": "uuid" } }{ "error": "Human-readable message", "meta": { "timestamp": "…", "requestId": "…" } }| Status | Meaning | Action |
|---|---|---|
| 400 | Malformed JSON body | Fix the payload |
| 401 | Missing / invalid / deactivated key | Check the header and the domain |
| 402 | Payment required: SOL terms on /launch/self-funded, self-funding handoff on /launch, or free-turn quota exhausted on chat | See Chat and Token launches |
| 403 | Key does not own the referenced agent, or key not linked | Use an agent id owned by your account |
| 404 | Resource not found | |
| 422 | Missing or invalid parameters | Response includes missing / invalidFields where known |
| 429 | Request rate limit reached | Back off and retry |
| 500 | Internal error | Retry with backoff |
| 502 | Upstream service unavailable | Retry 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
| Method | Path | Description |
|---|---|---|
| GET | /agents | List your agents. |
| POST | /agents | Create 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}/start | Start an agent. No body. Sets status to running. |
| POST | /agents/{agentId}/stop | Stop an agent. No body. Sets status to stopped. |
| GET | /skills | List the public skill catalogue. |
| POST | /agents/{agentId}/chat | Send a message and run one full agent turn. |
| GET | /agents/{agentId}/messages | Read chat history. |
| GET | /pump-pairs | Discover the live Pump.fun creation pairs and custom creator-fee range. |
| POST | /launch | Paid Pump.fun launch with a SOL or custom pair. Use selfFunded: true to pay from the agent wallet. |
| GET | /launch/self-funded | Cost discovery for self-funded launches, priced for the selected pair. |
| 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. |
| POST | /launch/pons | Wallet-funded launch on Robinhood Chain (EVM) via Pons. |
| POST | /launch/pools | Wallet-funded Uniswap launch via pools.trade. |
| POST | /swap/quote | Preview a swap route and price impact. |
| POST | /swap/execute | Build an unsigned swap transaction. Same fields as quote, with agent_id required. |
| GET | /price | Token price lookup. |
| GET | /tokens/search | Search tokens. Jupiter plus the curated list, merged, deduped, verified-first. |
| GET | /signals/macro | BTC / ETH / SOL / USDC / USDT spot and 24 h change. |
| GET | /signals/top-movers | Bitget alpha movers. |
| GET | /signals/anomalies | Bitget alpha gems. |
| GET | /signals/yield | Static stub. |
| GET | /indicators | Fixed BTC / ETH / SOL sentiment payload. |
| GET | /portfolio | Currently non-functional. Do not integrate. |
| GET | /automations | List automations for one agent. |
| POST | /automations | Create 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.
/agentsList your agents.
{
"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": "…" }
}/agentsCreate an agent. Returns 201.
| Body | Required | Notes |
|---|---|---|
| name | yes | |
| model | no | e.g. moonshotai/kimi-k2.5 |
| persona | no | |
| system_prompt | no | |
| temperature | no | 0–1 |
| skills | no | Array of skill slugs. Omit to use strategy instead. |
| strategy | no | Preset bundle applied when skills is omitted: monitor-exit (base only), momentum (trading, sniper), defi-yield (trading), macro-guard (trading), sniper (trading, sniper). Omitted: trading. |
{
"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.
/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.
/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.
/agents/{agentId}Delete an agent.
{ "success": true, "meta": { … } }/agents/{agentId}/startStart an agent. No body. Sets status to running.
{ "id": "0d5f…", "status": "running", "meta": { … } }/agents/{agentId}/stopStop an agent. No body. Sets status to stopped.
{ "id": "0d5f…", "status": "stopped", "meta": { … } }/skillsList the public skill catalogue.
{ "skills": [{ "slug": "trading", "name": "Trading", "description": "…", "alwaysOn": false }], "meta": { … } }Chat
/agents/{agentId}/chatSend a message and run one full agent turn.
| Body | Required | Notes |
|---|---|---|
| message | yes | |
| model | no | Override. Defaults to the agent's stored model. |
| temperature | no | Override. Defaults to the agent's stored value. |
{ "message": "What is SOL doing today?", "model": "moonshotai/kimi-k2.5", "temperature": 0.7 }{
"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.
/agents/{agentId}/messagesRead chat history.
| Query | Required | Notes |
|---|---|---|
| limit | no | Default 20 |
| before | no | Cursor for pagination |
{
"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.
/pump-pairsDiscover the live Pump.fun creation pairs and custom creator-fee range.
curl -H "Authorization: Bearer cpk_…" https://clawpump.tech/api/v1/pump-pairs{
"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.
/launchPaid Pump.fun launch with a SOL or custom pair. Use selfFunded: true to pay from the agent wallet.
| Body | Required | Notes |
|---|---|---|
| agentId | yes | Agent owned by your key |
| symbol | yes | |
| description | yes | |
| name | no | Defaults to symbol |
| imageUrl | no | https URL of the token image. Also accepts image_url. Required unless the agent already has an avatar, which is used as the fallback |
| payoutWallet | no | Solana 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 |
| no | Also accepts twitterUrl, xHandle, xLink | |
| selfFunded | no | true explicitly authorizes launch payment from the agent wallet |
| pumpQuoteMint | no | Quote asset mint from GET /pump-pairs. Omit for the standard SOL pair |
| pumpCreatorFeeBps | no | Custom pairs only: integer 100–300 (1%–3%), default 100. 250 means 2.5% |
| initialBuySol / devBuySol | no | Dev buy in SOL. Use 0 for no initial purchase |
| metaplexGenesis | no | true uses a Metaplex Genesis bonding curve instead of pump.fun |
| metaplexFirstBuyAmountSol | no |
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 }'{
"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".
/launch/self-fundedCost discovery for self-funded launches, priced for the selected pair.
| Query | Required | Notes |
|---|---|---|
| quoteMint | no | Optional mint from GET /pump-pairs. Omit for the standard SOL pair. Use the same mint as pumpQuoteMint in your launch body |
curl -H "Authorization: Bearer cpk_…" "https://clawpump.tech/api/v1/launch/self-funded?quoteMint=<mint from GET /pump-pairs>"{
"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.
/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.
| Body | Required | Notes |
|---|---|---|
| name | yes | 1–32 characters |
| symbol | yes | 1–10 characters |
| description | yes | 20–500 characters |
| imageUrl | yes | https URL of the token image |
| agentId | yes | Agent owned by your key |
| agentName | yes | |
| pumpQuoteMint | no | Quote asset mint from GET /pump-pairs. Omit for the standard SOL pair |
| pumpCreatorFeeBps | no | Custom pairs only: integer 100–300 (1%–3%), default 100. Preserve this value on the paid retry |
| walletAddress | yes | Solana 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 |
| preflight | no | true returns the SOL quote as a 200 without launching: payment.amountLamports, payment.payTo and retryWith.preflightToken |
| txSignature | no | Signature of the SOL transfer that pays the quote. Omit on the first call |
| preflightToken | no | From the SOL quote. Send it back with txSignature so the payment is checked against the exact quote you were given |
| devBuySol | no | Default 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 |
| devBuyAmountUsd | no | Standard SOL pairs only: additional post-launch buy in USD, $0.50–$500. Included in the quoted amount. Use at most one of devBuySol / devBuyAmountUsd |
| devBuySlippageBps | no | Default 500 |
| buybackBps | no | |
| website / twitter / telegram | no |
# 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.{
"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": { … }
}| Status | code | Meaning |
|---|---|---|
| 402 | x402 | First 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. |
| 200 | — | preflight: true only. The SOL quote (payment, retryWith) with nothing launched and nothing owed. |
| 200 | — | Launched: success, mintAddress, txHash, pumpUrl, explorerUrl. Repeating the call with the same txSignature returns the same launch with idempotent: true. |
| 402 | PAYMENT_REQUIRED | Only on a deployment with x402 disabled: SOL terms in payment and retryWith instead of the x402 body. |
| 202 | — | A launch paid by this txSignature is still confirming. Repeat the same call to poll. |
| 400 | PAYMENT_VERIFICATION_FAILED | Transfer not found, wrong amount, or confirmed outside the quote window. expected carries recipient, amountLamports and the breakdown. |
| 400 | PAYMENT_SENDER_MISMATCH | The SOL came from a wallet other than walletAddress. expectedSender / actualSender are included. |
| 400 | PREFLIGHT_TOKEN_INVALID | Token expired, altered, or issued for a different payload. Request a new quote. |
| 400 | WALLET_ADDRESS_MISMATCH | The agent already has a registered payout wallet and walletAddress differs. expectedWalletAddress is the one on record. |
| 403 | LAUNCH_BLOCKED / RESERVED_AGENT_ID | Blocked identity or reserved agentId namespace; also returned when agentId is not owned by your key (no code). |
| 409 | PAYMENT_SIGNATURE_REUSED | That txSignature already paid for a launch. |
| 409 | AGENT_ALREADY_HAS_TOKEN | One token per agent. mintAddress is the existing token. |
| 422 | — | Missing or invalid fields. Response lists missing / invalidFields. |
| 503 | QUOTE_UNAVAILABLE | The quote could not be produced. Nothing was charged; retry in a moment. |
| 503 | SELF_FUNDED_WALLET_LOW | The 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. |
| 503 | LAUNCH_RETRY_SAFE | The launch service could not be reached after you paid. Repeat the identical request; the launch resumes or the existing one is returned. |
| 5xx | — | Any 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.
/launch/ponsWallet-funded launch on Robinhood Chain (EVM) via Pons.
| Body | Required | Notes |
|---|---|---|
| agentId | yes | |
| symbol | yes | 1–12 letters or digits |
| description | yes | |
| logoUrl | yes | https or ipfs. Also accepts imageUrl |
| payoutWallet | yes | 0x EVM address (40 hex chars), not a Solana address |
| name | no | Defaults to symbol |
| website / twitter / telegram / discord / farcaster | no | |
| pairToken | no | v2 launches only. Quote asset to trade against. Must be an approved pair token |
| creatorTaxBps | no | v2 launches only. Integer |
| buybackEnabled | no | v2 launches only. Boolean |
| devBuyQuoteIn | no | Founder allocation, taken atomically with the mint. STRING in the quote asset's smallest unit. A JSON number is dropped |
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.
/launch/poolsWallet-funded Uniswap launch via pools.trade.
| Body | Required | Notes |
|---|---|---|
| agentId | yes | Also accepts agent_id |
| symbol | yes | 1–12 letters or digits |
| name | no | Defaults to symbol |
| description | no | |
| logoUrl | no | Also accepts imageUrl |
| payoutWallet | no | Builder payout wallet |
| devBuyQuoteIn | no | Founder allocation. STRING in wei. A JSON number is dropped |
| paymentTxHash | no |
- 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
/swap/quotePreview a swap route and price impact.
| Body | Required | Notes |
|---|---|---|
| input_mint | yes | Solana base58 mint |
| output_mint | yes | Solana base58 mint |
| amount | yes | UI units of the input token |
| slippage_bps | no | Default 50. Range 0–5000 |
| agent_id | no | Quotes in the context of that agent's wallet. Without it, the account's first wallet-bearing agent is used |
/swap/executeBuild an unsigned swap transaction. Same fields as quote, with agent_id required.
| Body | Required | Notes |
|---|---|---|
| agent_id | yes | |
| user_wallet | no | Optional. Must equal the agent's wallet address or the call is rejected with 403 |
| acknowledgeHighRisk | no | true to proceed past an advisory high-risk gate |
| acknowledgeUnverified | no | true 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.
/priceToken price lookup.
| Query | Required | Notes |
|---|---|---|
| mint | yes | A mint or a symbol like SOL |
| currency | no |
{ "mint", "symbol", "name", "price", "currency", "change24h", "volume24h", "marketCap", "liquidity", "source", "updatedAt" }/tokens/searchSearch tokens. Jupiter plus the curated list, merged, deduped, verified-first.
| Query | Required | Notes |
|---|---|---|
| query | yes | |
| limit | no | 1–20. Default 10 |
{ "query", "recommended", "tokens": [], "sources", "droppedUnverified" }/signals/macroBTC / ETH / SOL / USDC / USDT spot and 24 h change.
/signals/top-moversBitget alpha movers.
| Query | Required | Notes |
|---|---|---|
| limit | no |
- timeframe, sort_by and min_liquidity are accepted but ignored upstream. The data returns unfiltered.
/signals/anomaliesBitget alpha gems.
- timeframe, types and limit are accepted but ignored upstream.
/signals/yieldStatic 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.
/indicatorsFixed BTC / ETH / SOL sentiment payload.
| Query | Required | Notes |
|---|---|---|
| mint | yes | Required by the gateway, ignored upstream |
| indicators | yes | Required 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.
/portfolioCurrently 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
/automationsList automations for one agent.
| Query | Required | Notes |
|---|---|---|
| agent_id | yes | 422 otherwise |
{
"id": "…", "agentId": "…", "name": "…", "description": null, "status": "active",
"triggerType": "schedule", "actionType": "chat", "runCount": 12,
"lastTriggeredAt": "…", "createdAt": "…", "updatedAt": "…"
}/automationsCreate a price trigger or schedule. The body is forwarded verbatim. Returns 201.
/automations/{automationId}Delete an automation.
{ "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.
curl -X POST https://clawpump.tech/api/mcp/token \
-H "Authorization: Bearer cpk_…"{ "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.