Developer API Documentation
Unlock the full potential of BNB Volume Bot through our enterprise-grade RESTful API. Programmatically orchestrate volume campaigns across PancakeSwap and leading BSC DEXs, access granular real-time analytics, and automate your entire BNB Chain trading strategy with millisecond precision.
Get Your API Credentials
API access for BNB Volume Bot requires membership approval. Our technical team reviews each application to ensure optimal platform performance and security. Most applications are processed within 24-48 hours.
Developer Support Contact:
api@bnbvolumebot.netInclude your integration use case, anticipated monthly volume, technical stack, and organization details for expedited review.
Quick Start Guide
API Base Endpoint
All API requests must be made over HTTPS. HTTP requests will be rejected.
Authentication Protocol
Every API request requires Bearer token authentication. Include your unique API key in the Authorization header of each request:
Critical Security Guidelines
- Never commit API keys to version control or expose them in client-side JavaScript
- Store credentials exclusively in environment variables or secure vault systems
- Implement key rotation every 90 days as a security best practice
- Maintain separate API keys for development, staging, and production environments
- Immediately revoke and regenerate keys if you suspect any compromise
Rate Limiting Policy
The BNB Volume Bot API enforces a rate limit of 100 requests per minute per API key. Rate limit status is provided in response headers. Leverage BSC's 3-second block time for near real-time campaign monitoring without hitting limits.
X-RateLimit-Limit: 100 X-RateLimit-Remaining: 95 X-RateLimit-Reset: 1642345678
If you exceed the rate limit, you'll receive a 429 status code. Implement exponential backoff in your retry logic.
Response Structure
All API responses return JSON-formatted data with standard HTTP status codes. Successful requests include a success flag and data payload.
Success Response (200 OK)
{
"success": true,
"data": { ... },
"timestamp": "2024-01-15T10:30:00Z"
}Error Response (4xx/5xx)
{
"success": false,
"error": {
"code": "INVALID_TOKEN_ADDRESS",
"message": "The provided token address is invalid",
"details": "Address must be a valid BEP-20 contract on BSC"
},
"timestamp": "2024-01-15T10:30:00Z"
}Core API Endpoints
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| tokenAddress | string | Yes | Valid BEP-20 token contract address on BSC |
| volumeTarget | number | Yes | Target volume in BNB (min: 50, max: 10000) |
| walletMakers | number | Yes | Number of unique wallets to deploy (min: 10, max: 5000) |
| duration | number | Yes | Campaign duration in minutes (min: 5, max: 1440) |
| dex | string | Yes | Target DEX: pancakeswap, biswap, apeswap, babyswap |
| features | object | No | Advanced campaign optimization features |
Example Request Body
{
"tokenAddress": "0x...",
"volumeTarget": 100.5,
"walletMakers": 500,
"duration": 60,
"dex": "pancakeswap",
"features": {
"smartWalletDistribution": true,
"antiWhaleProtection": true,
"liquidityOptimization": true,
"randomizeTimings": true,
"multiDexRouting": false
}
}Response (201 Created)
{
"success": true,
"data": {
"campaignId": "bnb_camp_abc123",
"status": "pending",
"estimatedCost": "0.5234 BNB",
"network": "bsc",
"tokenAddress": "0x...",
"volumeTarget": 100.5,
"walletMakers": 500,
"duration": 60,
"dex": "pancakeswap",
"estimatedStartTime": "2024-01-15T10:32:00Z",
"estimatedCompletionTime": "2024-01-15T11:32:00Z",
"createdAt": "2024-01-15T10:30:00Z"
},
"timestamp": "2024-01-15T10:30:00Z"
}Path Parameters
id (string, required) - Unique campaign identifier
Response (200 OK)
{
"success": true,
"data": {
"campaignId": "bnb_camp_abc123",
"status": "running",
"network": "bsc",
"dex": "pancakeswap",
"tokenAddress": "0x...",
"tokenSymbol": "TOKEN",
"tokenName": "My Token",
"progress": {
"volumeGenerated": 45.2,
"volumeTarget": 100.5,
"walletsCreated": 250,
"walletsTarget": 500,
"transactionsExecuted": 1250,
"percentComplete": 45,
"currentGasPrice": "5 gwei",
"averageTransactionSize": "0.036 BNB",
"estimatedTimeRemaining": "33 minutes"
},
"costs": {
"volumeCost": "0.2617 BNB",
"gasCost": "0.0125 BNB",
"totalCost": "0.2742 BNB"
},
"startedAt": "2024-01-15T10:35:00Z",
"estimatedCompletion": "2024-01-15T11:35:00Z",
"createdAt": "2024-01-15T10:30:00Z"
},
"timestamp": "2024-01-15T10:58:00Z"
}Query Parameters
| Parameter | Type | Description |
|---|---|---|
| status | string | Filter by status: pending, running, completed, failed, cancelled |
| dex | string | Filter by DEX: pancakeswap, biswap, apeswap, babyswap |
| limit | number | Results per page (default: 10, max: 100) |
| offset | number | Pagination offset (default: 0) |
| sortBy | string | Sort field: createdAt, volumeTarget, status (default: createdAt) |
| sortOrder | string | Sort direction: asc, desc (default: desc) |
Response (200 OK)
{
"success": true,
"data": {
"campaigns": [
{
"campaignId": "bnb_camp_abc123",
"status": "running",
"tokenAddress": "0x...",
"volumeTarget": 100.5,
"volumeGenerated": 45.2,
"dex": "pancakeswap",
"createdAt": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"total": 25,
"limit": 10,
"offset": 0,
"hasMore": true
},
"network": "bsc"
},
"timestamp": "2024-01-15T11:00:00Z"
}Request Body
{
"duration": 90, // Extend duration (increase only)
"volumeTarget": 150.0 // Increase volume target (increase only)
}Response (200 OK)
{
"success": true,
"data": {
"campaignId": "bnb_camp_abc123",
"status": "running",
"volumeTarget": 150.0,
"duration": 90,
"additionalCost": "0.2617 BNB",
"updatedAt": "2024-01-15T11:00:00Z"
},
"timestamp": "2024-01-15T11:00:00Z"
}Response (200 OK)
{
"success": true,
"data": {
"campaignId": "bnb_camp_abc123",
"status": "cancelled",
"volumeGenerated": 45.2,
"transactionsExecuted": 1250,
"walletsCreated": 250,
"refundAmount": "0.2617 BNB",
"refundTransactionHash": "0x...",
"network": "bsc",
"cancelledAt": "2024-01-15T11:00:00Z"
},
"timestamp": "2024-01-15T11:00:00Z"
}Query Parameters
timeframe (string, optional) - Data granularity: minute, hour, day (default: hour)
metrics (string, optional) - Comma-separated list of specific metrics
Response (200 OK)
{
"success": true,
"data": {
"campaignId": "bnb_camp_abc123",
"volumeByHour": [
{ "hour": "2024-01-15T10:00:00Z", "volume": 15.2, "transactions": 380 },
{ "hour": "2024-01-15T11:00:00Z", "volume": 30.0, "transactions": 870 }
],
"transactionSizes": {
"min": "0.001 BNB",
"max": "0.15 BNB",
"average": "0.036 BNB",
"median": "0.032 BNB"
},
"walletDistribution": {
"unique": 250,
"active": 245,
"averageTransactionsPerWallet": 5.0
},
"priceImpact": {
"average": 0.023,
"max": 0.089,
"min": 0.001
},
"gasMetrics": {
"averageGasPrice": "5 gwei",
"totalGasCost": "0.0125 BNB",
"averageGasPerTransaction": "150000"
},
"dexDistribution": {
"pancakeswap": 0.65,
"biswap": 0.20,
"apeswap": 0.15
},
"performance": {
"successRate": 0.998,
"failedTransactions": 5,
"averageConfirmationTime": "3.2 seconds"
}
},
"timestamp": "2024-01-15T11:30:00Z"
}Response (200 OK)
{
"success": true,
"data": {
"accountId": "acc_xyz789",
"email": "user@example.com",
"tier": "professional",
"balance": "5.2345 BNB",
"usage": {
"totalCampaigns": 127,
"activeCampaigns": 3,
"totalVolumeGenerated": "12,450.67 BNB",
"apiCallsThisMonth": 8542,
"apiCallsLimit": 100000
},
"limits": {
"maxConcurrentCampaigns": 10,
"maxVolumePerCampaign": "10000 BNB",
"maxWalletsPerCampaign": 5000
},
"createdAt": "2023-06-15T08:00:00Z"
},
"timestamp": "2024-01-15T11:30:00Z"
}Error Handling Reference
BNB Volume Bot API uses conventional HTTP status codes with detailed error objects in the response body for precise debugging.
| Code | Error Type | Description |
|---|---|---|
| 400 | INVALID_REQUEST | Request contains invalid or missing required parameters |
| 401 | UNAUTHORIZED | API key is missing, invalid, or expired |
| 403 | FORBIDDEN | API key lacks necessary permissions for this operation |
| 404 | NOT_FOUND | Requested campaign or resource does not exist |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests - implement exponential backoff |
| 500 | INTERNAL_ERROR | Server encountered an unexpected error - retry with backoff |
| 503 | SERVICE_UNAVAILABLE | Service temporarily unavailable due to maintenance |
Domain-Specific Error Codes
INVALID_TOKEN_ADDRESS
The provided address is not a valid BEP-20 token contract on BSC
INSUFFICIENT_BALANCE
Account BNB balance is too low to execute this campaign
CAMPAIGN_LIMIT_REACHED
Maximum concurrent campaigns limit exceeded for your tier
INVALID_DEX
The specified DEX is not supported or unavailable
VOLUME_BELOW_MINIMUM
Volume target must be at least 50 BNB
Real-Time Webhooks
Configure webhooks to receive instant notifications about campaign events. The BNB Volume Bot webhook system sends POST requests to your endpoint with each significant event, leveraging BSC's fast block confirmations for near real-time updates.
Webhook Configuration
Set up webhooks programmatically via the API or through your dashboard. Each webhook requires a valid HTTPS URL and event subscription list.
POST /webhooks
{
"url": "https://your-domain.com/webhook",
"events": ["campaign.started", "campaign.completed", "campaign.failed"],
"secret": "your_webhook_secret"
}Supported Event Types
- campaign.started - Campaign execution initiated on BSC
- campaign.completed - Campaign successfully finished
- campaign.failed - Campaign encountered a critical error
- campaign.progress - Progress milestone reached (every 10%)
- campaign.paused - Campaign temporarily paused
- campaign.resumed - Paused campaign resumed
- transaction.confirmed - Individual transaction confirmed on BSC
- transaction.failed - Transaction failed on BSC network
Webhook Payload Structure
{
"event": "campaign.completed",
"campaignId": "bnb_camp_abc123",
"network": "bsc",
"timestamp": "2024-01-15T11:35:00Z",
"data": {
"volumeGenerated": 100.5,
"transactionsExecuted": 2500,
"walletsCreated": 500,
"totalGasCost": "0.025 BNB",
"dex": "pancakeswap",
"duration": 60,
"successRate": 0.998
},
"signature": "sha256_hmac_signature"
}Webhook Security Verification
Every webhook payload includes an HMAC-SHA256 signature in the X-Webhook-Signature header. Always verify this signature to confirm authenticity and prevent replay attacks.
// Node.js signature verification
const crypto = require('crypto');
function verifyWebhookSignature(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = hmac.update(JSON.stringify(payload)).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(digest)
);
}
// Usage in Express.js
app.post('/webhook', (req, res) => {
const signature = req.headers['x-webhook-signature'];
const isValid = verifyWebhookSignature(req.body, signature, process.env.WEBHOOK_SECRET);
if (!isValid) {
return res.status(401).send('Invalid signature');
}
// Process webhook...
res.status(200).send('OK');
});Integration Code Examples
// Complete campaign lifecycle management
const API_KEY = process.env.BNB_VOLUME_BOT_API_KEY;
const BASE_URL = 'https://api.bnbvolumebot.net/v1';
async function launchVolumeCampaign() {
try {
const response = await fetch(`${BASE_URL}/campaigns`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
tokenAddress: '0x...',
volumeTarget: 100.5,
walletMakers: 500,
duration: 60,
dex: 'pancakeswap',
features: {
smartWalletDistribution: true,
antiWhaleProtection: true,
liquidityOptimization: true
}
})
});
if (!response.ok) {
const error = await response.json();
throw new Error(`API Error: ${error.error.message}`);
}
const { data } = await response.json();
console.log('Campaign launched:', data.campaignId);
// Monitor campaign progress
return trackCampaignProgress(data.campaignId);
} catch (error) {
console.error('Campaign launch failed:', error);
throw error;
}
}
async function trackCampaignProgress(campaignId) {
const pollStatus = async () => {
const response = await fetch(`${BASE_URL}/campaigns/${campaignId}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
const { data } = await response.json();
console.log(`Progress: ${data.progress.percentComplete}%`);
console.log(`Volume: ${data.progress.volumeGenerated}/${data.progress.volumeTarget} BNB`);
console.log(`Transactions: ${data.progress.transactionsExecuted}`);
if (data.status === 'completed') {
console.log('Campaign completed successfully!');
return data;
} else if (data.status === 'failed') {
throw new Error('Campaign failed');
}
// Poll every 30 seconds
await new Promise(resolve => setTimeout(resolve, 30000));
return pollStatus();
};
return pollStatus();
}
// Execute campaign
launchVolumeCampaign()
.then(result => console.log('Final result:', result))
.catch(error => console.error('Error:', error));import os
import time
import requests
from typing import Dict, Any
API_KEY = os.getenv('BNB_VOLUME_BOT_API_KEY')
BASE_URL = 'https://api.bnbvolumebot.net/v1'
class BNBVolumeBotClient:
def __init__(self, api_key: str):
self.api_key = api_key
self.headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json'
}
def launch_campaign(self, config: Dict[str, Any]) -> Dict[str, Any]:
"""Launch a new volume generation campaign"""
response = requests.post(
f'{BASE_URL}/campaigns',
headers=self.headers,
json=config
)
response.raise_for_status()
return response.json()['data']
def get_campaign_status(self, campaign_id: str) -> Dict[str, Any]:
"""Retrieve current campaign status"""
response = requests.get(
f'{BASE_URL}/campaigns/{campaign_id}',
headers=self.headers
)
response.raise_for_status()
return response.json()['data']
def monitor_campaign(self, campaign_id: str, poll_interval: int = 30):
"""Monitor campaign until completion"""
while True:
campaign = self.get_campaign_status(campaign_id)
status = campaign['status']
progress = campaign['progress']
print(f"Status: {status}")
print(f"Progress: {progress['percentComplete']}%")
print(f"Volume: {progress['volumeGenerated']}/{progress['volumeTarget']} BNB")
print(f"Transactions: {progress['transactionsExecuted']}")
print("-" * 60)
if status == 'completed':
print("Campaign completed successfully!")
return campaign
elif status == 'failed':
raise Exception("Campaign execution failed")
time.sleep(poll_interval)
def get_campaign_analytics(self, campaign_id: str) -> Dict[str, Any]:
"""Retrieve detailed campaign analytics"""
response = requests.get(
f'{BASE_URL}/analytics/{campaign_id}',
headers=self.headers
)
response.raise_for_status()
return response.json()['data']
# Usage example
if __name__ == '__main__':
client = BNBVolumeBotClient(API_KEY)
# Configure campaign
campaign_config = {
'tokenAddress': '0x...',
'volumeTarget': 100.5,
'walletMakers': 500,
'duration': 60,
'dex': 'pancakeswap',
'features': {
'smartWalletDistribution': True,
'antiWhaleProtection': True,
'liquidityOptimization': True
}
}
try:
campaign = client.launch_campaign(campaign_config)
print(f"Campaign launched: {campaign['campaignId']}")
# Monitor execution
result = client.monitor_campaign(campaign['campaignId'])
# Retrieve analytics
analytics = client.get_campaign_analytics(campaign['campaignId'])
print(f"Success rate: {analytics['performance']['successRate'] * 100}%")
except requests.exceptions.HTTPError as e:
print(f"API Error: {e.response.json()}")package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
"time"
)
const BaseURL = "https://api.bnbvolumebot.net/v1"
type APIClient struct {
APIKey string
HTTPClient *http.Client
}
type CampaignConfig struct {
TokenAddress string `json:"tokenAddress"`
VolumeTarget float64 `json:"volumeTarget"`
WalletMakers int `json:"walletMakers"`
Duration int `json:"duration"`
Dex string `json:"dex"`
}
type Campaign struct {
CampaignID string `json:"campaignId"`
Status string `json:"status"`
Progress CampaignProgress `json:"progress"`
}
type CampaignProgress struct {
VolumeGenerated float64 `json:"volumeGenerated"`
VolumeTarget float64 `json:"volumeTarget"`
PercentComplete int `json:"percentComplete"`
TransactionsExecuted int `json:"transactionsExecuted"`
}
func NewAPIClient(apiKey string) *APIClient {
return &APIClient{
APIKey: apiKey,
HTTPClient: &http.Client{Timeout: 30 * time.Second},
}
}
func (c *APIClient) LaunchCampaign(config CampaignConfig) (*Campaign, error) {
body, _ := json.Marshal(config)
req, _ := http.NewRequest("POST", BaseURL+"/campaigns", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer "+c.APIKey)
req.Header.Set("Content-Type", "application/json")
resp, err := c.HTTPClient.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var result struct {
Data Campaign `json:"data"`
}
json.NewDecoder(resp.Body).Decode(&result)
return &result.Data, nil
}
func (c *APIClient) GetCampaignStatus(campaignID string) (*Campaign, error) {
req, _ := http.NewRequest("GET", BaseURL+"/campaigns/"+campaignID, nil)
req.Header.Set("Authorization", "Bearer "+c.APIKey)
resp, err := c.HTTPClient.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var result struct {
Data Campaign `json:"data"`
}
json.NewDecoder(resp.Body).Decode(&result)
return &result.Data, nil
}
func main() {
client := NewAPIClient(os.Getenv("BNB_VOLUME_BOT_API_KEY"))
config := CampaignConfig{
TokenAddress: "0x...",
VolumeTarget: 100.5,
WalletMakers: 500,
Duration: 60,
Dex: "pancakeswap",
}
campaign, err := client.LaunchCampaign(config)
if err != nil {
panic(err)
}
fmt.Printf("Campaign launched: %s\n", campaign.CampaignID)
}Launch Campaign
curl -X POST https://api.bnbvolumebot.net/v1/campaigns \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tokenAddress": "0x...",
"volumeTarget": 100.5,
"walletMakers": 500,
"duration": 60,
"dex": "pancakeswap"
}'Check Campaign Status
curl -X GET https://api.bnbvolumebot.net/v1/campaigns/bnb_camp_abc123 \ -H "Authorization: Bearer YOUR_API_KEY"
Retrieve Analytics
curl -X GET https://api.bnbvolumebot.net/v1/analytics/bnb_camp_abc123 \ -H "Authorization: Bearer YOUR_API_KEY"
Official SDK Libraries
Accelerate your integration with our official SDK libraries. These production-ready packages handle authentication, request signing, error handling, and provide fully typed interfaces for all API endpoints.
Node.js / TypeScript
Complete TypeScript definitions with IntelliSense support
Python
Async/await support with comprehensive type hints
Go
Idiomatic Go with complete type safety
PHP
PSR-compliant with PHP 8+ features
Start Building Today
Integrate BNB Volume Bot into your platform and unlock automated volume generation at scale. Our developer support team is ready to help you get started with API access and technical guidance.
Developer Support:
api@bnbvolumebot.net