Install
openclaw skills install @plagtech/solana-batch-paymentsBatch send SOL, USDC, BONK, or any SPL token to up to 1,000 wallets in one request — plus Jupiter swap quotes, Helius portfolio lookups, and Pyth price feeds — via Spraay's x402 pay-per-call gateways. Non-custodial: the gateway returns unsigned transactions that YOUR wallet signs, so no private keys in env vars, no API keys, no accounts. Use when the user wants to airdrop tokens, do a mass payout, distribute community/creator rewards, pay a team or contributor list, batch send SOL or SPL tokens to many addresses, get a swap quote, check what tokens a wallet holds, or fetch Solana token prices. Pay per call with USDC on Solana via x402.
openclaw skills install @plagtech/solana-batch-paymentsSend SOL or any SPL token to up to 1,000 wallets in a single request, non-custodially, paid per-call via x402. No signup, no API key, no private key handed to anyone.
402 Payment Required → pay → retry with proof. Agents with any x402 client can use it immediately.| Base URL | What's there |
|---|---|
https://gateway-solana.spraay.app | Batch sends, quotes, tx status (this skill's core) |
https://gateway.spraay.app | Jupiter swaps, Helius assets, Pyth prices + 180 more x402 endpoints |
Discovery manifests: GET /.well-known/x402 on either gateway (free).
| Endpoint | Method | Price | Description |
|---|---|---|---|
/solana/batch-send-sol | POST | $0.01 | Build unsigned batch SOL transfer txs |
/solana/batch-send-token | POST | $0.01 | Build unsigned batch SPL token transfer txs (auto-creates recipient ATAs) |
/solana/quote | GET | $0.001 | Estimate network fees + tx count before committing |
/solana/status/:txid | GET | $0.001 | Confirmation status, slot, fee, explorer link |
/health | GET | Free | Liveness + network info |
/.well-known/x402 | GET | Free | Machine-readable manifest |
A 0.3% transfer fee (30 bps) is added as an instruction inside the batch — visible in the returned transactions before you sign. Nothing is hidden.
| Endpoint | Method | Price | Description |
|---|---|---|---|
/api/v1/solana/jupiter/quote | GET | $0.005 | Jupiter swap quote (any SPL pair) |
/api/v1/solana/jupiter/swap-tx | POST | $0.01 | Build unsigned Jupiter swap transaction |
/api/v1/solana/helius/assets-by-owner | GET | $0.003 | All tokens/NFTs a wallet holds (Helius DAS) |
/api/v1/solana/helius/asset | GET | $0.002 | Single asset lookup |
/api/v1/solana/pyth/price | GET | $0.005 | Pyth price feed, single asset |
/api/v1/solana/pyth/prices | GET | $0.008 | Pyth price feeds, batched |
/free/dex/trending | GET | Free | Trending tokens/pairs (filter chain=solana) |
/free/prices | GET | Free | USDC/ETH/SOL spot prices |
GET /solana/quote?recipients=250&token=BONK → tx count + network fees.POST /solana/batch-send-token with mint, recipients[], and sender (the payer public key). Handle the x402 402→pay→retry flow (see reference.md).transactions[] (base64, unsigned) + blockhash. Sign each with the sender keypair, submit to any RPC. Helper: scripts/sign-and-send.js.GET /solana/status/<signature> for each tx.curl -X POST https://gateway-solana.spraay.app/solana/batch-send-token \
-H "Content-Type: application/json" \
-H "X-PAYMENT: <base64 payment proof>" \
-d '{
"mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"sender": "<sender public key>",
"recipients": [
{ "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM", "amount": 1000 },
{ "address": "7S3P4HxJpyyigGzodYwHtCxZyUQe9JiBMHyLWP9SfKFJ", "amount": 500 }
]
}'
sender is required — it's the fee payer and source of funds for the unsigned txs. amount is human-readable units.
{
"success": true,
"custodial": false,
"recipients": 2,
"feeBps": 30,
"transactionCount": 1,
"transactions": ["<base64 unsigned tx>"],
"blockhash": "...",
"lastValidBlockHeight": 123456789,
"note": "Sign each transaction with the sender wallet and submit."
}
402 Payment Required with USDC payment instructions (amount, treasury address, network).X-PAYMENT header.Facilitators: devnet https://x402.org/facilitator, mainnet https://facilitator.payai.network. Any x402 client library handles this automatically — see reference.md for a manual walkthrough.
Prefer tools over raw HTTP? The gateway ships an MCP server:
npx -y spraay-x402-mcp # main gateway, 183 tools incl. all Solana endpoints
Or from source: node mcp/spraay-solana-mcp.js (repo) — exposes spraay_solana_batch_send_sol, spraay_solana_batch_send_token, spraay_solana_quote, spraay_solana_tx_status.
/solana/quote first for batches > 50 recipients and show the user the cost before building.lastValidBlockHeight passes, rebuild (re-call the endpoint)./health for the active network.See reference.md for full request/response schemas and error codes.