Whether you're connecting a reseller panel to a provider, building a custom ordering tool, or automating campaign management — this guide covers the complete SMM panel API integration process. No unnecessary complexity: just what actually works.
Prerequisites Before You Start
- A registered account on Social Bulk Market (free)
- Your API key (Settings → API in your dashboard)
- Basic knowledge of HTTP requests in your language of choice (Python, PHP, JS, etc.)
- A funded account balance (orders require available balance)
Authentication
Every API request includes your API key as a POST parameter. There are no OAuth flows, token exchanges, or session management — just your key on every request.
https://socialbulkmarket.com/api/v2All requests:POST method · Content-Type: application/x-www-form-urlencoded · Parameter: key=[your_api_key]
Step 1 — Fetch the Services List
Start by retrieving the full service catalogue. You'll use the service IDs from this list to place orders.
POST to: https://socialbulkmarket.com/api/v2
Body: key=YOUR_KEY&action=services
Response (array of service objects):
[{
"service": 1,
"name": "Instagram Followers [HQ] [30-Day Refill]",
"type": "Default",
"category": "Instagram - Followers",
"rate": "1.80", (per 1,000 units)
"min": "100",
"max": "100000",
"refill": true,
"cancel": false
}, ...]
Best practice: Cache this response and refresh every 6–12 hours. The catalogue rarely changes intraday, and fetching it on every order wastes API calls and slows your application.
Step 2 — Place an Order
Once you have the service ID, placing an order requires: your key, the action, service ID, social media link, and quantity.
POST Body: key=YOUR_KEY&action=add&service=1&link=https://instagram.com/username&quantity=1000
Response:
{ "order": 23456789 }
Save the order ID — you'll need it for status checks.
Validation before placing:
- Quantity must be between the service's min and max values
- Link must be public and accessible (not a private profile)
- Your account balance must be sufficient: (quantity ÷ 1000) × rate
Step 3 — Check Order Status
POST Body: key=YOUR_KEY&action=status&order=23456789
Response:
{
"charge": "1.80",
"start_count": "1423", (count at time of order)
"status": "In progress",
"remains": "456", (units still to deliver)
"currency": "USD"
}
Multiple orders (batch check):
POST Body: key=YOUR_KEY&action=status&orders=23456789,23456790,23456791
Possible status values: Pending, In progress, Completed, Partial, Canceled, Processing
Step 4 — Check Account Balance
POST Body: key=YOUR_KEY&action=balance
Response:
{ "balance": "47.23", "currency": "USD" }
Implement a low-balance alert in your application — automatically notify yourself when balance drops below your threshold (e.g., $10) to prevent order failures due to insufficient funds.
Step 5 — Request a Refill
POST Body: key=YOUR_KEY&action=refill&order=23456789
Response:
{ "refill": 9876543 }
Check refill status:
POST Body: key=YOUR_KEY&action=refill_status&refill=9876543
Error Handling
All API errors return a JSON object with an error key:
{ "error": "Invalid key" } — wrong or missing API key
{ "error": "Incorrect quantity" } — below min or above max
{ "error": "Not enough funds" } — insufficient balance
{ "error": "Invalid link" } — URL format issue or private account
{ "error": "Service is not available" } — temporary provider outage
Implement error handling for all five cases. For "Service is not available," retry with exponential backoff (wait 30s → 2min → 10min before alerting). For "Not enough funds," trigger your balance alert immediately.
Full Integration Example (Python)
import requests, time
API_URL = "https://socialbulkmarket.com/api/v2"
API_KEY = "your_key_here"
def place_order(service_id, link, qty):
r = requests.post(API_URL, data={
"key": API_KEY, "action": "add",
"service": service_id,
"link": link, "quantity": qty
})
data = r.json()
if "error" in data: raise Exception(data["error"])
return data["order"]
def get_status(order_id):
r = requests.post(API_URL, data={
"key": API_KEY, "action": "status",
"order": order_id
})
return r.json()
# Usage
oid = place_order(1, "https://instagram.com/user", 1000)
print(f"Order placed: {oid}")
time.sleep(60)
print(get_status(oid))Connecting a Reseller Panel (No-Code Path)
If you're using a panel script (Perfect Panel, SMMHeaven, etc.) rather than building a custom integration, the process is even simpler:
- Log into your panel admin → API Providers (or Child Panels)
- Add new provider: URL =
https://socialbulkmarket.com/api/v2, Key = your API key - Click "Sync" or "Import Services" — the full catalogue appears automatically
- Set your markup prices on each imported service
- Services are now live in your customer-facing panel
See our SMM Panel Provider vs Reseller guide and our SMM Panel API Beginner guide for foundational context.