API v2
API documentation
A drop-in compatible implementation of the standard SMM panel API v2. Connect any reseller panel or script in minutes.
Authentication
Send every request as HTTP POST (form-encoded or JSON) to the endpoint below, including your API key as the key parameter. Find or regenerate your key under API in your dashboard.
API URL
POST https://smmcloudx.com/api/v2
Response format
application/json · UTF-8
Create a free account to get your API key.
Service list
| Parameter | Description |
|---|---|
key | Your API key |
action | "services" |
curl -X POST https://smmcloudx.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services"
<?php
$ch = curl_init('https://smmcloudx.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'services',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
[
{
"service": 101,
"name": "Instagram Followers — Real Mixed | 30D Refill",
"type": "Default",
"category": "Instagram",
"rate": "1.26",
"min": "50",
"max": "100000",
"refill": true,
"cancel": true,
"dripfeed": true
}
]
Add order
| Parameter | Description |
|---|---|
key | Your API key |
action | "add" |
service | Service ID |
link | Link to page / post / profile |
quantity | Needed quantity |
runs optional | Drip-feed: number of runs (services with drip-feed) |
interval optional | Drip-feed: minutes between runs |
comments custom comments | Comments separated by \n (quantity = number of lines) |
answer_number poll | Poll answer number |
curl -X POST https://smmcloudx.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=101" \
-d "link=https://instagram.com/brand" \
-d "quantity=1000"
<?php
$ch = curl_init('https://smmcloudx.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'add',
'service' => '101',
'link' => 'https://instagram.com/brand',
'quantity' => '1000',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
{
"order": 23501
}
Order status
| Parameter | Description |
|---|---|
key | Your API key |
action | "status" |
order | Order ID |
curl -X POST https://smmcloudx.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "order=23501"
<?php
$ch = curl_init('https://smmcloudx.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'status',
'order' => '23501',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
{
"order": 23501,
"status": "Completed",
"charge": "1.26",
"start_count": "1000",
"remains": "0",
"currency": "USD"
}
Multiple orders status
| Parameter | Description |
|---|---|
key | Your API key |
action | "status" |
orders | Order IDs separated by comma (up to 100) |
curl -X POST https://smmcloudx.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "orders=23501,23502,99999"
<?php
$ch = curl_init('https://smmcloudx.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'status',
'orders' => '23501,23502,99999',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
{
"23501": { "status": "Completed", "charge": "1.26", "start_count": "1000", "remains": "0", "currency": "USD" },
"23502": { "status": "In progress", "charge": "0.50", "start_count": "340", "remains": "120", "currency": "USD" },
"99999": { "error": "Incorrect order ID" }
}
Create refill
| Parameter | Description |
|---|---|
key | Your API key |
action | "refill" |
order | Order ID |
curl -X POST https://smmcloudx.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=refill" \
-d "order=23501"
<?php
$ch = curl_init('https://smmcloudx.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'refill',
'order' => '23501',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
{
"refill": "8811"
}
Refill status
| Parameter | Description |
|---|---|
key | Your API key |
action | "refill_status" |
refill | Refill ID |
curl -X POST https://smmcloudx.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=refill_status" \
-d "refill=8811"
<?php
$ch = curl_init('https://smmcloudx.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'refill_status',
'refill' => '8811',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
{
"status": "Completed"
}
Cancel orders
| Parameter | Description |
|---|---|
key | Your API key |
action | "cancel" |
orders | Order IDs separated by comma (up to 100) |
curl -X POST https://smmcloudx.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=cancel" \
-d "orders=23501,23502"
<?php
$ch = curl_init('https://smmcloudx.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'cancel',
'orders' => '23501,23502',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
[
{ "order": 23501, "cancel": { "error": "Order cannot be canceled" } },
{ "order": 23502, "cancel": 1 }
]
User balance
| Parameter | Description |
|---|---|
key | Your API key |
action | "balance" |
curl -X POST https://smmcloudx.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=balance"
<?php
$ch = curl_init('https://smmcloudx.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'balance',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
{
"balance": "100.84",
"currency": "USD"
}
Errors & limits
Errors are returned as JSON with an HTTP 4xx status:
{ "error": "Not enough funds on balance" }
- 401 — Invalid API key
- 403 — API access disabled for the account
- 422 — Validation error (link, quantity, service)
- 429 — Rate limit exceeded (default 120 requests per minute per key)
Amounts are returned in the platform base currency. Status values: Pending, Processing, In progress, Completed, Partial, Canceled, Refunded, Failed.