SMM panel API documentation
The Uploop API follows the format most SMM panels already use with their providers. Send a POST request with your key and an action, and read JSON back.
- POST https://uploopsmm.com/api/v2
- JSON responses
- 120 requests per minute
Basics
| Endpoint | https://uploopsmm.com/api/v2 |
|---|---|
| Method | POST, form-encoded or JSON body |
| Authentication | key parameter. api_token is accepted as an alias. Generate the key under Account › API. |
| Rate limit | 120 requests per minute per key. Repeated invalid keys from one IP are blocked for a minute. |
| Batch size | Up to 100 IDs in status, refill, refill_status and cancel. |
| Currency | US dollars. Rates are per 1,000 units. |
| Not supported | Drip-feed (runs, interval) and custom comment or username lists. Requests that send them are rejected. |
action=services
List every active service with your rate per 1,000.
| Parameter | Description |
|---|---|
action | services |
key | Your API key |
Example response
[
{
"service": 1,
"name": "Instagram Followers [Standard]",
"type": "Default",
"category": "Instagram Followers",
"rate": "0.9000",
"min": "100",
"max": "50000",
"refill": true,
"cancel": true,
"dripfeed": false
}
]action=add
Place an order. The price is charged from your balance.
| Parameter | Description |
|---|---|
action | add |
key | Your API key |
service | Service ID from services |
link | Public link or @handle of the destination |
quantity | Whole number between min and max |
Example response
{
"order": 23501
}action=status
Status of one order (order) or up to 100 orders (orders, comma separated).
| Parameter | Description |
|---|---|
action | status |
key | Your API key |
order | Order ID |
orders | Optional: up to 100 IDs separated by commas |
Example response
{
"charge": "0.450000",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}action=balance
Your current balance.
| Parameter | Description |
|---|---|
action | balance |
key | Your API key |
Example response
{
"balance": "100.840000",
"currency": "USD"
}action=refill
Request a refill for an order whose service carries a refill window.
| Parameter | Description |
|---|---|
action | refill |
key | Your API key |
order | Order ID |
orders | Optional: up to 100 IDs separated by commas |
Example response
{
"refill": "1"
}action=refill_status
Status of a refill request.
| Parameter | Description |
|---|---|
action | refill_status |
key | Your API key |
refill | Refill ID |
refills | Optional: up to 100 IDs separated by commas |
Example response
{
"status": "Completed"
}action=cancel
Cancel orders that have not started, where the service allows it.
| Parameter | Description |
|---|---|
action | cancel |
key | Your API key |
orders | Up to 100 IDs separated by commas |
Example response
[
{"order": 23501, "cancel": 1}
]Errors
Errors come back as JSON with a single error field, for example {"error": "Not enough funds on balance"} or {"error": "Quantity less than minimal 100"}. A 429 status means the rate limit was hit: wait and retry rather than looping.
Example request
curl -X POST https://uploopsmm.com/api/v2 \
-d key=YOUR_KEY \
-d action=add \
-d service=1 \
-d link=https://www.instagram.com/yourbrand \
-d quantity=1000Poll status on an interval, not in a tight loop, and batch IDs with orders when you track many orders at once.