On this page 13
- How the SMM Panel API Works
- Where to Find Your API Key and Documentation
- The Seven Actions
- Placing Orders With action=add
- Checking Status
- Refills and Cancels Through the API
- Errors You Will See
- Rate Limits
- Connecting Your Panel to a Provider's API
- Testing an Integration
- Selling API Access to Resellers
- Security Basics
- Free SMM Panel APIs
An SMM panel API is a single URL that takes POST requests with an API key and an action, such as services, add, status, refill, cancel or balance, and answers in JSON. Nearly every panel uses the same actions and field names, which is why any panel can send orders to any other panel. On FlashyPanels the URL is yourpanel.com/api/v2.
This guide covers the API from both sides: what your customers and resellers send to your panel, and what your panel sends to its providers. Field names and error messages below are the ones our panels use.
How the SMM Panel API Works
There are no separate endpoints per action and no login flow. Every request goes to one URL with two fields that are always required:
- key, the customer's API key.
- action, which tells the panel what to do.
The rest depends on the action. Responses are JSON. Requests without an action and key get an error that points the caller to the documentation.
Where to Find Your API Key and Documentation
Customers find their key on their Account page, and the API page in the customer area shows the URL, the method (POST), the response format (JSON) and an example for every action. The same page links to example PHP code. A customer can regenerate their key from Account, which instantly stops the old key from working. That is the first thing to do if a key leaks.
The Seven Actions
| Action | What it does | Main fields |
|---|---|---|
| services | Lists every service the key can order | key, action |
| add | Places an order and returns its ID | service, link, quantity |
| status | Returns charge, start count, status, remains and currency | order, or orders for several |
| refill | Requests a refill on a completed order | order, or orders (up to 100) |
| refill_status | Returns the status of a refill | refill, or refills (up to 100) |
| cancel | Requests cancellation | orders (up to 100) |
| balance | Returns the account balance and currency | key, action |
The services response includes, for each service: the service ID, name, type, category, rate per 1,000, min, max, description and whether refill is available. Resellers use it to import your catalog into their own panel.
Placing Orders With action=add
A default order needs service, link and quantity. The panel checks the quantity against the service's min and max, checks the balance, charges it, and returns the order ID:
| Field | Example |
|---|---|
| key | your API key |
| action | add |
| service | 1 |
| link | the post or profile URL |
| quantity | 1000 |
The response is just the new order ID, for example { "order": 23501 }. Store it, because every later status, refill or cancel call uses it.
Drip-feed through the API
Add runs (how many deliveries) and interval (minutes between them) to a default order and it becomes a drip-feed. Runs must be at least 2. The quantity is per run, so 1,000 with 10 runs is 10,000 in total.
Other order types
Some services need different fields. The API page lists each type with its fields. The ones you will meet most:
- Package: service and link only, no quantity.
- Custom Comments: a comments list, one comment per line.
- Mentions Custom List: a usernames list, one per line.
- Mentions Hashtag, Mentions User Followers, Mentions Media Likers: a quantity plus the hashtag, profile or media to take usernames from.
- Comment Likes and Comment Replies: the username of the comment owner.
- Poll: the answer number to vote for.
- Subscriptions: a username, a min and max quantity per post, optional posts and old_posts limits, a delay in minutes, and an optional expiry date.
Checking Status
Send status with order for one order, or with orders and a comma-separated list for several. Each answer carries the charge, the start count, the status, what remains to deliver, and the currency. A partial order shows how much was not delivered; that part has already gone back to the customer's balance.
Polling is how everyone tracks orders, including your own panel tracking its providers. Do not poll every order every few seconds. Check open orders on a timer and stop checking once they complete.
Refills and Cancels Through the API
The API follows the same rules as the refill and cancel buttons in the customer area:
- Refill works only on completed orders, only on services with refill enabled, and only inside the service's refill days counted from completion.
- One refill at a time per order. The first refill opens 24 hours after the order completes, and after a provider accepts a refill the next one opens 24 hours later.
- The provider can decline a refill; the API then returns "The provider declined this refill".
- Cancel works only on services with cancel enabled, and only while the order is pending, processing or in progress.
Our guide to refill, drip-feed and cancel explains these rules from the operator's side.
Errors You Will See
Errors come back as JSON with a message. The common ones:
| Message | What it means |
|---|---|
| API key invalid | The key is wrong or was regenerated |
| Insufficient balance | The account needs a top-up before ordering |
| Quantity below minimum / Quantity above maximum | Check min and max from action=services |
| You already have an active order on this link | Wait for the current order on that link to finish |
| Service is not available | The service is disabled or hidden |
| Dripfeed requires at least 2 runs | Send runs of 2 or more |
| Order must be completed before requesting a refill | Refills open after completion |
| Refill period has expired for this order | The service's refill days have passed |
| Please wait before requesting another refill | The 24-hour gap after completion or after an accepted refill |
| Only pending or processing orders can be cancelled | The order already finished, ended partial or was canceled |
Rate Limits
Each API key can make 300 requests a minute. That is plenty for a reseller sending orders in real time. If an integration hits the limit, it is almost always polling too often. Batch status checks with orders and a comma-separated list instead of one request per order.
Connecting Your Panel to a Provider's API
The same format runs in the other direction. To use another panel as your provider, open Settings → Providers and add:
- A Provider name you will recognise.
- The URL of their API, usually something like https://provider.com/api/v2.
- Your API key from their site.
- The Currency they charge in.
Your panel then lists their services in the Import wizard, sends your customers' orders to them with action=add, and polls them with action=status. Refills and cancels go to them too, if they support those actions. Our guide on choosing an SMM panel provider covers what to check before you connect one.
Testing an Integration
Test every new integration in this order before real traffic, on both sides: when you connect to a provider, and when a reseller connects to you.
- Call balance. If the key or URL is wrong, this is where you find out, without spending anything.
- Call services and check that the service IDs, rates, min and max match what you expect.
- Place one add on the smallest quantity of a cheap service, on a link you control.
- Call status with the returned order ID until it completes, and compare the charge with your rate.
- If the service has refill or cancel, try those on a test order too.
Five calls, a few cents, and you know the integration works end to end. Skipping this step is how a reseller ends up sending a day of orders to the wrong service ID.
Selling API Access to Resellers
Resellers are often a panel's best customers: they order every day and rarely open tickets. To win them:
- Keep your API page public so they can check the format before signing up.
- Set custom rates per reseller under Clients, so volume buyers pay less without changing your public prices.
- Mark refill support honestly in each service; resellers read the refill flag in the services response.
- Watch your provider balance closely. Automated orders drain it faster than retail.
Panels that want their own branded panel on top of yours can buy a child panel instead of integrating with the API.
Security Basics
- Treat an API key like a password. Anyone with it can spend the balance.
- Regenerate a key from Account the moment it might have leaked.
- Never put a key in public code, a screenshot or a shared document.
- Call the API from a server, not from a web page where visitors can read the key.
Free SMM Panel APIs
Searches for "free SMM panel API" or a "free API key" are common. The API itself is free on any panel: it costs nothing to call. What costs money is the orders it places, which are paid from the balance on the account. On FlashyPanels the User API is part of the panel, not an add-on; pricing shows what each plan includes, and the features list covers the rest.