solana-bundler-sniper-volume-bot
Manage Solana wallets, launch tokens, run coordinated buys, volume bots, and wallet operations via gank.dev trading terminal API.
技能说明
gank — solana trading terminal for agents
gank is a multi-wallet solana trading terminal. launch tokens on pump.fun, run swarm buys, volume bots, copy trades, manage wallets. we literally have the most toxic platform atm and now your agents can take full advantage of it lol.
base url: https://gank.dev/api/v2
auth: Authorization: Bearer <GANK_API_KEY>
get your key at gank.dev > settings > api keys. keys start with pb_.
errors always come back as { "success": false, "error": "..." }.
wallet types
gank uses typed wallets. each type is locked to its module — don't mix them up.
| type | what it's for |
|---|---|
dev | launching tokens (pump.fun creator wallet) |
regular | buying/selling, transfers |
bundle | bundle buys at launch |
snipe | sniping new launches |
swarm | coordinated multi-wallet buys |
volume | volume bot |
pug | privacy protocol — clean funds via bnb/eth swap |
wallets
list your wallets
GET /wallets/user
returns everything grouped by type.
{
"dev": [{ "id": 1, "wallet_address": "...", "label": "main dev" }],
"regular": [...],
"swarm": [...],
"volume": [...]
}
wallet balance
GET /wallets/{id}/balance
batch balances
POST /wallets/balances
{ "addresses": ["addr1...", "addr2..."] }
positions (all token holdings)
GET /user/positions
search tokens
GET /search?q=pepe&limit=10
launching a token
three steps: reserve mint → upload image → launch.
1. reserve a vanity mint (optional but worth it)
POST /launch/reserve-mint
gives you a ...pump address upfront. the keypair field is the mint keypair (token contract address keypair, not a wallet private key), pass it straight to /launch as reserved_mint_keypair. don't store it beyond that.
{ "success": true, "address": "AbcD...pump", "keypair": "base58..." }
2. upload image + metadata to ipfs
POST /ipfs/upload
Content-Type: multipart/form-data
fields: file, name, symbol, description, twitter, telegram, website
{ "success": true, "metadata_uri": "https://ipfs.io/ipfs/Qm..." }
3. launch
POST /launch
{
"token_name": "my token",
"token_ticker": "MTK",
"metadata_uri": "https://ipfs.io/ipfs/Qm...",
"dev_wallet_address": "DevWallet...",
"dev_buy_sol": 0.5,
"jito_tip": 0.0003,
"reserved_mint_keypair": "base58_from_step1",
"regular_wallets": [
{ "wallet_address": "Wallet1...", "amount": 0.1 },
{ "wallet_address": "Wallet2...", "amount": 0.2 }
],
"bundle_groups": [
{
"block_target": 1,
"wallets": [{ "wallet_address": "BundleWallet1...", "amount": 0.05 }]
}
],
"sniper_wallets": [
{ "wallet_address": "SnipeWallet1...", "amount": 0.1, "block_target": 2 }
]
}
{ "success": true, "launch_id": "uuid", "token_mint": "...", "tx_signature": "..." }
check launch status
GET /launch/{launch_id}
launch history
GET /launch/history?limit=20
save a launch config/preset
PUT /launch/configs
{ "name": "my template", "config": { ...launch_params... } }
buy & sell
buy
POST /phases/regular/buy
{
"wallet_address": "RegularWallet...",
"token_mint": "TokenMint...",
"amount_sol": 0.1,
"slippage_bps": 500
}
sell
POST /phases/regular/sell
{
"wallet_address": "RegularWallet...",
"token_mint": "TokenMint...",
"sell_percentage": 100,
"slippage_bps": 500
}
swarm
swarm = hit a token from multiple wallets at the same time. useful for coordinated entries.
swarm buy
POST /phases/swarm/buy
{
"token_mint": "TokenMint...",
"wallets": [
{ "wallet_address": "SwarmWallet1...", "amount_sol": 0.05 },
{ "wallet_address": "SwarmWallet2...", "amount_sol": 0.1 }
],
"slippage_bps": 500
}
swarm sell
POST /phases/swarm/sell
{
"token_mint": "TokenMint...",
"wallets": ["SwarmWallet1...", "SwarmWallet2..."],
"sell_percentage": 100,
"slippage_bps": 500
}
consolidate sol back to one wallet
POST /phases/swarm/consolidate
{ "source_wallets": ["..."], "destination_wallet": "MainWallet..." }
recover (emergency drain — sells everything, sweeps sol)
POST /phases/swarm/recover
{ "source_wallets": ["..."], "destination_wallet": "MainWallet..." }
volume bot
start
POST /phases/volume/start
{
"token_mint": "TokenMint...",
"wallet_addresses": ["VolumeWallet1...", "VolumeWallet2..."],
"sol_per_trade": 0.001,
"duration_minutes": 60,
"intensity": "medium"
}
intensity: "low" | "medium" | "high"
returns { "success": true, "session_id": "uuid" }
stop
POST /phases/volume/stop
{ "session_id": "uuid" }
wallet ops
transfer sol
POST /wallets/transfer
{ "from_wallet": "...", "to_wallet": "...", "amount_sol": 1.0 }
split sol (1 → many, max 50 targets)
POST /wallets/split
{
"source_wallet": "...",
"targets": [
{ "address": "Wallet1...", "amount_sol": 0.1 },
{ "address": "Wallet2...", "amount_sol": 0.2 }
]
}
vamp all (drain wallets — sells tokens, closes accounts, sweeps sol)
POST /wallets/vamp-all
{ "source_wallets": ["Wallet1...", "Wallet2..."], "destination_wallet": "MainWallet..." }
clean funds (privacy swap — sol→bnb→sol or sol→eth→sol, ~5 min)
two routes available: bnb (BSC, default) or eth (Arbitrum). source and destination must match 1:1 — use fresh destination wallets.
get a quote first:
POST /wallets/clean-funds/quote
{ "amount_sol": 1.0, "route": "bnb" }
initiate:
POST /wallets/clean-funds
{ "source_wallets": ["Wallet1..."], "destination_wallets": ["FreshWallet1..."], "route": "bnb" }
route: "bnb" (default) | "eth" — xmr is not available.
check status:
GET /wallets/clean-funds/status
sniping at launch
sniping is only available at launch time via sniper_wallets in the /launch payload — see the launch section above. standalone auto-snipe is not available.
market data
token info (price, mcap, volume, holders, bonding curve %)
GET /token/{mint}
ohlcv chart
GET /market/chart/{mint}?limit=500&timeframe=5
timeframe is in minutes.
holders
GET /market/holders/{mint}?limit=20
recent trades
GET /market/trades/{mint}?limit=30
referrals & stats
your stats (points, level, exp, trades, volume)
GET /auth/user-stats
referral stats (tier, l1/l2/l3 counts, earnings, claimable sol)
GET /user/referrals
claim earnings (pays to your payout wallet)
POST /user/referrals/claim
leaderboard
GET /user/leaderboard/points?limit=50
GET /user/leaderboard/referrals?limit=50
fee preferences
GET /fees/preferences
POST /fees/preferences
{
"fee_mode": "manual",
"priority_fee_max_sol": 0.001,
"jito_tip_max_sol": 0.0005
}
fee_mode: "auto" | "manual"
how to use this
launching a token:
reserve mint → upload image to ipfs → POST /launch → poll GET /launch/{id}
coordinated buy:
check balances → POST /phases/swarm/buy → GET /user/positions
recovering funds:
POST /wallets/vamp-all (sells everything + sweeps sol)
or
POST /wallets/clean-funds (privacy swap via bnb/eth, ~5 min)
notes
- api keys start with
pb_— don't log them, don't put them in prompts - wallet private keys are encrypted server-side, the api never gives them back
reserve-mintreturns a mint keypair (the token's contract address keypair, not a wallet key), pass it to/launchasreserved_mint_keypairand discard after use- sol amounts are in sol, not lamports
- slippage is in basis points — 500 = 5%
- sniping only works at launch time via
sniper_walletsin/launch— no standalone auto-snipe - clean funds routes:
bnb(BSC) oreth(Arbitrum) — xmr is disabled - the platform fee wallet is protected, you can't accidentally send to it
config
~/.openclaw/openclaw.json:
{
"skills": {
"entries": {
"gank": {
"enabled": true,
"apiKey": "pb_your_key_here"
}
}
}
}
or just set GANK_API_KEY in env.
gank.dev · dm @pissdart on x or tg if something's broken
如何使用「solana-bundler-sniper-volume-bot」?
- 打开小龙虾AI(Web 或 iOS App)
- 点击上方「立即使用」按钮,或在对话框中输入任务描述
- 小龙虾AI 会自动匹配并调用「solana-bundler-sniper-volume-bot」技能完成任务
- 结果即时呈现,支持继续对话优化