SMM Panel API Explained: services, add, status, refill and balance

Almost every SMM panel exposes the same simple API. It was popularised by the panel scripts most of the market runs on, so once you have connected to one panel you can connect to hundreds. This guide explains each action, what it returns and the mistakes that cost resellers money.
The basics
- One endpoint. Usually
https://panel.example/api/v2. - POST requests with form fields (some panels also accept GET).
- Two fields on every call:
key(your API key from the panel's account page) andaction. - JSON responses. Errors come back as
{"error": "..."}.
action=services: the service list
Returns every service the panel sells. Each item usually has:
| Field | Meaning |
|---|---|
| service | Service ID you use when ordering |
| name | Service name |
| type | Default, Custom Comments, Package, Subscriptions… |
| category | Group name shown on the panel |
| rate | Price per 1,000 in the panel currency |
| min / max | Order limits |
| refill / cancel | Whether refill and cancel are supported |
| dripfeed | Whether drip-feed is allowed |
This is the call price comparison sites use. SMM Reportly reads it to show each panel's service list and the daily new services and price changes on the panel's updates tab.
action=add: place an order
Required fields: service, link and quantity. Depending on the service type you may also send runs and interval (drip-feed), comments (custom comments, one per line) or username and min / max / posts (subscriptions).
The response is the new order ID: {"order": 23501}.
action=status: check an order
Send order for one order or orders with up to 100 comma-separated IDs. The response contains charge, start_count, status and remains.
Statuses you will see: Pending, In progress, Processing, Completed, Partial and Canceled. For Partial, the unused part of the charge is returned to your balance.
action=refill and refill_status
For services with refill, send order (or orders) to request a refill. You get a refill ID back and can follow it with refill_status.
action=cancel
Some panels let you cancel orders that have not started. Send orders with the IDs. Not every panel supports it, and the services list tells you which services allow it.
action=balance
Returns your balance and currency: {"balance": "100.84", "currency": "USD"}. Resellers usually poll it to stop sending orders before the balance runs out.
Common mistakes
- Ignoring the currency. Rates are in the panel's currency. Convert before you compare panels.
- Not storing the provider's order ID. Without it you cannot check status, refill or prove an order in a complaint.
- Sending private or wrong links. Most providers mark these orders as canceled or partial, sometimes without refund.
- Ordering above max or below min. The API returns an error and nothing is placed, so check limits from the services list.
- Polling too fast. Panels rate-limit status calls. Batch up to 100 orders per request.
- Trusting service IDs forever. Providers remove and replace services. Refresh the services list daily.
Choosing a provider for your own panel
When you connect your panel to a provider via API, you inherit its delivery problems. Before you connect:
- Check the provider's complaint history on SMM Reportly.
- Compare the same service across providers in All Services; the cheapest one is often closer to the original source.
- Test with small orders and watch drop rates for a week.



