Skip to content
4SNS PLUS

SMM Panel API Documentation

Order 4SNS PLUS services from your Telegram bot or your own panel with the standard SMM panel API v2.

What is an SMM panel API?

An SMM panel API lets a program get the service list, place orders and check order status and balance without going through the website. 4SNS PLUS supports the standard SMM panel API v2 format used by many panels and bots, so code you already connected to another panel works right away once you change the URL and key.

API prices and balance are the same as on the website. The rate in the services response equals the price per 1,000 (US dollars) in the price list, and orders placed with add are taken from your balance exactly like web orders and also appear in the order history in your dashboard. Amounts returned from canceled or partial orders go back to the same balance.

Basics

Endpointhttps://4snsplus.com/api/v2
MethodPOST
Request formatForm fields (application/x-www-form-urlencoded, multipart) or a JSON body
ResponseJSON; errors also come as HTTP 200 with an error field
Authenticationkey parameter (your API key) on every request
Rate limit300 requests per minute per key
CurrencyUS dollar (USD)

Request example

curl -X POST https://4snsplus.com/api/v2 \
  -d key=YOUR_API_KEY \
  -d action=balance
import requests

r = requests.post("https://4snsplus.com/api/v2", data={
    "key": "YOUR_API_KEY",
    "action": "add",
    "service": 2210,
    "link": "https://t.me/yourchannel",
    "quantity": 1000,
})
print(r.json())  # {"order": 31877} or {"error": "..."}

How do I get an API key?

Once your first top up is credited to your balance, you can create an API key from the API key menu in your dashboard. The key is shown only once when you create it, so store it somewhere safe. Creating a new key disables the previous key immediately.

The key is separate from your account token. Put only the API key in your bot or server, never your account token. If you think your key was exposed, simply create a new one on the API key screen.

Service list (services)

Returns every service you can order. rate is the price per 1,000 (USD), and when type is Package it is the price of one package. When type is Custom Comments, you send a list of comments instead of a quantity. category is the platform name plus the group name.

ParameterDescription
keyYour API key
actionservices

Response example

[
  {
    "service": 2210,
    "name": "Members - 30 Days Non Drop - 30 Days Refill",
    "type": "Default",
    "category": "Telegram - Members (30 Days Non Drop)",
    "rate": "1.4300",
    "min": "100",
    "max": "50000",
    "refill": true,
    "cancel": false
  }
]

Add an order (add)

Places an order and takes the amount from your balance. The amount is the price per 1,000 times the quantity; for Package it is the package price, and for Custom Comments the number of comment lines is the quantity. Orders are available on accounts whose first top up is credited. The order in the response is your order ID.

ParameterDescription
keyYour API key
actionadd
serviceService ID (service from services)
linkPublic link. For Telegram: t.me/name, private invite link t.me/+code, post t.me/name/123, bot t.me/botname. @name is accepted too
quantityQuantity (within min and max). Not needed for Package and Custom Comments
commentsCustom Comments only. One comment per line, up to 10,000 lines, up to 500 characters per line

Response example

{
  "order": 31877
}

Order status (status)

The status of one order. charge is the actual amount paid after refunds (USD, 6 decimals), start_count is the count when the order started, and remains is the quantity not yet delivered.

ParameterDescription
keyYour API key
actionstatus
orderOrder ID

Response example

{
  "charge": "1.430000",
  "start_count": "8120",
  "status": "In progress",
  "remains": "410",
  "currency": "USD"
}

Multiple order status (status, orders)

Checks up to 100 orders at once, with order IDs joined by commas. IDs that do not exist or are not on your account get an error in their place.

ParameterDescription
keyYour API key
actionstatus
ordersList of order IDs, for example 1,10,100

Response example

{
  "1": { "charge": "0.300000", "start_count": "120", "status": "Completed", "remains": "0", "currency": "USD" },
  "10": { "error": "Incorrect order ID" }
}

Request a refill (refill)

For an order of a service with a refill period that ended as Completed or Partial, request within the refill period counted from when it ended. Each order can have one open request, with 24 hours between requests.

ParameterDescription
keyYour API key
actionrefill
orderOrder ID

Response example

{
  "refill": 512
}

Refill status (refill_status)

The status of one refill request.

ParameterDescription
keyYour API key
actionrefill_status
refillRefill ID (refill from the refill response)

Response example

{
  "status": "Completed"
}

Balance (balance)

Your balance (USD, 6 decimals).

ParameterDescription
keyYour API key
actionbalance

Response example

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

Order status values

PendingReceived. Being passed on, waiting to start, or an operator is checking the handoff result
In progressBeing delivered
CompletedFully delivered
PartialPartly delivered. The undelivered part is refunded to your balance
CanceledNot delivered. Full refund to your balance

Refill status values

PendingRefill request received
In progressRefill being delivered
CompletedRefill delivered
RejectedRefill request was not accepted

Error messages

Errors come as JSON with an error field in an HTTP 200 response. In your code, check for the error field first.

{
  "error": "Not enough funds on balance"
}
Invalid API keyKey is missing, wrong, or replaced by a new key
Too many requestsMore than 300 requests per minute. Try again shortly
Incorrect actionThe action value is not in the list above
Add funds firstOrder from an account whose first top up is not credited yet
Incorrect service IDNo orderable service with that ID
Incorrect linkLink is empty or not a web address
Quantity out of rangeBelow the minimum or above the maximum quantity
Incorrect commentsCustom Comments are empty or exceed 10,000 lines or 500 characters per line
Not enough funds on balanceBalance is lower than the order amount. Top up and order again
Incorrect order IDThat order ID is not on your account
Refill is not available for this serviceService has no refill period
Order is not finished yetRefill is available once the order is Completed or Partial
Refill period has endedThe refill period, counted from when the order ended, has passed
Refill already requestedThis order already has an open refill request
Refill already requested, try again later24 hours have not passed since the last request
Incorrect refill IDThat refill ID is not on your account

How do I connect an SMM panel API to a Telegram bot?

1. Save the service list

Call services a few times a day and save the service ID, name, rate, min and max in your own data. Calculate the price you show customers by adding your margin to rate, and use the saved service ID as is when you order.

2. Check quantity and link before ordering

Checking first that quantity is between min and max and that the link is in t.me format cuts down Quantity out of range and Incorrect link errors. It also helps to check your balance with balance in advance.

3. Check status in batches

Check orders in progress every few minutes in batches of 100 with the orders parameter. This stays comfortably within the limit of 300 requests per minute per key. When an order becomes Completed, Partial or Canceled, let your customer know the result.

4. Refill only finished orders

When an order for a refill service becomes Completed or Partial, you can send refill. Save the refill ID from the response and track progress with refill_status.