Getting Started
The Solana Volume Bot API allows you to programmatically create and manage volume generation campaigns for Solana tokens. Our REST API uses standard HTTP methods and returns JSON responses.
API Access Required
API access is available for enterprise customers and integration partners. To request API credentials, please contact our team:
api@solanavolumebot.appBase URL
https://api.solanavolumebot.app/v1Quick Start Example
const response = await fetch('https://api.solanavolumebot.app/v1/campaigns', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
makers: 100,
duration: 60,
solPerMakerMin: 0.2,
solPerMakerMax: 0.4,
commentPercentage: 30
})
});
const campaign = await response.json();
console.log('Campaign created:', campaign.id);Authentication
The API uses Bearer token authentication. Include your API key in the Authorization header of every request.
Authentication Header
Authorization: Bearer YOUR_API_KEYExample Request
curl -X GET https://api.solanavolumebot.app/v1/campaigns \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.solanavolumebot.app/v1/campaigns',
headers=headers
)
campaigns = response.json()Security Warning
Never expose your API key in client-side code or public repositories. Always make API calls from your backend server.
API Endpoints
Complete reference for all available API endpoints with detailed request and response examples.
/v1/campaignsCreate a new volume generation campaign for a Solana token.
Request Body
{
"tokenAddress": "string", // Required: Solana token address
"makers": number, // Required: 100-10000
"duration": number, // Required: 1-1440 minutes
"solPerMakerMin": number, // Required: Min 0.1 SOL
"solPerMakerMax": number, // Required: Min 0.2 SOL
"commentPercentage": number, // Required: 0-100
"webhookUrl": "string" // Optional: Callback URL
}Example Request
const campaign = await fetch('https://api.solanavolumebot.app/v1/campaigns', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
makers: 150,
duration: 120,
solPerMakerMin: 0.2,
solPerMakerMax: 0.5,
commentPercentage: 40,
webhookUrl: 'https://yourapp.com/webhook'
})
}).then(res => res.json());Response (201 Created)
{
"id": "camp_1a2b3c4d5e6f",
"status": "pending",
"tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"tokenName": "USD Coin",
"tokenSymbol": "USDC",
"makers": 150,
"duration": 120,
"solPerMakerMin": 0.2,
"solPerMakerMax": 0.5,
"commentPercentage": 40,
"totalVolume": 52.5,
"serviceFee": 0.7875,
"estimatedComments": 60,
"createdAt": "2025-01-15T10:30:00Z",
"startTime": null,
"endTime": null
}/v1/campaigns/:idRetrieve detailed information about a specific campaign.
Example Request
curl -X GET https://api.solanavolumebot.app/v1/campaigns/camp_1a2b3c4d5e6f \
-H "Authorization: Bearer YOUR_API_KEY"Response (200 OK)
{
"id": "camp_1a2b3c4d5e6f",
"status": "active",
"tokenAddress": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"tokenName": "USD Coin",
"tokenSymbol": "USDC",
"makers": 150,
"duration": 120,
"progress": {
"completedMakers": 45,
"totalVolume": 15.75,
"commentsPosted": 18,
"elapsedMinutes": 36
},
"createdAt": "2025-01-15T10:30:00Z",
"startTime": "2025-01-15T10:35:00Z",
"estimatedEndTime": "2025-01-15T12:35:00Z"
}/v1/campaignsList all campaigns with optional filtering and pagination.
Query Parameters
status - Filter by status (pending, active, completed, cancelled)limit - Number of results (default: 20, max: 100)offset - Pagination offset (default: 0)sort - Sort order (created_desc, created_asc)Example Request
import requests
params = {
'status': 'active',
'limit': 10,
'offset': 0
}
response = requests.get(
'https://api.solanavolumebot.app/v1/campaigns',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params=params
)
data = response.json()
print(f"Found {data['total']} campaigns")Response (200 OK)
{
"campaigns": [
{
"id": "camp_1a2b3c4d5e6f",
"status": "active",
"tokenSymbol": "USDC",
"makers": 150,
"totalVolume": 52.5,
"createdAt": "2025-01-15T10:30:00Z"
}
],
"total": 1,
"limit": 10,
"offset": 0
}/v1/campaigns/:idCancel a pending or active campaign. Completed work will be charged.
Example Request
const result = await fetch(
'https://api.solanavolumebot.app/v1/campaigns/camp_1a2b3c4d5e6f',
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
).then(res => res.json());
console.log('Campaign cancelled:', result.status);Response (200 OK)
{
"id": "camp_1a2b3c4d5e6f",
"status": "cancelled",
"completedWork": {
"makers": 45,
"volume": 15.75,
"chargedFee": 0.236
},
"cancelledAt": "2025-01-15T11:15:00Z"
}/v1/statsGet aggregated statistics for your account.
Example Request
curl -X GET https://api.solanavolumebot.app/v1/stats \
-H "Authorization: Bearer YOUR_API_KEY"Response (200 OK)
{
"totalCampaigns": 47,
"activeCampaigns": 3,
"totalVolume": 2847.5,
"totalMakers": 12450,
"totalComments": 3890,
"averageROI": 185,
"last30Days": {
"campaigns": 12,
"volume": 645.2,
"makers": 3200
}
}Error Handling
The API uses standard HTTP status codes and returns detailed error messages in JSON format.
HTTP Status Codes
200OK - Request succeeded201Created - Resource created successfully400Bad Request - Invalid parameters401Unauthorized - Invalid or missing API key404Not Found - Resource doesn't exist429Too Many Requests - Rate limit exceeded500Internal Server Error - Server errorError Response Format
{
"error": {
"code": "invalid_parameter",
"message": "Makers must be between 100 and 10000",
"field": "makers",
"value": 50
}
}Common Error Codes
invalid_parameter - Request parameter is invalidmissing_parameter - Required parameter is missinginvalid_token_address - Token address is invalid or not foundinsufficient_balance - Account balance too lowrate_limit_exceeded - Too many requestscampaign_not_found - Campaign ID doesn't existRate Limits
API requests are rate limited to ensure fair usage and system stability.
Default Limits
60100010Rate Limit Headers
Every API response includes rate limit information in the headers:
Need Higher Limits?
Enterprise customers can request increased rate limits. Contact api@solanavolumebot.app for custom plans.
Webhooks
Receive real-time notifications about campaign events via webhooks.
Webhook Events
campaign.started - Campaign execution begancampaign.completed - Campaign finished successfullycampaign.cancelled - Campaign was cancelledcampaign.failed - Campaign encountered an errorcampaign.progress - Progress update (every 25%)Webhook Payload
{
"event": "campaign.completed",
"timestamp": "2025-01-15T12:35:00Z",
"data": {
"id": "camp_1a2b3c4d5e6f",
"status": "completed",
"tokenSymbol": "USDC",
"makers": 150,
"totalVolume": 52.5,
"commentsPosted": 60,
"duration": 120,
"completedAt": "2025-01-15T12:35:00Z"
}
}Webhook Verification
Verify webhook authenticity using the signature header:
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = hmac.update(payload).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(digest)
);
}
// In your webhook handler
app.post('/webhook', (req, res) => {
const signature = req.headers['x-webhook-signature'];
const isValid = verifyWebhook(
JSON.stringify(req.body),
signature,
process.env.WEBHOOK_SECRET
);
if (!isValid) {
return res.status(401).send('Invalid signature');
}
// Process webhook...
res.status(200).send('OK');
});Need Help?
Our team is here to help you integrate and succeed with the Solana Volume Bot API. Get in touch for technical support, API access, or custom solutions.