API documentation

Place orders, check their status and request refills from your own code.

Example of PHP code
HTTP method POST API address https://smmlunex.com/api/v2
Your API key Sign in to get it
Response format JSON
API version v2

Our API is compatible with PerfectPanel API v2, the standard used across SMM panels. You can connect any panel or ready-made software that supports this standard by simply entering the address above and your API key.

Every request sends the key (your API key) and the action (the operation) fields. Errors are also returned with HTTP 200 in the form {"error": "..."}. Check whether the response contains an error field.

Service list

services Required unless marked Optional
key
Your API key
action
services

Only services available for sale are listed. service is the service number you use when placing an order. rate is your account-specific price per 1000 units (USD); min and max are the minimum and maximum quantity for one order. type is Default (standard), a service type with extra order fields (Package, SEO, Custom Comments, Mentions, Mentions with Hashtags, Mentions Custom List, Mentions Hashtag, Mentions User Followers, Mentions Media Likers, Poll, Comment Replies, Web Traffic; see Service types) or Subscriptions (subscription); refill and cancel are each true when the service accepts that request through the API (action=refill, action=cancel), otherwise false. dripfeed true means drip-feed orders can be placed on this service with runs and interval.

Example response
[
    {
        "service": 1,
        "name": "Instagram Followers",
        "type": "Default",
        "category": "Instagram",
        "rate": "0.90",
        "min": "50",
        "max": "10000",
        "refill": true,
        "cancel": true,
        "dripfeed": true
    },
    {
        "service": 2,
        "name": "Facebook Likes",
        "type": "Default",
        "category": "Facebook",
        "rate": "8",
        "min": "10",
        "max": "1500",
        "refill": false,
        "cancel": false,
        "dripfeed": false
    },
    {
        "service": 3,
        "name": "Instagram Custom Comments",
        "type": "Custom Comments",
        "category": "Instagram",
        "rate": "12",
        "min": "5",
        "max": "500",
        "refill": false,
        "cancel": true,
        "dripfeed": false
    }
]

New order

add Required unless marked Optional
Service type
key
Your API key
action
add
service
Service number (the service value in the service list)
link
Link of the page to act on, or username (up to 191 characters)
quantity
Quantity: a whole number between the service's min and max values.
runsOptional
Drip-feed order: number of runs (2 to 1000). Only for dripfeed enabled services, sent together with interval.
intervalOptional
Drip-feed order: minutes between two runs (1 to 10080). Sent together with runs.

order is your order number; use it to check the status. The order amount is deducted from your balance immediately. For drip-feed orders, runs and interval are sent together (only for dripfeed enabled services); in this case order is the order number of the first run. The total amount (run price x runs) is deducted immediately; later runs are not charged separately, and they are queued interval minutes apart.

If you send runs or interval to a service that does not support drip-feed, the order is not accepted and {"error": "Drip-feed is not available for this service"} is returned.

Subscription (Subscriptions): For services with type Subscriptions, do not send link or quantity; send username (the username of the account to follow), min and max (minimum and maximum quantity per post, within the service limits), posts (maximum number of new posts to process; required; there are no unlimited subscriptions), old_posts (optional, number of existing posts to process), delay (minutes: 0, 5, 10, 15, 20, 30, 40, 50, 60, 90, 120, 150, 180, 210, 240, 270, 300, 360, 420, 480, 540 or 600) and expiry (optional, dd/mm/yyyy, after today). The response is {"order": subscription id}. This number is not an order number and starts from 1000000001.

Fee difference: Unlike PerfectPanel, a subscription cannot be opened on this panel without a number of posts, and the fee is (posts + old_posts) x max x price / 1000, charged immediately when the subscription is opened; the range is billed at the maximum quantity. When a subscription is completed, expires or is canceled, the amount for unprocessed posts is refunded.

Error responses:

Incorrect request
a required parameter is missing, the quantity is not a whole number, runs or interval was sent on its own
Incorrect service ID
service not found or not available for sale
Incorrect link
link is longer than 191 characters
Quantity less than minimal 50
quantity is below the service's minimum order quantity
Quantity more than maximal 10000
quantity is above the service's maximum order quantity
Not enough funds on balance
your balance is insufficient
Drip-feed is not available for this service
service does not support drip-feed
Runs less than minimal 2 Runs more than maximal 1000
number of runs is outside the limits
Interval less than minimal 1 Interval more than maximal 10080
interval is outside the limits
Posts is required (unlimited subscriptions are not available)
in a subscription, posts is missing; unlimited subscriptions are not available
Min less than minimal 10 Max more than maximal 1000 Max less than minimal 10
subscription quantity is outside the limits
Incorrect username Incorrect posts Incorrect delay Incorrect expiry date
subscription field is invalid
Incorrect comments Incorrect usernames
a field of a service type with extra order fields has the wrong format (see Service types)
Sample request
curl -X POST https://smmlunex.com/api/v2 \
     -d key=YOUR_API_KEY \
     -d action=add \
     -d service=1 \
     -d link=https://instagram.com/username \
     -d quantity=1000
Example response
{
    "order": 23501
}

Order status

status Required unless marked Optional

