Skip to main content

Actions

Actions let you combine multiple operations — like buy, sell, claimCashback, burn, and more — into a single transaction.

Great for increasing token volume, making multiple sales to clean up an account, and other strategies.

Endpoint

POST https://api.pumpapi.io

Basic Structure

{
"actions": [
{
"privateKey": "base58_private_key",
"action": "buy",
"mint": "token_address",
"amount": 0.1,
"denominatedInQuote": True,
"slippage": 99,
"priorityFee": 0.00002
},
{
"privateKey": "base58_private_key",
"action": "sell",
"mint": "token_address",
"amount": "100%",
"denominatedInQuote": True,
"slippage": 99,
"priorityFee": 0.00002
}
]
}

Each object in actions follows the same fields as the Trade API.


Priority Fee

priorityFee accumulates across actions — because each action adds complexity to the transaction. A transaction with two swaps is more complex than with one, so it requires a higher fee to land reliably.

Global Priority Fee

If you want a single priorityFee for the whole transaction, set it above the actions block. Per-action priorityFee values will be ignored.

{
"priorityFee": 0.00002,
"actions": [
{ "action": "buy", ... },
{ "action": "sell", ... }
]
}

Multiple Wallets

You can use different wallets for different actions. Just set privateKey inside each action.

You can also change the transaction signer (the wallet that pays the fee) by setting privateKey at the top level:

{
"privateKey": "base58_fee_payer_key",
"actions": [
{ "privateKey": "wallet_a_key", "action": "buy", ... },
{ "privateKey": "wallet_b_key", "action": "sell", ... }
]
}

Solana Transaction Limits

warning

Solana has a 1232-byte limit per transaction.

Transaction size grows when actions involve different AMMs, because each AMM requires loading additional accounts.

ScenarioHow many swaps fit
Same AMM (e.g. all Pump.fun)~4–5 swaps
Mixed AMMs~2

There's also a CPI limit of 49. A typical swap uses ~10 CPIs, so you'll hit this limit around 4–5 swaps even on a single AMM like Pump.fun.


Actions vs. Jito Bundles

ActionsJito Bundles
What it doesCombines multiple operations into 1 transactionCombines multiple transactions into 1 bundle
Use caseMulti-step logic in one atomic txAtomic ordering of separate txs

Local Transactions

Actions also support local (unsigned) transactions — just use publicKey instead of privateKey, and sign + send the transaction yourself. See the Trade API page for the local logic.


Code Examples

import requests

url = "https://api.pumpapi.io"

data = {
"actions": [
{
"privateKey": "base58_private_key",
"action": "buy",
"mint": "token_address",
"amount": 0.1,
"denominatedInQuote": True,
"slippage": 99,
"priorityFee": 0.00002,
},
{
"privateKey": "base58_private_key",
"action": "sell",
"mint": "token_address",
"amount": "100%",
"denominatedInQuote": True,
"slippage": 99,
"priorityFee": 0.00002,
}
]
}

response = requests.post(url, json=data)
print(response.json())

Need help? Join our Telegram group.