P Private release QA qa-live-a-20261024
Login

Developers

API documentation

Place and track orders from your own software. The API uses the standard SMM panel format: one endpoint, form-encoded POST parameters, JSON answers.

Endpoint and authentication

Endpoint and authentication
API URLhttps://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2
HTTP methodPOST (GET with the same parameters is also accepted)
Bodyapplication/x-www-form-urlencoded or JSON
AuthenticationSend your API key in the key parameter of every request.
ResponseJSON
Version 1https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v1 is the same handler and stays supported.

Your key is shown in your account after you sign in. It is never displayed on public pages. Keep it secret: anyone with it can spend your balance.

Example request

Place an order of 1,000 units on service 1. The same call in three languages:

cURL

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -H 'Idempotency-Key: 7b1f0c2e-order-1' \
  -d key=YOUR_API_KEY \
  -d action=add \
  -d service=1 \
  -d link='https://www.instagram.com/p/example/' \
  -d quantity=1000

PHP

<?php
$ch = curl_init('https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Idempotency-Key: 7b1f0c2e-order-1'],
    CURLOPT_POSTFIELDS => http_build_query([
        'key' => 'YOUR_API_KEY',
        'action' => 'add',
        'service' => 1,
        'link' => 'https://www.instagram.com/p/example/',
        'quantity' => 1000,
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

if (isset($response['error'])) {
    throw new RuntimeException($response['error']);
}
echo $response['order'];

Python

import requests

response = requests.post(
    'https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2',
    headers={'Idempotency-Key': '7b1f0c2e-order-1'},
    data={
        'key': 'YOUR_API_KEY',
        'action': 'add',
        'service': 1,
        'link': 'https://www.instagram.com/p/example/',
        'quantity': 1000,
    },
    timeout=30,
).json()

if 'error' in response:
    raise RuntimeError(response['error'])
print(response['order'])

Response

{
    "status": "success",
    "order": 23501
}

Service list action=services

Every service you can order, with the rate YOU pay per 1,000 units (or per package). Your own custom rates and discounts are already applied.

Parameters
ParameterDescription
keyYour API key
actionservices

Request

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=services

Example response

[
    {
        "service": 1,
        "name": "Instagram Followers",
        "type": "default",
        "category": "Instagram Followers",
        "rate": "0.9000",
        "min": 50,
        "max": 10000,
        "dripfeed": 1,
        "refill": true,
        "cancel": false
    }
]

Add order action=add

Creates an order and charges your balance. Which extra fields are required depends on the service type returned by action=services (see the table of order types). Send an Idempotency-Key header to make retries safe.

Parameters
ParameterDescription
keyYour API key
actionadd
serviceService ID
linkLink to the page or post (all types except Subscriptions)
quantityQuantity (types with a quantity)
runsDrip-feed only: number of runs (optional)
intervalDrip-feed only: minutes between runs, 1–1440 (optional)
auto_refill1 or 0: opt this order in or out of auto-refill when the panel offers it; omitted = your account default; ignored for services without refill (optional)

Request

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=add \
  -d service=SERVICE \
  -d link=LINK \
  -d quantity=QUANTITY \
  -d runs=RUNS \
  -d interval=INTERVAL \
  -d auto_refill=AUTO_REFILL

Example response

{
    "status": "success",
    "order": 23501
}

Order status action=status

Status of one order (order=ID). Drip-feed orders return their runs and the ids of the orders created so far. refill_until (end of the refill window, ISO 8601, null when unknown or not a refill service) and auto_refill are extra fields after the standard ones.

Parameters
ParameterDescription
keyYour API key
actionstatus
orderOrder ID

Request

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=status \
  -d order=ORDER

Example response status

{
    "charge": "0.2782",
    "start_count": 3572,
    "status": "Partial",
    "remains": 157,
    "currency": "USD",
    "refill_until": "2026-12-01T10:00:00+00:00",
    "auto_refill": false
}

Example response status_dripfeed

{
    "status": "In progress",
    "runs": 10,
    "orders": [
        23502,
        23503
    ]
}

Multiple orders status action=status

Up to 100 comma-separated order ids (orders=ID,ID). The answer is keyed by order id; an unknown id gets an error entry instead of failing the whole call.

Parameters
ParameterDescription
keyYour API key
actionstatus
orders1,10,100

Request

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=status \
  -d orders=1,10,100

Example response

{
    "1": {
        "charge": "0.2782",
        "start_count": 3572,
        "status": "Partial",
        "remains": 157,
        "currency": "USD",
        "refill_until": "2026-12-01T10:00:00+00:00",
        "auto_refill": false
    },
    "10": {
        "error": "Incorrect order ID"
    }
}

Create refill action=refill

Requests a refill for a refill-eligible order (order=ID), or for up to 100 orders (orders=ID,ID) — the multi form answers one entry per order.

Parameters
ParameterDescription
keyYour API key
actionrefill
orderOrder ID

Request

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=refill \
  -d order=ORDER

Example response refill

{
    "refill": 1
}

Example response multi_refill

[
    {
        "order": 1,
        "refill": 1
    },
    {
        "order": 2,
        "error": "Incorrect order ID"
    }
]

Refill status action=refill_status

Status of one refill (refill=ID), or of up to 100 refills (refills=ID,ID) keyed by refill id. Statuses: Pending, In progress, Completed, Error.

Parameters
ParameterDescription
keyYour API key
actionrefill_status
refillRefill ID

Request

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=refill_status \
  -d refill=REFILL

Example response refill_status

{
    "status": "Completed"
}

Example response multi_refill_status

{
    "1": {
        "refill": 1,
        "status": "Completed"
    },
    "2": {
        "error": "Refill not found"
    }
}

Cancel orders action=cancel

Asks the supplier to cancel an order (order=ID) or up to 100 orders (orders=ID,ID). The answer is the cancel request id; the order changes status once the supplier confirms.

Parameters
ParameterDescription
keyYour API key
actioncancel
orders1,10

Request

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=cancel \
  -d orders=1,10

Example response cancel

{
    "cancel": 1
}

Example response multi_cancel

[
    {
        "order": 9,
        "cancel": 2
    },
    {
        "order": 10,
        "error": "Incorrect order ID"
    }
]

Balance action=balance

Your wallet balance, in your account's base currency.

Parameters
ParameterDescription
keyYour API key
actionbalance

Request

curl -X POST https://qa-live-a-20261024.panels.smmpaneldesk.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=balance

Example response

{
    "balance": "100.8400",
    "currency": "USD"
}

Order types

The type field of action=services tells you which fields action=add needs. Lists (comments, usernames, hashtags, groups) are one entry per line.

Order types
type Required fields Notes
default
Default
service, link, quantity Add runs + interval for drip-feed when the service has dripfeed = 1.
package
Package
service, link Flat price; quantity is always 1.
custom_comments
Custom comments
service, link, comments One comment per line; quantity = number of lines.
custom_comments_package
Custom comments package
service, link, comments Flat price; one comment per line.
mentions_custom_list
Mentions custom list
service, link, usernames One username per line; quantity = number of usernames.
mentions_hashtag
Mentions hashtag
service, link, quantity, hashtag
mentions_user_followers
Mentions user followers
service, link, quantity, username
mentions_media_likers
Mentions media likers
service, link, quantity, media media must be an http(s) URL.
mentions_with_hashtags
Mentions with hashtags
service, link, quantity, usernames, hashtags One entry per line in each list.
comment_likes
Comment likes
service, link, quantity, username username = the author of the comment.
subscriptions
Subscriptions
service, username, min, max, posts Optional: old_posts, delay, expiry. No link. Charged as max × posts.
seo
SEO
service, link, quantity, keywords
seo2
SEO 2
service, link, quantity, keywords, email
web_traffic
Web traffic
service, link, quantity, country, device, type_of_traffic device 1–5; type_of_traffic 1 needs google_keyword, 2 needs referring_url.
invites_from_groups
Invites from groups
service, link, quantity, groups One group per line.

Errors

A failed call answers with a single error field. Following the SMM convention the HTTP status is 200, except when the rate limit is hit (429). Always check for the error key.

{
    "error": "Incorrect order ID"
}
Errors
Message When HTTP
API is disabled for this user or the key is invalid. Please check your API details. Missing, wrong or revoked key, or a suspended account. 200
The API is currently disabled. Please contact support. The API is switched off for this store. 200
This action is invalid Unknown action value. 200
Incorrect order ID The order does not exist or is not yours. 200
Refill not found The refill does not exist or is not yours. 200
You do not have enough funds Your balance does not cover the order. 200
This service does not exist. Unknown or unavailable service id. 200
A request with this Idempotency-Key is already being processed. A second request reused a key while the first is still running. 200
Rate limit exceeded. Please retry in N seconds. Too many requests for this key in one minute (Retry-After header set). 429

Order validation messages (quantity limits, missing link, unsupported drip-feed and similar) are returned the same way, in the language of the request.

Rate limits and idempotency

  • 300 requests per minute per API key. Above that the API answers HTTP 429 with a Retry-After header.
  • After 30 requests with an invalid key in one minute, the address is refused for the rest of that minute.
  • Multi-order calls (orders, refills) accept up to 100 ids; extra ids are ignored.
  • Idempotency-Key header on action=add: repeating a request with the same key within 24 hours returns the first answer instead of creating a second order. Use a new unique value for every new order.