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.

Please include your use case, expected volume, and company information in your request.

Getting Started

Base URL

https://api.fourmemevolumebot.com/v1

Authentication

All API requests require authentication using an API key. Include your API key in the request header:

Authorization: Bearer YOUR_API_KEY

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

POST
/campaigns
Create a new Four.Meme volume boosting campaign

Request Parameters

ParameterTypeRequiredDescription
tokenAddressstringYesBEP-20 token contract address
volumeTargetnumberYesTarget volume in BNB (min: 0.1, max: 10000)
walletMakersnumberYesNumber of unique wallets (min: 10, max: 5000)
durationnumberYesCampaign duration in minutes (min: 5, max: 1440)
dexstringYesTarget DEX: pancakeswap, biswap, apeswap, babyswap
featuresobjectNoAdvanced 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"
}
GET
/campaigns/:id
Get campaign details and real-time status

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"
}
GET
/campaigns
List all Four.Meme campaigns for your account

Query Parameters

ParameterTypeDescription
statusstringFilter by status: pending, running, completed, failed, cancelled
dexstringFilter by DEX: pancakeswap, biswap, apeswap, babyswap
limitnumberNumber of results per page (default: 10, max: 100)
offsetnumberPagination offset (default: 0)
sortBystringSort field: createdAt, volumeTarget, status (default: createdAt)
sortOrderstringSort order: asc, desc (default: desc)
?status=running&dex=pancakeswap&limit=10&offset=0&sortBy=createdAt&sortOrder=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"
}
PATCH
/campaigns/:id
Update a running campaign (limited modifications)

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"
}
DELETE
/campaigns/:id
Cancel a running Four.Meme campaign

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"
}
GET
/analytics/:campaignId
Get detailed analytics for a Four.Meme campaign

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"
}
GET
/account
Get your account information and usage statistics

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.

CodeErrorDescription
400INVALID_REQUESTRequest parameters are invalid or missing
401UNAUTHORIZEDAPI key is missing or invalid
403FORBIDDENAPI key doesn't have permission for this action
404NOT_FOUNDCampaign or resource not found
429RATE_LIMIT_EXCEEDEDToo many requests, please slow down
500INTERNAL_ERRORServer error, please try again later
503SERVICE_UNAVAILABLEService 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

JavaScript / Node.js
Complete example with error handling and monitoring
// 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));
Python
Complete example with async support and error handling
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()}")
Go
Type-safe implementation with proper error handling
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)
}
cURL
Command-line examples for testing

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

npm install @fourmemevolumebot/sdk

Full TypeScript support with auto-completion

Python

pip install fourmemevolumebot

Async/await support with type hints

Go

go get fourmemevolumebot.com/sdk/go

Idiomatic Go with full type safety

PHP

composer require fourmemevolumebot/php-sdk

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