If you query with a subscription number (starting from 1000000001), the response is in this form: {"status", "expiry", "posts", "orders"}. Fields: status (Active, Paused, Completed, Expired or Canceled), expiry (dd/mm/yyyy or empty), posts (number of processed posts) and orders (order numbers of this subscription's post orders). Only your own subscriptions can be queried.

key
Your API key
action
status
order
Order number

charge is the net charge: order amount minus the refunded amount (the order amount itself when nothing was refunded), start_count is the start count, remains is the remaining quantity, currency is the currency. You can only query your own orders.

Status values (status)

Pending
Pending
Processing
Processing
In progress
In progress
Completed
Completed
Partial
Partial
Canceled
Canceled
Refunded
Refunded

Error responses:

Incorrect request
order was not sent
Incorrect order ID
order not found or does not belong to you
Example response
{
    "charge": "0.27819",
    "start_count": "3572",
    "status": "Partial",
    "remains": "157",
    "currency": "USD"
}

Status of multiple orders

status Required unless marked Optional
key
Your API key
action
status
orders
Comma-separated order numbers (up to 100)

The response is an object keyed by the numbers you sent. For numbers that are not found or do not belong to you, error is returned.

Error responses:

Incorrect request
more than 100 numbers were sent; the whole request is rejected
Example response
{
    "1": {
        "charge": "0.27819",
        "start_count": "3572",
        "status": "Partial",
        "remains": "157",
        "currency": "USD"
    },
    "10": {
        "error": "Incorrect order ID"
    },
    "100": {
        "charge": "1.44219",
        "start_count": "234",
        "status": "In progress",
        "remains": "10",
        "currency": "USD"
    }
}

Balance

balance Required unless marked Optional
key
Your API key
action
balance
Example response
{
    "balance": "100.84292",
    "currency": "USD"
}

Refill

refill Required unless marked Optional

Opens a refill request for one of your Completed or Partial orders when its service allows refill (the service's refill value in the service list is true). The response is the refill number; follow the request with action=refill_status.

{"error": "Refill is not available for this order"} is returned when the service does not allow refill, the order belongs to a subscription or a drip-feed order, the order is not Completed or Partial, a refill request for the order is already open, the last refill of the order was completed less than 24 hours ago, you already have 50 open refill and cancel requests, or refill requests through the API are turned off for your account.

key
Your API key
action
refill
order
Order number
ordersOptional
Instead of order: comma-separated order numbers (up to 100)
Sample response (with order)
{
    "refill": 1
}
Sample response (with orders)
[
    {
        "order": 1,
        "refill": 1
    },
    {
        "order": 2,
        "refill": {
            "error": "Refill is not available for this order"
        }
    },
    {
        "order": 3,
        "refill": {
            "error": "Incorrect order ID"
        }
    }
]

Refill status

refill_status Required unless marked Optional
key
Your API key
action
refill_status
refill
Refill number
refillsOptional
Instead of refill: comma-separated refill numbers (up to 100)

status is one of Pending, In progress, Completed, Rejected or Error. Only your own refills can be queried; any other number returns Refill not found.

Sample response (with refill)
{
    "status": "Completed"
}
Sample response (with refills)
[
    {
        "refill": 1,
        "status": "Completed"
    },
    {
        "refill": 2,
        "status": {
            "error": "Refill not found"
        }
    }
]

Cancel

cancel Required unless marked Optional

Opens a cancel request for each order whose service allows cancel (the service's cancel value in the service list is true) and whose status is Pending, In progress or Processing. "cancel": 1 means the request was opened; it is not an immediate cancellation and nothing is refunded yet. When the provider cancels the order, its status becomes Canceled (or Partial when part of it was already delivered) and the undelivered part is refunded to your balance; follow the result with action=status.

Cancel is not available for this order is returned for an order when its service does not allow cancel, the order belongs to a subscription or a drip-feed order, the order has another status, a cancel request for the order is already open, or you already have 50 open refill and cancel requests.

key
Your API key
action
cancel
orders
Comma-separated order numbers (up to 100)
Example response
[
    {
        "order": 2,
        "cancel": 1
    },
    {
        "order": 9,
        "cancel": {
            "error": "Incorrect order ID"
        }
    },
    {
        "order": 5,
        "cancel": {
            "error": "Cancel is not available for this order"
        }
    }
]

Error messages

error

Errors are returned with HTTP 200 as a JSON object with an "error" field. Check every response for it.

Invalid API key
The API key was not sent, is incorrect, or your account is closed
Incorrect request
action is missing or unknown, a required parameter is missing, the quantity is not a whole number, runs or interval was sent on its own, or more than 100 numbers were sent in one request
Incorrect service ID
Service not found or not available for sale
Incorrect link
The link is longer than 191 characters
Quantity less than minimal N
Quantity is below the service's minimum order quantity (N)
Quantity more than maximal N
Quantity is above the service's maximum order quantity (N)
Not enough funds on balance
Your balance is not enough for this order
Drip-feed is not available for this service
The service does not support drip-feed; runs and interval are not accepted for this service
Runs less than minimal 2
Number of runs is below 2
Runs more than maximal 1000
Number of runs is above 1000
Interval less than minimal 1
Interval is shorter than 1 minute
Interval more than maximal 10080
Interval is longer than 10080 minutes (one week)
Incorrect order ID
Order not found or does not belong to you
Refill is not available for this order
The service does not allow refill, or this order cannot be refilled now (see Refill)
Refill not found
There is no refill with this number
Cancel is not available for this order
The service does not allow cancel, or this order cannot be canceled now (see Cancel)
Incorrect <field>
A field of a service type with extra order fields has the wrong format, for example Incorrect comments or Incorrect usernames (see Service types)
Internal server error
An unexpected server error occurred (HTTP 500). The result of the request is unclear, so check your balance before sending the order again

Order statuses

Pending
Pending
Processing
Processing
In progress
In progress
Completed
Completed
Partial
Partial
Canceled
Canceled
Refunded
Refunded