Developer Resources

SMM Panel API

Build powerful integrations with our RESTful API. Automate order placement, track delivery status, manage refills, and access all 3000+ services programmatically. Perfect for resellers running their own panels, agencies managing multiple clients, or developers building custom solutions.

RESTAPI Type
JSONResponse Format
99.9%Uptime
FreeAPI Access
HTTP MethodPOST (GET is also accepted)
API URLhttps://ufosmm.xyz/api/v2
API KeyCreate an account, then generate a key on the Account page
Content typeapplication/x-www-form-urlencoded (JSON body also accepted)
Response formatJSON. Errors are returned with HTTP 200 as {"error": "message"}
Rate limit120 requests per minute per API key

Service list

ParametersDescription
keyYour API key
actionservices

Rates are per 1000 in USD, with your personal discount and custom rates already applied.

Example response

[
    {
        "service": 4567,
        "name": "TikTok Followers [Exclusive] | 30 Days Refill",
        "type": "Default",
        "category": "TikTok - Followers",
        "rate": "9.00",
        "min": "10",
        "max": "150000",
        "refill": true,
        "cancel": false,
        "dripfeed": true
    },
    {
        "service": 3311,
        "name": "Instagram Comments [Custom]",
        "type": "Custom Comments",
        "category": "Instagram - Comments",
        "rate": "8.00",
        "min": "10",
        "max": "1500",
        "refill": false,
        "cancel": true,
        "dripfeed": false
    }
]

Add order

ParametersDescription
keyYour API key
actionadd
serviceService ID
linkLink to page
quantityNeeded quantity
runs (optional)Runs to deliver (drip-feed): the same order is placed this many times
interval (optional)Interval in minutes between drip-feed runs

The service type of every service is returned by action=services. Orders are validated against the service's min, max and increment; the charge is rate × quantity / 1000 with your personal discount and custom rates applied.

Example response

{
    "order": 23501
}

Order status

ParametersDescription
keyYour API key
actionstatus
orderOrder ID

Possible statuses: Pending, In progress, Processing, Completed, Partial, Canceled, Fail, Error. Canceled, failed and partial orders are refunded to your balance automatically.

Example response

{
    "charge": "0.27",
    "start_count": "3572",
    "status": "Partial",
    "remains": "157",
    "currency": "USD"
}

Multiple orders status

ParametersDescription
keyYour API key
actionstatus
ordersOrder IDs separated by comma (up to 100)

Example response

{
    "1": {
        "charge": "0.27",
        "start_count": "3572",
        "status": "Partial",
        "remains": "157",
        "currency": "USD"
    },
    "10": {
        "error": "Incorrect order ID"
    },
    "100": {
        "charge": "1.44",
        "start_count": "234",
        "status": "In progress",
        "remains": "10",
        "currency": "USD"
    }
}

Create refill

ParametersDescription
keyYour API key
actionrefill
orderOrder ID

Example response

{
    "refill": "1"
}

Create multiple refills

ParametersDescription
keyYour API key
actionrefill
ordersOrder IDs separated by comma (up to 100)

Example response

[
    {
        "order": 1,
        "refill": 1
    },
    {
        "order": 2,
        "refill": {
            "error": "Refill is not available for this order"
        }
    }
]

Get refill status

ParametersDescription
keyYour API key
actionrefill_status
refillRefill ID

Possible statuses: Pending, In progress, Completed, Rejected. Multiple: pass refills with comma-separated IDs and an array is returned.

Example response

{
    "status": "Completed"
}

Cancel orders

ParametersDescription
keyYour API key
actioncancel
ordersOrder IDs separated by comma (up to 100)

Only services with cancel enabled accept the request. When the cancel completes, the order status changes to Canceled and the unspent amount is refunded.

Example response

[
    {
        "order": 9,
        "cancel": 1
    },
    {
        "order": 2,
        "cancel": {
            "error": "Cancel is not available for this order"
        }
    }
]

User balance

ParametersDescription
keyYour API key
actionbalance

Example response

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

Errors

ErrorMeaning
Invalid API keyThe key is missing, wrong, or the account is suspended
Incorrect requestUnknown action parameter
Incorrect service IDThe service does not exist or is disabled
Incorrect order IDThe order does not exist or belongs to another account
Not enough fundsYour balance does not cover the order charge
Minimum quantity is X / Maximum quantity is XQuantity outside the service limits
You already have an active order for this linkThe service does not accept duplicate links while an order is running
Too many requests, slow downRate limit exceeded, retry after a minute

Example code

<?php
// NLO SMM API client - https://ufosmm.xyz/api
class NloApi
{
    public $api_url = 'https://ufosmm.xyz/api/v2';
    public $api_key = 'YOUR_API_KEY';

    public function services()                 { return $this->connect(['action' => 'services']); }
    public function balance()                  { return $this->connect(['action' => 'balance']); }
    public function order($data)               { return $this->connect(array_merge(['action' => 'add'], $data)); }
    public function status($order_id)          { return $this->connect(['action' => 'status', 'order' => $order_id]); }
    public function multiStatus($order_ids)    { return $this->connect(['action' => 'status', 'orders' => implode(',', (array)$order_ids)]); }
    public function refill($order_id)          { return $this->connect(['action' => 'refill', 'order' => $order_id]); }
    public function refillStatus($refill_id)   { return $this->connect(['action' => 'refill_status', 'refill' => $refill_id]); }
    public function cancel($order_ids)         { return $this->connect(['action' => 'cancel', 'orders' => implode(',', (array)$order_ids)]); }

    private function connect($post)
    {
        $post['key'] = $this->api_key;
        $ch = curl_init($this->api_url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($ch);
        curl_close($ch);
        return json_decode($result, true);
    }
}

$api = new NloApi();
$order = $api->order(['service' => 4567, 'link' => 'https://www.tiktok.com/@user', 'quantity' => 1000]);
$status = $api->status($order['order']);
print_r($status);