SMM-Panel.in API Documentation
Automate your SMM orders, check service availability, manage refills and cancellations — all through a simple REST API. Ideal for resellers, developers, and agencies.
POST
HTTP Method
JSON
Response Format
7
API Actions
Free
API Access
Authentication
Every API request must include your personal API key in the request body as the key parameter. You can find and regenerate your API key in your dashboard under Account → API Access.
Keep your API key secret. Do not expose it in client-side code or public repositories. If compromised, regenerate it immediately from your dashboard.
Base URL
All API requests are POST requests to the following endpoint. Responses are always JSON.
https://smm-panel.in/api/v2POSTapplication/x-www-form-urlencodedapplication/jsonUTF-8Service List
Returns all available services with their IDs, names, categories, rates, and order constraints.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | Must be "services" |
<?php
$ch = curl_init('https://smm-panel.in/api/v2');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'services',
]));
$response = json_decode(curl_exec($ch));
curl_close($ch);import requests
response = requests.post('https://smm-panel.in/api/v2', data={
'key': 'YOUR_API_KEY',
'action': 'services',
})
print(response.json())Example Response
[
{
"service": 1,
"name": "Instagram Followers | Real | 365 Days Refill",
"type": "Default",
"category": "Instagram - Followers",
"rate": "26.88",
"min": "100",
"max": "10000",
"refill": true,
"cancel": true
},
...
]Add Order
Place a new order. Parameters vary depending on the service type — see Order Types below.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | Must be "add" |
| service | integer | required | Service ID from the service list |
| link | string | required | URL of the target page or profile |
| quantity | integer | required | Number of units to order (between min and max) |
| runs | integer | optional | Number of runs (for Drip Feed services) |
| interval | integer | optional | Minutes between runs (for Drip Feed services) |
<?php
$ch = curl_init('https://smm-panel.in/api/v2');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'add',
'service' => 1,
'link' => 'https://instagram.com/youraccount',
'quantity' => 1000,
]));
$response = json_decode(curl_exec($ch));
echo $response->order; // Order ID
curl_close($ch);import requests
response = requests.post('https://smm-panel.in/api/v2', data={
'key': 'YOUR_API_KEY',
'action': 'add',
'service': 1,
'link': 'https://instagram.com/youraccount',
'quantity': 1000,
})
data = response.json()
print(data['order']) # Order IDExample Response
{ "order": 23501 }Order Status
Check the status of one or multiple orders. You can query up to 100 orders at once using a comma-separated list.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | Must be "status" |
| order | integer | required | Single order ID |
| orders | string | optional | Comma-separated order IDs for bulk check (max 100). Use instead of `order`. |
<?php
$ch = curl_init('https://smm-panel.in/api/v2');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'status',
'order' => 23501,
]));
$response = json_decode(curl_exec($ch));
curl_close($ch);<?php
$ch = curl_init('https://smm-panel.in/api/v2');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'status',
'orders' => '23501,23502,23503',
]));
$response = json_decode(curl_exec($ch));
curl_close($ch);Single Order Response
{
"charge": "26.88",
"start_count": "0",
"status": "In progress",
"remains": "700",
"currency": "INR"
}Bulk Order Response
{
"23501": {
"charge": "26.88",
"start_count": "0",
"status": "In progress",
"remains": "700",
"currency": "INR"
},
"23502": {
"charge": "5.48",
"start_count": "0",
"status": "Completed",
"remains": "0",
"currency": "INR"
}
}Create Refill
Request a refill for orders that support it. You can refill up to 100 orders at once.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | Must be "refill" |
| order | integer | required | Single order ID to refill |
| orders | string | optional | Comma-separated order IDs for bulk refill (max 100) |
Single Response
{ "refill": 9871 }Bulk Response
[
{ "order": 23501, "refill": 9871 },
{ "order": 23502, "refill": 9872 }
]Refill Status
Check the status of a refill request. Supports up to 100 refill IDs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | Must be "refill_status" |
| refill | integer | required | Single refill ID |
| refills | string | optional | Comma-separated refill IDs for bulk check (max 100) |
Single Response
{ "status": "Completed" }Bulk Response
[
{ "9871": { "status": "Completed" } },
{ "9872": { "status": "Rejected" } }
]Cancel Orders
Cancel orders that support cancellation. Only orders with "cancel": true in the service list can be cancelled. Supports up to 100 orders at once.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | Must be "cancel" |
| orders | string | required | Comma-separated order IDs to cancel (max 100) |
Example Response
[
{ "order": 23501, "cancel": { "status": true } },
{ "order": 23502, "cancel": { "status": false, "error": "Cancel is not available" } }
]User Balance
Returns your current account balance and currency.
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | required | Your API key |
| action | string | required | Must be "balance" |
import requests
response = requests.post('https://smm-panel.in/api/v2', data={
'key': 'YOUR_API_KEY',
'action': 'balance',
})
data = response.json()
print(data['balance'], data['currency'])Example Response
{
"balance": "1250.75",
"currency": "INR"
}Order Types
Different service types require different parameters when placing an order.
{
"key": "YOUR_API_KEY",
"action": "add",
"service": 1,
"link": "https://instagram.com/youraccount",
"quantity": 1000
}{
"key": "YOUR_API_KEY",
"action": "add",
"service": 42,
"link": "https://instagram.com/p/post_id",
"comments": "Great post!\nLove this content\nAmazing work"
}Separate each comment with \\n
{
"key": "YOUR_API_KEY",
"action": "add",
"service": 1,
"link": "https://instagram.com/youraccount",
"quantity": 100,
"runs": 10,
"interval": 60
}interval is in minutes between each run.
{
"key": "YOUR_API_KEY",
"action": "add",
"service": 55,
"username": "targetaccount",
"min": 100,
"max": 500,
"delay": 30,
"expiry": "31/12/2025"
}delay is 0–600 minutes. expiry format: dd/mm/YYYY
Order Status Values
The status field in order responses can be one of the following values:
Pending
Order has been received and is waiting to start.
In progress
Order is currently being processed and delivered.
Processing
Order is being prepared before delivery begins.
Completed
Order has been fully delivered.
Partial
Order was partially delivered. Only a portion could be completed.
Cancelled
Order was cancelled. If eligible, a refund was issued to your balance.
Refunded
Order was refunded back to your account balance.
Error Handling
On error, the API returns a JSON object with an error key describing the issue.
{ "error": "Incorrect request" }Incorrect requestOne or more required parameters are missing or invalid.
Invalid API keyThe key provided does not match any active account.
Not enough fundsYour balance is too low to complete this order.
Invalid service IDThe service ID does not exist or has been disabled.
Invalid quantityThe quantity is below the minimum or above the maximum for this service.
Service is unavailableThe service is temporarily disabled. Try again later.
Cancel is not availableCancellation is not supported for this order or service.
Ready to integrate?
Create a free account to get your API key and start building in minutes.