API Reference
Integrate Solana Volume Bot into your applications. Automate volume generation for SPL tokens across Pump.fun, Raydium, Jupiter, and all major Solana DEXs with our powerful REST API.
Getting Started
Base URL
Content Type
All requests and responses use JSON format:
Response Format
All API responses follow this structure:
{ "success": true, "data": { ... }, "message": "Operation completed successfully" }
Authentication
All API requests require authentication using an API key. Include your API key in the Authorization header of every request:
Getting Your API Key: Connect your Solana wallet on the main page and navigate to your dashboard. Your API key will be generated automatically and displayed in the API section.
Example Request
curl -X POST https://api.solanavolumebot.org/v1/campaigns \ -H "Authorization: Bearer YOUR_API_KEY_HERE" \ -H "Content-Type: application/json" \ -d '{"token_address": "..."}'
Rate Limits
Rate limit information is included in response headers:
API Endpoints
/campaigns
Request Body
{ "token_address": "string", // SPL token contract address "volume_target": 500, // Target volume in SOL (10-1000) "makers_count": 250, // Number of wallets (25-10000) "duration": 60, // Duration in minutes (5-720) "min_sol": 0.1, // Min SOL per transaction "max_sol": 2.0, // Max SOL per transaction "buy_upper_amount": 75, // Buy upper % (50-100) "buy_lower_amount": 25, // Buy lower % (10-50) "sell_upper_amount": 75, // Sell upper % (50-100) "sell_lower_amount": 25, // Sell lower % (10-50) "comment_percentage": 15, // Comment frequency % (0-50) "smart_distribution": true, // Enable smart wallet distribution "anti_whale": true, // Enable anti-whale protection "liquidity_optimization": true // Enable liquidity optimization }
Response (200 OK)
{ "success": true, "data": { "campaign_id": "cmp_7x9k2m4n8p1q", "status": "pending_payment", "token_address": "TokenAddress...", "token_name": "My Token", "token_symbol": "MTK", "volume_target": 500, "makers_count": 250, "duration": 60, "total_cost": 0.1018, "payment_address": "JDNLeVy2AUv8uRm7Ajr31gpCVWuyXhuoqV1brEjnqcA5", "created_at": "2025-01-15T10:30:00Z", "expires_at": "2025-01-15T10:45:00Z" }, "message": "Campaign created. Send payment to start execution." }
/campaigns/:id
Response (200 OK)
{ "success": true, "data": { "campaign_id": "cmp_7x9k2m4n8p1q", "status": "active", "token_address": "TokenAddress...", "token_name": "My Token", "token_symbol": "MTK", "volume_target": 500, "volume_generated": 287.45, "progress_percentage": 57.49, "makers_count": 250, "wallets_created": 250, "transactions_executed": 1847, "holders_added": 183, "duration": 60, "elapsed_minutes": 34, "started_at": "2025-01-15T10:30:00Z", "estimated_completion": "2025-01-15T11:30:00Z", "dex_distribution": { "pump_fun": 42.3, "raydium": 31.8, "jupiter": 15.6, "orca": 10.3 } }, "message": "Campaign retrieved successfully" }
/campaigns
Query Parameters
Response (200 OK)
{ "success": true, "data": { "campaigns": [ { "campaign_id": "cmp_7x9k2m4n8p1q", "status": "active", "token_symbol": "MTK", "volume_target": 500, "volume_generated": 287.45, "progress_percentage": 57.49, "started_at": "2025-01-15T10:30:00Z" }, { "campaign_id": "cmp_3a5b7c9d1e2f", "status": "completed", "token_symbol": "ABC", "volume_target": 250, "volume_generated": 250.12, "progress_percentage": 100, "started_at": "2025-01-14T15:20:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 47, "pages": 3 } }, "message": "Campaigns retrieved successfully" }
/campaigns/:id/stop
Response (200 OK)
{ "success": true, "data": { "campaign_id": "cmp_7x9k2m4n8p1q", "status": "stopped", "volume_generated": 287.45, "transactions_executed": 1847, "stopped_at": "2025-01-15T11:04:00Z" }, "message": "Campaign stopped successfully" }
/statistics
Response (200 OK)
{ "success": true, "data": { "total_campaigns": 47, "active_campaigns": 3, "completed_campaigns": 42, "stopped_campaigns": 2, "total_volume_generated": 18456.78, "total_transactions": 124589, "total_wallets_created": 8750, "total_holders_added": 6234, "average_success_rate": 98.7, "total_spent": 4.2345, "dex_usage": { "pump_fun": 38.5, "raydium": 29.2, "jupiter": 18.7, "orca": 8.9, "meteora": 4.7 } }, "message": "Statistics retrieved successfully" }
/tokens/validate
Request Body
{ "token_address": "string" }
Response (200 OK)
{ "success": true, "data": { "valid": true, "token_address": "TokenAddress...", "name": "My Token", "symbol": "MTK", "decimals": 9, "supply": "1000000000", "price_usd": 0.00045, "liquidity_usd": 125000, "volume_24h": 45678.90, "holders": 1247, "dex_availability": { "pump_fun": true, "raydium": true, "jupiter": true, "orca": false, "meteora": false } }, "message": "Token validated successfully" }
/campaigns/:id/payment
Response (200 OK)
{ "success": true, "data": { "campaign_id": "cmp_7x9k2m4n8p1q", "payment_status": "confirmed", "payment_address": "JDNLeVy2AUv8uRm7Ajr31gpCVWuyXhuoqV1brEjnqcA5", "amount_required": 0.1018, "amount_received": 0.1018, "transaction_signature": "5x7y9z...", "confirmed_at": "2025-01-15T10:32:00Z" }, "message": "Payment confirmed" }
Webhooks
Configure webhook URLs in your dashboard to receive real-time notifications about campaign events. Webhooks are sent as POST requests with JSON payloads.
Available Events
campaign.created
Triggered when a new campaign is created and awaiting payment
campaign.payment_confirmed
Triggered when payment is confirmed and campaign is starting
campaign.started
Triggered when campaign execution begins
campaign.progress
Triggered every 10% progress milestone (10%, 20%, 30%, etc.)
campaign.completed
Triggered when campaign reaches 100% of target volume
campaign.stopped
Triggered when campaign is manually stopped
campaign.error
Triggered when an error occurs during execution
Webhook Payload Example
{ "event": "campaign.progress", "timestamp": "2025-01-15T10:45:00Z", "data": { "campaign_id": "cmp_7x9k2m4n8p1q", "status": "active", "token_symbol": "MTK", "volume_target": 500, "volume_generated": 250.0, "progress_percentage": 50, "transactions_executed": 1234 } }
Security: All webhook requests include an X-Webhook-Signature header containing an HMAC SHA-256 signature. Verify this signature using your webhook secret to ensure authenticity.
Error Codes
Bad Request
Invalid request parameters or malformed JSON. Check your request body and try again.
Unauthorized
Missing or invalid API key. Ensure your Authorization header is correct.
Forbidden
Insufficient permissions or account suspended. Contact support if this persists.
Not Found
Campaign or resource not found. Verify the campaign ID exists.
Unprocessable Entity
Request validation failed. Check that all parameters meet the required constraints.
Too Many Requests
Rate limit exceeded. Wait before making additional requests.
Internal Server Error
Something went wrong on our end. Try again or contact support if it persists.
Service Unavailable
Solana Volume Bot is temporarily unavailable. Please try again in a few moments.
Error Response Format
{ "success": false, "error": { "code": "INVALID_TOKEN_ADDRESS", "message": "The provided token address is not a valid SPL token", "details": { "field": "token_address", "value": "invalid_address" } } }
Code Examples
const API_KEY = 'your_api_key_here'; const BASE_URL = 'https://api.solanavolumebot.org/v1'; async function createCampaign() { const response = await fetch(`${BASE_URL}/campaigns`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ token_address: 'YourSPLTokenAddress...', volume_target: 500, makers_count: 250, duration: 60, min_sol: 0.1, max_sol: 2.0, buy_upper_amount: 75, buy_lower_amount: 25, sell_upper_amount: 75, sell_lower_amount: 25, comment_percentage: 15, smart_distribution: true, anti_whale: true, liquidity_optimization: true }) }); const data = await response.json(); if (data.success) { console.log('Campaign created:', data.data.campaign_id); console.log('Payment address:', data.data.payment_address); console.log('Total cost:', data.data.total_cost, 'SOL'); } else { console.error('Error:', data.error.message); } } createCampaign();
import requests import time API_KEY = 'your_api_key_here' BASE_URL = 'https://api.solanavolumebot.org/v1' CAMPAIGN_ID = 'cmp_7x9k2m4n8p1q' headers = { 'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json' } def get_campaign_status(campaign_id): response = requests.get( f'{BASE_URL}/campaigns/{campaign_id}', headers=headers ) return response.json() def monitor_campaign(campaign_id, interval=30): """Monitor campaign progress every 30 seconds""" while True: data = get_campaign_status(campaign_id) if data['success']: campaign = data['data'] status = campaign['status'] progress = campaign['progress_percentage'] volume = campaign['volume_generated'] print(f"Status: {status} | Progress: {progress:.2f}% | Volume: {volume} SOL") if status in ['completed', 'stopped']: print(f"Campaign {status}!") break else: print(f"Error: {data['error']['message']}") break time.sleep(interval) monitor_campaign(CAMPAIGN_ID)
curl -X POST https://api.solanavolumebot.org/v1/tokens/validate \ -H "Authorization: Bearer your_api_key_here" \ -H "Content-Type: application/json" \ -d '{ "token_address": "YourSPLTokenAddress..." }'