API Documentation
Integrate Four.Meme Volume Bot into your platform with our powerful RESTful API. Automate Four.Meme volume generation, manage campaigns on BNB Chain, and access real-time analytics programmatically.
Request API Access
To get started with the Four.Meme Volume Bot API, you need to request API membership. Our team will review your application and provide you with API credentials within 24-48 hours.
Contact us at:
api@fourmemevolumebot.comPlease include your use case, expected volume, and company information in your request.
Getting Started
Base URL
Authentication
All API requests require authentication using an API key. Include your API key in the request header:
Security Best Practices
- Never expose your API key in client-side code or public repositories
- Store API keys in environment variables
- Rotate your API keys regularly
- Use different API keys for development and production environments
Rate Limits
API requests are limited to 100 requests per minute per API key. Rate limit information is included in response headers. BNB Chain's fast block times enable real-time campaign monitoring.
X-RateLimit-Limit: 100 X-RateLimit-Remaining: 95 X-RateLimit-Reset: 1642345678
Response Format
All API responses are returned in JSON format with appropriate HTTP status codes.
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" }, "timestamp": "2024-01-15T10:30:00Z" }
API Endpoints
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
tokenAddress | string | Yes | BEP-20 token contract address |
volumeTarget | number | Yes | Target volume in BNB (min: 0.1, max: 10000) |
walletMakers | number | Yes | Number of unique wallets (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 features configuration |
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": "bsc_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) - Campaign ID
Response (200 OK)
{ "success": true, "data": { "campaignId": "bsc_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 | Number of 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 order: asc, desc (default: desc) |
Response (200 OK)
{ "success": true, "data": { "campaigns": [ { "campaignId": "bsc_camp_abc123", "status": "running", "tokenAddress": "0x...", "volumeTarget": 100.5, "volumeGenerated": 45.2, "dex": "pancakeswap", "createdAt": "2024-01-15T10:30:00Z" }, // ... more campaigns ], "pagination": { "total": 25, "limit": 10, "offset": 0, "hasMore": true }, "network": "bsc" }, "timestamp": "2024-01-15T11:00:00Z" }
Request Body
{ "duration": 90, // Extend duration (can only increase) "volumeTarget": 150.0 // Increase volume target (can only increase) }
Response (200 OK)
{ "success": true, "data": { "campaignId": "bsc_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": "bsc_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) - Time granularity: minute, hour, day (default: hour)
metrics (string, optional) - Comma-separated metrics to include
Response (200 OK)
{ "success": true, "data": { "campaignId": "bsc_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 Codes
The API uses standard HTTP status codes and returns detailed error information in the response body.
Code | Error | Description |
---|---|---|
400 | INVALID_REQUEST | Request parameters are invalid or missing |
401 | UNAUTHORIZED | API key is missing or invalid |
403 | FORBIDDEN | API key doesn't have permission for this action |
404 | NOT_FOUND | Campaign or resource not found |
429 | RATE_LIMIT_EXCEEDED | Too many requests, please slow down |
500 | INTERNAL_ERROR | Server error, please try again later |
503 | SERVICE_UNAVAILABLE | Service temporarily unavailable |
Common Error Codes
INVALID_TOKEN_ADDRESS
The provided token address is not a valid BEP-20 contract
INSUFFICIENT_BALANCE
Your account balance is insufficient for this campaign
CAMPAIGN_LIMIT_REACHED
Maximum number of concurrent campaigns reached
INVALID_DEX
The specified DEX is not supported
Webhooks
Configure webhooks to receive real-time notifications about Four.Meme campaign events. Webhook payloads are sent as POST requests to your specified URL with each BNB Chain block confirmation.
Configuring Webhooks
Configure webhooks via the API or dashboard. Each webhook requires a URL and event subscriptions.
POST /webhooks { "url": "https://your-domain.com/webhook", "events": ["campaign.started", "campaign.completed", "campaign.failed"], "secret": "your_webhook_secret" }
Available Events
- campaign.started - Campaign has started executing on BNB Chain
- campaign.completed - Campaign finished successfully
- campaign.failed - Campaign encountered an error
- campaign.progress - Progress update (every 10%)
- campaign.paused - Campaign was paused
- campaign.resumed - Campaign was resumed
- transaction.confirmed - Individual transaction confirmed on BNB Chain
- transaction.failed - Transaction failed on BNB Chain
Webhook Payload Example
{ "event": "campaign.completed", "campaignId": "fourmeme_camp_abc123", "network": "bnb-chain", "timestamp": "2024-01-15T11:35:00Z", "data": { "volumeGenerated": 100.5, "transactionsExecuted": 2500, "walletsCreated": 500, "totalGasCost": "0.025 BNB", "duration": 60, "successRate": 0.998 }, "signature": "sha256_hmac_signature" }
Webhook Security
All webhook payloads include an HMAC signature in the X-Webhook-Signature header. Verify this signature to ensure the webhook came from Four.Meme Volume Bot.
// Node.js example const crypto = require('crypto'); function verifyWebhook(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) ); }
Code Examples
// Create and monitor a campaign const API_KEY = process.env.FOURMEME_VOLUME_BOT_API_KEY; const BASE_URL = 'https://api.fourmemevolumebot.com/v1'; async function createCampaign() { 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, 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 created:', data.campaignId); // Monitor campaign progress return monitorCampaign(data.campaignId); } catch (error) { console.error('Failed to create campaign:', error); throw error; } } async function monitorCampaign(campaignId) { const checkStatus = 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`); if (data.status === 'completed') { console.log('Campaign completed successfully!'); return data; } else if (data.status === 'failed') { throw new Error('Campaign failed'); } // Check again in 30 seconds await new Promise(resolve => setTimeout(resolve, 30000)); return checkStatus(); }; return checkStatus(); } // Usage createCampaign() .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('FOURMEME_VOLUME_BOT_API_KEY') BASE_URL = 'https://api.fourmemevolumebot.com/v1' class FourMemeVolumeBotAPI: def __init__(self, api_key: str): self.api_key = api_key self.headers = { 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json' } def create_campaign(self, config: Dict[str, Any]) -> Dict[str, Any]: """Create a new volume campaign""" response = requests.post( f'{BASE_URL}/campaigns', headers=self.headers, json=config ) response.raise_for_status() return response.json()['data'] def get_campaign(self, campaign_id: str) -> Dict[str, Any]: """Get campaign status and details""" 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, interval: int = 30): """Monitor campaign until completion""" while True: campaign = self.get_campaign(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("-" * 50) if status == 'completed': print("Campaign completed successfully!") return campaign elif status == 'failed': raise Exception("Campaign failed") time.sleep(interval) def get_analytics(self, campaign_id: str) -> Dict[str, Any]: """Get 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__': api = FourMemeVolumeBotAPI(API_KEY) # Create campaign campaign_config = { 'tokenAddress': '0x...', 'volumeTarget': 100.5, 'walletMakers': 500, 'duration': 60, 'features': { 'smartWalletDistribution': True, 'antiWhaleProtection': True, 'liquidityOptimization': True } } try: campaign = api.create_campaign(campaign_config) print(f"Campaign created: {campaign['campaignId']}") # Monitor progress result = api.monitor_campaign(campaign['campaignId']) # Get analytics analytics = api.get_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.fourmemevolumebot.com/v1" type Client 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"` } type Campaign struct { CampaignID string `json:"campaignId"` Status string `json:"status"` Progress Progress `json:"progress"` } type Progress struct { VolumeGenerated float64 `json:"volumeGenerated"` VolumeTarget float64 `json:"volumeTarget"` PercentComplete int `json:"percentComplete"` TransactionsExecuted int `json:"transactionsExecuted"` } func NewClient(apiKey string) *Client { return &Client{ APIKey: apiKey, HTTPClient: &http.Client{Timeout: 30 * time.Second}, } } func (c *Client) CreateCampaign(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 *Client) GetCampaign(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 := NewClient(os.Getenv("FOURMEME_VOLUME_BOT_API_KEY")) config := CampaignConfig{ TokenAddress: "0x...", VolumeTarget: 100.5, WalletMakers: 500, Duration: 60, } campaign, err := client.CreateCampaign(config) if err != nil { panic(err) } fmt.Printf("Campaign created: %s\n", campaign.CampaignID) }
Create Campaign
curl -X POST https://api.fourmemevolumebot.com/v1/campaigns \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tokenAddress": "0x...", "volumeTarget": 100.5, "walletMakers": 500, "duration": 60 }'
Get Campaign Status
curl -X GET https://api.fourmemevolumebot.com/v1/campaigns/fourmeme_camp_abc123 \ -H "Authorization: Bearer YOUR_API_KEY"
Get Analytics
curl -X GET https://api.fourmemevolumebot.com/v1/analytics/fourmeme_camp_abc123 \ -H "Authorization: Bearer YOUR_API_KEY"
Official SDK Libraries
We provide official SDK libraries to make integration even easier. These libraries handle authentication, error handling, and provide type-safe interfaces.
Node.js / TypeScript
Full TypeScript support with auto-completion
Python
Async/await support with type hints
Go
Idiomatic Go with full type safety
PHP
PSR-compliant with modern PHP features
Ready to Integrate?
Start building with Four.Meme Volume Bot API today. Contact our team for API access and developer support for BNB Chain integration.
Request API Access:
api@fourmemevolumebot.com