Skip to main content
1PANEL PLUS

How to Use the SMM Panel API: API v2 Integration Guide for Resellers

By 1PANEL PLUS16 min read YouTubeLast updated


Key takeaways

The request format of the standard SMM panel API v2, its 6 actions, example responses, error messages and rate limits, written for resellers.

An SMM panel API is a connection that places orders and checks their status automatically from another panel or your own software. 1PANEL PLUS uses the standard SMM panel API v2, so if you already have code connected to another panel, just change the address and key to connect right away. The API and the website use the same services, the same prices per 1,000 and the same balance.

Who uses an SMM panel API?

  • Resellers: list services on their own panel and pass customer orders through automatically
  • Agencies: place orders for many channels at once at set times
  • Developers: build scripts that order when a stream starts or a new video is uploaded
  • Operators: bring balance and order status together in their own dashboard

How do I get an API key?

Create one on the API key screen in your dashboard after your first top up is credited. The key is shown only once, at the moment you create it, so copy it right away and keep it somewhere safe. When you create a new key, the old key stops working immediately, so if you think a key has been exposed, just create a new one to replace it.

How do I send API requests?

Send every request by POST to the single address https://1panelplus.com/api/v2. Use whichever you prefer, form fields (application/x-www-form-urlencoded or multipart) or a JSON body (Content-Type: application/json), and include key and action in every request. All responses are JSON.

Example request (form fields): key=YOUR_API_KEY&action=balance

Example request (JSON): {"key": "YOUR_API_KEY", "action": "balance"}

action
services
Values to send
None
Values returned
Service list
action
add
Values to send
service, link, quantity or comments
Values returned
order (order ID)
action
status
Values to send
One order, or orders (up to 100, comma separated)
Values returned
charge, start_count, status, remains, currency
action
refill
Values to send
order
Values returned
refill (refill ID)
action
refill_status
Values to send
refill
Values returned
status
action
balance
Values to send
None
Values returned
balance, currency

How do I get the service list with services?

Send action=services and you get every service on sale as an array. Each service includes service (service ID), name, type, category, rate, min, max, refill and cancel. rate is the price per 1,000 (USD); when type is Package, it is the price of one package. refill is true for services with a refill period, and cancel is always false. category contains the platform name and category together, so you can recreate the categories on your own panel as they are.

Example response: [{"service": SERVICE_ID, "name": "Service name", "type": "Default", "category": "YouTube - Category name", "rate": "Price per 1,000", "min": "Minimum quantity", "max": "Maximum quantity", "refill": true, "cancel": false}]

Prices and services can change, so as a reseller it is a good idea to fetch services again at a set interval and keep the prices and min and max quantities on your panel in sync.

How do I place an order with add?

Send action=add with service (service ID), link (public link) and quantity, and the order is placed and the cost deducted from your balance right away. The order in the response is the order ID; save it and use it for status and refill. Orders can be placed from accounts whose first top up has been credited.

  • Regular services: send service, link and quantity
  • Custom Comments services: send comments instead of quantity. One comment per line, up to 500 characters per line, and the number of lines is the quantity
  • Package services: no quantity needed. The order is for one package

Example request: key=YOUR_API_KEY&action=add&service=SERVICE_ID&link=https://www.youtube.com/watch?v=videoid&quantity=1000

Example response: {"order": ORDER_ID}

How do I check order status with status?

Send action=status with order (a single order ID) to get that order's status, or send orders with order IDs joined by commas to look up as many as 100 at once. If you manage many orders, grouping them with orders saves a lot of requests.

Example response (single): {"charge": "Amount charged", "start_count": "Start count", "status": "In progress", "remains": "Remaining quantity", "currency": "USD"}

Example response (multiple): {"ORDER_ID_1": {"charge": "...", "start_count": "...", "status": "Completed", "remains": "0", "currency": "USD"}, "ORDER_ID_2": {"error": "Incorrect order ID"}}

status value
Pending
Meaning
Received and waiting to start, or moving to processing
status value
In progress
Meaning
Being delivered
status value
Completed
Meaning
Fully delivered
status value
Partial
Meaning
Part was delivered and the rest of the amount returned to your balance
status value
Canceled
Meaning
Could not be processed and the full amount returned to your balance

charge is the amount paid minus any refunded amount, so after a partial or canceled order you see the amount actually spent right away. Order statuses update automatically about every minute, so querying status at roughly one minute intervals is plenty.

How do I use refill and refill_status?

Send action=refill with order to request a refill, and you get back refill (the refill ID). It is accepted for completed or partially completed orders of services with a refill period, within the refill period counted from the day the order finished, when no refill is in progress and 24 hours have passed since the last request. Send action=refill_status with refill, and it tells you the status as one of Pending, In progress, Completed or Rejected.

Example responses: {"refill": REFILL_ID} and {"status": "Completed"}

Refill rules are the same as on the website. The detailed conditions are in Refill periods explained.

How do I check my balance with balance?

Send action=balance and you get your current balance and currency (USD). As a reseller, check your balance before passing orders through and set up an alert for when it falls below a set amount, so your orders keep flowing without interruption.

Example response: {"balance": "Current balance", "currency": "USD"}

What do the API error messages mean?

Errors come back as JSON with an English sentence in the error field. Each sentence has a fixed cause, so your software can compare it as is and handle it.

error value
Invalid API key
Meaning
The key is missing or incorrect
error value
Too many requests
Meaning
You went over the per-minute request limit. Send again shortly
error value
Add funds first
Meaning
You can order after your first top up is credited
error value
Incorrect service ID
Meaning
Not the ID of a service on sale
error value
Incorrect link
Meaning
The link format is not valid
error value
Quantity out of range
Meaning
The quantity is outside the service's min and max range
error value
Incorrect comments
Meaning
The comment lines are empty or a line is longer than 500 characters
error value
Not enough funds on balance
Meaning
Your balance is lower than the order cost
error value
Incorrect order ID
Meaning
Not an order ID on this account
error value
Incorrect refill ID
Meaning
Not a refill ID on this account
error value
Incorrect action
Meaning
The action value is not one of the 6 actions

Refill requests can return Refill is not available for this service (the service has no refill period), Order is not finished yet (the order has not finished), Refill period has ended (the refill period has passed), or Refill already requested, try again later (a refill is in progress or 24 hours have not passed).

How many API requests can I send?

Each key can make up to 300 requests per minute. Group status lookups into batches of 100 with orders and fetch the service list again only when needed, and you will have plenty of room. For example, with 1,000 orders in progress, 10 requests once a minute check them all.

How do resellers set their selling prices?

The rate you get through the API is the 1PANEL PLUS price per 1,000, and resellers set the selling price on their own panel themselves. For example, if you add 25% to a service with a rate of $2.00, you sell at $2.50 per 1,000; when a customer orders 4,000, your sale is $10.00 and $8.00 is deducted at 1PANEL PLUS. These prices are examples to show the calculation.

In what order should I set up the API connection?

  1. Top up your balance and create an API key in your dashboard
  2. Check the key and connection with balance
  3. Fetch the service list with services and list it on your panel
  4. Send one add with the smallest quantity and get an order ID
  5. Confirm the status changes with status, then turn on automatic ordering

curl, PHP, Python and Node.js examples and full field descriptions are in the API docs, and other questions are in the API group of the FAQ.