REST API — v2

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

Getting started

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.

Endpoint

Base URL

All API requests are POST requests to the following endpoint. Responses are always JSON.

text
https://smm-panel.in/api/v2
MethodPOST
Content-Typeapplication/x-www-form-urlencoded
Response Formatapplication/json
EncodingUTF-8
action: services

Service List

Returns all available services with their IDs, names, categories, rates, and order constraints.

ParameterTypeRequiredDescription
keystringrequiredYour API key
actionstringrequiredMust be "services"
PHP
<?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);
Python
import requests

response = requests.post('https://smm-panel.in/api/v2', data={
    'key':    'YOUR_API_KEY',
    'action': 'services',
})
print(response.json())

Example Response

json
[
  {
    "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
  },
  ...
]
action: add

Add Order

Place a new order. Parameters vary depending on the service type — see Order Types below.

ParameterTypeRequiredDescription
keystringrequiredYour API key
actionstringrequiredMust be "add"
serviceintegerrequiredService ID from the service list
linkstringrequiredURL of the target page or profile
quantityintegerrequiredNumber of units to order (between min and max)
runsintegeroptionalNumber of runs (for Drip Feed services)
intervalintegeroptionalMinutes between runs (for Drip Feed services)
PHP
<?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);
Python
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 ID

Example Response

json
{ "order": 23501 }
action: status

Order Status

Check the status of one or multiple orders. You can query up to 100 orders at once using a comma-separated list.

ParameterTypeRequiredDescription
keystringrequiredYour API key
actionstringrequiredMust be "status"
orderintegerrequiredSingle order ID
ordersstringoptionalComma-separated order IDs for bulk check (max 100). Use instead of `order`.
PHP (single)
<?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 (bulk)
<?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

json
{
  "charge": "26.88",
  "start_count": "0",
  "status": "In progress",
  "remains": "700",
  "currency": "INR"
}

Bulk Order Response

json
{
  "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"
  }
}
action: refill

Create Refill

Request a refill for orders that support it. You can refill up to 100 orders at once.

ParameterTypeRequiredDescription
keystringrequiredYour API key
actionstringrequiredMust be "refill"
orderintegerrequiredSingle order ID to refill
ordersstringoptionalComma-separated order IDs for bulk refill (max 100)

Single Response

json
{ "refill": 9871 }

Bulk Response

json
[
  { "order": 23501, "refill": 9871 },
  { "order": 23502, "refill": 9872 }
]
action: refill_status

Refill Status

Check the status of a refill request. Supports up to 100 refill IDs.

ParameterTypeRequiredDescription
keystringrequiredYour API key
actionstringrequiredMust be "refill_status"
refillintegerrequiredSingle refill ID
refillsstringoptionalComma-separated refill IDs for bulk check (max 100)

Single Response

json
{ "status": "Completed" }

Bulk Response

json
[
  { "9871": { "status": "Completed" } },
  { "9872": { "status": "Rejected" } }
]
action: cancel

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.

ParameterTypeRequiredDescription
keystringrequiredYour API key
actionstringrequiredMust be "cancel"
ordersstringrequiredComma-separated order IDs to cancel (max 100)

Example Response

json
[
  { "order": 23501, "cancel": { "status": true } },
  { "order": 23502, "cancel": { "status": false, "error": "Cancel is not available" } }
]
action: balance

User Balance

Returns your current account balance and currency.

ParameterTypeRequiredDescription
keystringrequiredYour API key
actionstringrequiredMust be "balance"
Python
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

json
{
  "balance": "1250.75",
  "currency": "INR"
}
Reference

Order Types

Different service types require different parameters when placing an order.

DefaultMost common type
json
{
  "key":      "YOUR_API_KEY",
  "action":   "add",
  "service":  1,
  "link":     "https://instagram.com/youraccount",
  "quantity": 1000
}
Custom Comments
json
{
  "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

Drip FeedSpread delivery over time
json
{
  "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.

SubscriptionsAuto-like new posts
json
{
  "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

Reference

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.

Reference

Error Handling

On error, the API returns a JSON object with an error key describing the issue.

json
{ "error": "Incorrect request" }
Incorrect request

One or more required parameters are missing or invalid.

Invalid API key

The key provided does not match any active account.

Not enough funds

Your balance is too low to complete this order.

Invalid service ID

The service ID does not exist or has been disabled.

Invalid quantity

The quantity is below the minimum or above the maximum for this service.

Service is unavailable

The service is temporarily disabled. Try again later.

Cancel is not available

Cancellation 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.