API v2
SMM-HELPER API
Standard SMM API v2. Add the URL and your key to the panel you run and services, orders and statuses connect as they are.
- Base URL
https://smm-helper.com/api/v2- Request
- POST recommended (GET works) · form (application/x-www-form-urlencoded) or JSON
- Auth
- key parameter on every request
- Response
- JSON. Errors are {"error": "message"}
- Currency
- USD (deducted from your credit)
- Rate limit
- 300 calls per minute per key
- Balance
- services, deposit, deposit_status and credit work before your first top-up (panel setup, top-ups). Everything else works once you have topped up
Connect the panel you run
Any panel that speaks standard SMM API v2 (Perfect Panel and others) can add us as a provider.
- 1
Add provider
Admin > Providers > Add. API URL: https://smm-helper.com/api/v2, API key: your key.
- 2
Import services
Load our service list, pick services and set your selling price. Our service IDs don't change.
- 3
Fund your credit
Orders are paid from your credit here. Top up in Dashboard > Add funds.
Code example: add an order
Orders 1,000 of service #2145 (Instagram Real Followers - APP Data - Instant - Speed : 100-300K/D - NoRefill). Replace YOUR_API_KEY with your key.
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=add \ -d service=2145 \ -d link=https://www.tiktok.com/@yourbrand/video/123 \ -d quantity=1000
<?php
$ch = curl_init('https://smm-helper.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'add',
'service' => 2145,
'link' => 'https://www.tiktok.com/@yourbrand/video/123',
'quantity' => 1000,
]),
]);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $res['order'] ?? $res['error'];import requests
res = requests.post("https://smm-helper.com/api/v2", data={
"key": "YOUR_API_KEY",
"action": "add",
"service": 2145,
"link": "https://www.tiktok.com/@yourbrand/video/123",
"quantity": 1000,
}, timeout=30).json()
print(res.get("order") or res.get("error"))const res = await fetch("https://smm-helper.com/api/v2", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
key: process.env.SMM_HELPER_API_KEY,
action: "add",
service: 2145,
link: "https://www.tiktok.com/@yourbrand/video/123",
quantity: 1000,
}),
}).then((r) => r.json());
console.log(res.order ?? res.error);action=servicesService list
All services you can order. rate is USD per 1,000. Service IDs don't change, so you can map them in your panel as is.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "services" |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=services
Response
[
{
"service": 2145,
"name": "Instagram Real Followers - APP Data - Instant - Speed : 100-300K/D - NoRefill",
"type": "Default",
"category": "Instagram - Follower (Working)",
"rate": "0.308",
"min": "10",
"max": "1000000",
"refill": false,
"cancel": true
},
{
"service": 2146,
"name": "Instagram Followers - Old Accounts With Posts - Instant - Speed : 1K/D - NoRefill",
"type": "Default",
"category": "Instagram - Follower (Working)",
"rate": "0.8624",
"min": "100",
"max": "10000",
"refill": false,
"cancel": true
},
…
]action=addAdd order
The cost is deducted from your credit and the order ID is returned. If part of an order can't be delivered, the undelivered quantity is refunded to your credit.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "add" |
| service | Yes | Service ID (service from services) |
| link | Yes | Link to the profile, post, video or page (or @username for some profile services) |
| quantity | Yes | Quantity within the service's min and max (omit for Custom Comments) |
| comments | No | Custom Comments only: comments separated by \n. The number of lines is the quantity |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=add \ -d service=2145 \ -d link=https://www.tiktok.com/@yourbrand/video/123 \ -d quantity=1000
Response
{
"order": 23501
}For Custom Comments services (e.g. #2124) send comments (one per line) instead of quantity.
action=statusOrder status
Progress of one order. charge is the amount actually spent (after refunds), remains is the quantity left, progress is percent done and delivered is the quantity delivered. Updated every minute.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "status" |
| order | Yes | Order ID |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=status \ -d order=23501
Response
{
"charge": "0.31",
"start_count": "1520",
"status": "In progress",
"remains": "240",
"progress": "76",
"delivered": "760",
"currency": "USD"
}action=statusMultiple order status
Up to 100, separated by commas. Each order gets its own result; unknown IDs get an error in their slot.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "status" |
| orders | Yes | Order IDs separated by commas (up to 100) |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=status \ -d orders=23501,23502,99999
Response
{
"23501": {
"charge": "0.31",
"start_count": "1520",
"status": "Completed",
"remains": "0",
"progress": "100",
"delivered": "1000",
"currency": "USD"
},
"23502": {
"charge": "0.18",
"start_count": "870",
"status": "Partial",
"remains": "400",
"progress": "60",
"delivered": "600",
"currency": "USD"
},
"99999": {
"error": "Incorrect order ID"
}
}action=cancelCancel (stop) orders
Stops orders in progress. Before start: full refund; in progress: the undelivered quantity is refunded and the order ends as Canceled or Partial. Finished orders can't be canceled.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "cancel" |
| orders | Yes | Order IDs separated by commas (up to 100; order also works for one) |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=cancel \ -d orders=23501,23502
Response
[
{
"order": 23501,
"cancel": 1
},
{
"order": 23502,
"cancel": {
"error": "Order is already completed or canceled"
}
}
]action=refillRefill an order
Asks for a refill of a completed or partial order on a refill service. One refill can run per order, and a new request is possible 24 hours after the last one.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "refill" |
| order | Yes | Order ID (or orders: up to 100 IDs separated by commas) |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=refill \ -d order=23501
Response
{
"refill": 1
}action=refill_statusRefill status
Status of a refill you requested: Pending, In progress, Completed or Rejected.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "refill_status" |
| refill | Yes | Refill ID (or refills: up to 100 IDs separated by commas) |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=refill_status \ -d refill=1
Response
{
"status": "Completed"
}action=depositCreate a top-up
Creates a USDT (TRC20) top-up. Send exactly amount (6 decimals) to address and it's credited automatically (plus bonus if eligible), usually within 1 to 2 minutes. Minimum 25 USD, maximum 5,000 USD, one pending top-up at a time, valid until expires_at.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "deposit" |
| amount | Yes | Amount in USD (25 to 5,000) |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=deposit \ -d amount=300
Response
{
"deposit": "K7Q2M9XD",
"status": "Pending",
"currency": "USDT",
"network": "TRC20",
"address": "TXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"amount": "300.776583",
"bonus": "15.03",
"credited": "0.00",
"txid": null,
"created_at": "2026-10-07T06:41:14.203Z",
"expires_at": "2026-10-07T07:41:14.202Z"
}action=deposit_statusTop-up status
Status of a top-up. Completed means credited and bonus were added to your credit. Pending · Completed · Expired · Canceled · Rejected.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "deposit_status" |
| deposit | Yes | Top-up code (deposit in the deposit response, e.g. K7Q2M9XD) |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=deposit_status \ -d deposit=K7Q2M9XD
Response
{
"deposit": "K7Q2M9XD",
"status": "Completed",
"currency": "USDT",
"network": "TRC20",
"address": "TXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"amount": "300.776583",
"bonus": "15.03",
"credited": "300.776583",
"txid": "4c1f…e93a",
"created_at": "2026-10-07T06:41:14.203Z",
"expires_at": "2026-10-07T07:41:14.202Z"
}action=balanceBalance
Current credit in USD.
| Parameter | Required | Description |
|---|---|---|
| key | Yes | Your API key |
| action | Yes | "balance" |
Request
curl -X POST https://smm-helper.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=balance
Response
{
"balance": "1250.40",
"currency": "USD"
}Order statuses
| Pending | Received, starting soon |
| Processing | Being prepared |
| In progress | Delivering |
| Completed | Done |
| Partial | Partly delivered; the rest is refunded to your credit |
| Canceled | Canceled; fully refunded to your credit |
Errors
Errors come as {"error": "…"}. Only key and rate-limit errors use HTTP 401/429; the rest return 200.
| error | HTTP | Cause |
|---|---|---|
| The API is available after your first top-up … | 200 | Called anything other than services, deposit, deposit_status or credit before the first top-up |
| Invalid API key | 401 | Missing or wrong key (including an old key after regenerating) |
| Too many requests | 429 | More than 300 calls per minute per key |
| Incorrect request | 200 | Missing or unknown action |
| Incorrect service ID | 200 | service is not a number |
| This service is not available. | 200 | Service is not on sale |
| Enter the profile, channel or page link, or the @username. | 200 | link is empty or not a valid link or @username (profile services) |
| Enter the full link to the post, video or page. | 200 | link is empty or not a valid link (other services) |
| Quantity must be between {min} and {max}. | 200 | quantity is outside the service's min and max |
| Please enter at least one comment. | 200 | Custom Comments without comments |
| Not enough credit. | 200 | Not enough credit (top up) |
| Incorrect order ID | 200 | Not your order or unknown ID |
| Order is already completed or canceled | 200 | cancel: the order already finished |
| This order can't be canceled now | 200 | cancel: the fulfilment system can't stop it now |
| Minimum deposit is 25 USDT. | 200 | deposit: below the minimum |
| You already have a pending deposit. … | 200 | deposit: a top-up is already pending (see deposit in the response) |
| Incorrect deposit ID | 200 | deposit_status: not yours or unknown code |