SMM Panel API Documentation

The Smmpanelz API lets you place and track orders from your own website, bot or tool instead of logging into a panel for every order. It uses a single POST endpoint, returns JSON, and needs nothing beyond your API key.

Base URL: https://smmpanelz.com/api/v2

Authentication

Every request is a POST to the base URL with a key parameter containing your API key. Generate the key from your account area. Keep it on your server and never expose it in browser JavaScript.

ParameterTypeRequiredDescription
keystringYesYour API key from the account area

Actions

Each operation is selected with the action parameter.

ActionPurposeExtra parameters
servicesList every available servicenone
balanceCurrent account balancenone
addPlace a new orderservice, link, quantity, runs, interval
statusCheck one or many ordersorder or orders
refillRequest a refillorder
refill_statusCheck a refillrefill
cancelRequest cancellationorder

Get the Service List

Call this before your first order. Each entry carries the rate per 1,000, the minimum and maximum quantity, and the refill flag.

POST /api/v2\\\\nkey=YOUR_API_KEY&action=services
[\\\\n  {\\\\n    "service": 1,\\\\n    "name": "Followers",\\\\n    "type": "Default",\\\\n    "category": "Instagram",\\\\n    "rate": "0.90",\\\\n    "min": "50",\\\\n    "max": "10000",\\\\n    "refill": "1"\\\\n  }\\\\n]

The catalogue is large, so cache it and refresh on a schedule instead of calling it per order. Rates change when suppliers change them.

Check Your Balance

POST /api/v2\\\\nkey=YOUR_API_KEY&action=balance
{\\\\n  "balance": "100.84292",\\\\n  "currency": "USD"\\\\n}

Place an Order

Quantity is a plain number, not a multiple of 1,000. An order for 5,000 followers is quantity=5000.

POST /api/v2\\\\nkey=YOUR_API_KEY&action=add&service=1&link=https://instagram.com/p/example&quantity=5000
ParameterRequiredDescription
serviceYesService id from the service list
linkYesPublic post or profile URL the service applies to
quantityYesTotal quantity, not per 1,000
runsNoSplit the order into this many deliveries
intervalNoMinutes between runs when using runs
{\\\\n  "status": 200,\\\\n  "order": 23501\\\\n}

The order id comes back immediately. Store it; you cannot look an order up by name later.

Check Order Status

POST /api/v2\\\\nkey=YOUR_API_KEY&action=status&order=23501
{\\\\n  "charge": "0.27819",\\\\n  "start_count": "3572",\\\\n  "status": "Partial",\\\\n  "remains": "157",\\\\n  "currency": "USD"\\\\n}

The status field reads Pending while queued, In progress while running, Partial when part has landed, and Done when the order is complete.

Check Multiple Orders at Once

Pass a comma-separated list in orders instead of order to check a batch in one request.

POST /api/v2\\\\nkey=YOUR_API_KEY&action=status&orders=1,10,100
{\\\\n  "1": { "status": "Partial", "remains": "157" },\\\\n  "10": { "error": "Incorrect order ID" },\\\\n  "100": { "status": "In progress", "remains": "10" }\\\\n}

Request a Refill

Available on services where the service list shows refill enabled. Submit the order id if the delivered amount dropped inside the refill window.

POST /api/v2\\\\nkey=YOUR_API_KEY&action=refill&order=23501
{\\\\n  "refill": 1,\\\\n  "status": 200,\\\\n  "message": "Refill has been placed successfully!"\\\\n}

Check the refill afterwards with the returned refill id.

POST /api/v2\\\\nkey=YOUR_API_KEY&action=refill_status&refill=1
{\\\\n  "status": "Completed"\\\\n}

Cancel an Order

Only orders that have not started can be cancelled. A delivered order cannot be reversed.

POST /api/v2\\\\nkey=YOUR_API_KEY&action=cancel&order=23501
{\\\\n  "status": "success",\\\\n  "message": "Cancellation request added, we'll try our best to cancel it."\\\\n}

cURL Example

curl -s -X POST "https://smmpanelz.com/api/v2" \\\\\\\\\\\\n  -d "key=YOUR_API_KEY" \\\\\\\\\\\\n  -d "action=add" \\\\\\\\\\\\n  -d "service=1" \\\\\\\\\\\\n  -d "link=https://instagram.com/p/example" \\\\\\\\\\\\n  -d "quantity=5000"

PHP Example

$data = [\\\\n  'key'      => 'YOUR_API_KEY',\\\\n  'action'   => 'add',\\\\n  'service'  => 1,\\\\n  'link'     => 'https://instagram.com/p/example',\\\\n  'quantity' => 5000,\\\\n];\\\\n$ch = curl_init('https://smmpanelz.com/api/v2');\\\\ncurl_setopt($ch, CURLOPT_POST, true);\\\\ncurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));\\\\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\\\\n$res = json_decode(curl_exec($ch), true);\\\\ncurl_close($ch);\\\\necho $res['order']; // 23501

Python Example

import requests\\\\n\\\\nres = requests.post('https://smmpanelz.com/api/v2', data={\\\\n    'key': 'YOUR_API_KEY',\\\\n    'action': 'add',\\\\n    'service': 1,\\\\n    'link': 'https://instagram.com/p/example',\\\\n    'quantity': 5000,\\\\n}).json()\\\\n\\\\nprint(res['order'])  # 23501

Drip Feed with runs and interval

The add action accepts runs and interval to spread a large order over time instead of delivering it in one push.

POST /api/v2\\\\nkey=YOUR_API_KEY&action=add&service=1&link=https://instagram.com/p/example&quantity=10000&runs=10&interval=60

That request delivers the 10,000 in ten runs, one every 60 minutes.

Integration Tips

  • Cache the service list and refresh it on a schedule, not per order
  • Store every order id; there is no lookup by order name
  • Use the batch status call instead of one request per order
  • Keep the API key server-side only
  • Handle partial and failed states explicitly before charging a client

Frequently Asked Questions

Is the API free?

Yes. Every account has API access and there is no integration fee. You pay only for the services you order.

Do I need a website to use the API?

No. Any script, bot or backend that can send an HTTP POST can use it.

How do I split an order over time?

Pass runs and interval on the add action. Runs is the number of deliveries and interval is the minutes between them.

What happens if I send a bad link?

The order is accepted, then fails when the provider cannot apply it. Always send a public, reachable URL.