Dành cho lập trình viên & reseller

Likesub360 API — chuẩn SMM Panel.

Tích hợp Likesub360 vào hệ thống của bạn qua Panel API — tuân thủ chuẩn SMM Panel, chuyển từ panel cũ chỉ cần đổi URL.

Giới thiệuv2

v2 tuân thủ chuẩn SMM Panel quen thuộc — một endpoint duy nhất, form-encoded body, key + action. Mục tiêu là cho phép bạn chuyển từ các panel SMM khác sang Likesub360 không sửa code — chỉ đổi domain và key.

Tại sao v2? Trong hệ sinh thái SMM, rất nhiều panel reseller đã viết code theo chuẩn này. Chúng tôi giữ tương thích 100% với spec gốc để bạn không phải viết lại.

Endpoint

likesub360.vn/api/v2

Một endpoint cho mọi action

Method

POST

application/x-www-form-urlencoded

Currency

USD only

Hệ thống tự quy đổi VND ↔ USD

Rate limit

60 / phút

10.000 / ngày mỗi API key

POSThttps://likesub360.vn/api/v2

Xác thực

Mọi request gửi key trong body (không phải header). Có thể dùng cùng key với v1 — chỉ cần copy giá trị. Key là chuỗi 40 ký tự base62 không prefix.

Required fields
key=3kQp7xN2hVfL8mYwB1tRzAcEgUjK5sDoXrM4nPiF&action=balance

Mã lỗi

v2 luôn trả HTTP 200 — kể cả khi lỗi. Reseller code expect đúng format này, nên backend không bao giờ ném 4xx/5xx ra. Lỗi được encode trong body:

Error body
{ "error": "Thiếu tham số 'service'" }

Các thông điệp lỗi thường gặp (tiếng Việt, sinh từ BusinessException phía server):

Thông điệpÝ nghĩa
API key không hợp lệField key thiếu, sai, hoặc đã bị rotate/revoke.
Thiếu tham số 'action'Body không có field action.
Action không hợp lệ: <name>Action không thuộc 6 action chuẩn (services, balance, add, status, cancel, refill).
Thiếu tham số 'service' / 'link' / 'quantity' / 'order' / 'orders'Field bắt buộc của action đang gọi không có.
Tham số '<field>' không hợp lệKhông parse được sang số nguyên (service, quantity, order).
Số dư ví không đủWallet không đủ tiền để hold cho đơn.
Không tìm thấy đơnOrder không tồn tại hoặc không thuộc tài khoản của API key.
Chỉ có thể yêu cầu bảo hành cho đơn đã hoàn thànhGọi refill khi đơn chưa ở trạng thái Completed/Partial.
Vui lòng chờ đủ 24 giờ kể từ khi đơn hoàn thành…Đơn phải hoàn thành tối thiểu 24h mới nhận refill (để lượng tương tác ổn định).
Đơn đã hết thời hạn bảo hànhHết warranty window — hoặc gói không hỗ trợ refill.
Mỗi đơn chỉ được yêu cầu bảo hành 1 lần / 24 giờĐã có refill chạy hoặc vừa hoàn tất trong 24h cho đơn này.
Đã vượt giới hạn requestVượt rate limit 60/phút hoặc 10.000/ngày của API key.

Action: services

Trả về toàn bộ services (mỗi variant = 1 service). Field service chính là ID bạn dùng cho action=add.

POST/api/v2 · action=services

Body parameters

FieldKiểuBắt buộcMô tả
keystringAPI key của bạn.
actionstringGiá trị: services

Request

curl "https://likesub360.vn/api/v2" \
  -X POST \
  -d "key=3kQp7xN2hVfL8mYwB1tRzAcEgUjK5sDoXrM4nPiF" \
  -d "action=services"

Response

200 OK
Body
[
  {
    "service":  103,                       // variantId · integer
    "name":     "FB Like bài viết — Gói cơ bản",
    "type":     "Default",                 // Panel API luôn "Default"
    "category": "Gói cơ bản",              // tên package
    "rate":     "0.7778",                  // USD cho 1000 đơn vị · string 4 decimal
    "min":      100,                       // integer
    "max":      50000,                     // integer
    "refill":   true,
    "cancel":   true
  }
  // ...
]
Panel API hiện expose mọi variant dưới dạng type: "Default" — service-type cần discriminator (REACTIONS, MINUTES) sẽ reject khi gọi add. Reseller nên dùng variant DEFAULT.

Action: balance

POST/api/v2 · action=balance

Request

curl
curl "https://likesub360.vn/api/v2" \
  -d "key=3kQp7xN2hVfL8mYwB1tRzAcEgUjK5sDoXrM4nPiF" \
  -d "action=balance"

Response

Body
{ "balance": "47.65", "currency": "USD" }

balance là số dư khả dụng (đã trừ hold), quy đổi USD theo tỷ giá nội bộ — string 2 chữ số thập phân.

Action: add — tạo đơn

POST/api/v2 · action=add

Body parameters

FieldKiểuBắt buộcMô tả
keystringAPI key.
actionstringadd
serviceintegerService ID (variantId) lấy từ action=services.
linkstringURL công khai của bài / kênh.
quantityintegerSố lượng cần tăng, trong khoảng [min, max].
Panel API add không idempotent (chuẩn industry — mỗi call tạo đơn mới). Cần idempotency thì dùng v1 với header Idempotency-Key.

Request

php · drop-in từ panel cũ
$post = [
  "key"      => $key,
  "action"   => "add",
  "service"  => 103,
  "link"     => "https://facebook.com/yourpage/posts/123",
  "quantity" => 1000,
];
$ch = curl_init("https://likesub360.vn/api/v2");
curl_setopt_array($ch, [
  CURLOPT_POST           => true,
  CURLOPT_POSTFIELDS     => http_build_query($post),
  CURLOPT_RETURNTRANSFER => true,
]);
$res = json_decode(curl_exec($ch), true);
// => [ "order" => 48294 ]

Response

200 OK
Success
{ "order": 48294 }
Error (HTTP vẫn 200, lỗi trong body)
{ "error": "Số dư ví không đủ" }

Action: status — trạng thái đơn

Cùng một action status phục vụ cả 1 đơn và nhiều đơn — khác nhau ở param:

POST/api/v2 · action=status

Body parameters

FieldKiểuBắt buộcMô tả
keystringAPI key.
actionstringstatus
orderintegerKhôngID 1 đơn (dùng khi không gửi orders).
ordersstringKhôngDanh sách ID phân tách bằng dấu phẩy, ví dụ 48294,48293. Có giá trị thì order bị bỏ qua.

Truy vấn 1 đơn

curl
curl "https://likesub360.vn/api/v2" \
  -d "key=3kQp7xN2hVfL8mYwB1tRzAcEgUjK5sDoXrM4nPiF" \
  -d "action=status" \
  -d "order=48294"
Body
{
  "charge":      "0.7778",          // USD · string 4 decimal
  "start_count": 128,                // integer
  "status":      "In progress",
  "remains":     358,                // integer
  "currency":    "USD"
}

Truy vấn nhiều đơn

curl
curl "https://likesub360.vn/api/v2" \
  -d "key=3kQp7xN2hVfL8mYwB1tRzAcEgUjK5sDoXrM4nPiF" \
  -d "action=status" \
  -d "orders=48294,48293,48295"
Body · object keyed theo orderId
{
  "48294": { "charge": "0.7778", "start_count": 128, "status": "In progress", "remains": 358,   "currency": "USD" },
  "48293": { "charge": "1.5556", "start_count": 250, "status": "Completed",   "remains": 0,     "currency": "USD" },
  "48295": { "error": "Không tìm thấy đơn" }
}

Giá trị status nằm trong: Pending, Processing, In progress, Completed, Partial, Canceled. Đơn FAILED ở v1 được map sang Canceled để giữ tương thích với reseller code chỉ biết 6 status chuẩn.

Action: cancel

POST/api/v2 · action=cancel

Yêu cầu huỷ một / nhiều đơn cùng lúc. Action chỉ chuyển trạng thái sang CANCEL_REQUESTED — worker xử lý async (release nếu chưa push, hoặc gọi huỷ phía xử lý). Idempotent.

Body parameters

FieldKiểuBắt buộcMô tả
keystringAPI key.
actionstringcancel
ordersstringDanh sách ID phân tách bằng dấu phẩy. Phải có ít nhất 1 đơn.

Request

curl
curl "https://likesub360.vn/api/v2" \
  -d "key=3kQp7xN2hVfL8mYwB1tRzAcEgUjK5sDoXrM4nPiF" \
  -d "action=cancel" \
  -d "orders=48294,48293"

Response

Body · mảng kết quả theo thứ tự đầu vào
[
  { "order": "48294", "cancel": true },
  { "order": "48293", "cancel": { "error": "Không tìm thấy đơn" } }
]
Đơn huỷ thành công: "cancel": true. Đơn lỗi (không tồn tại, không thuộc tài khoản, không huỷ được): "cancel": { "error": "..." }. Field order giữ nguyên string từ input.

Action: refill

POST/api/v2 · action=refill

Yêu cầu chạy bù (bảo hành) cho một / nhiều đơn đã hoàn thành. Hệ thống tạo yêu cầu rồi xử lý async — đơn được chạy bù phần tương tác đã hao hụt. Giống add, action này không idempotent — mỗi call là một yêu cầu mới (server tự chặn trùng bằng các điều kiện bên dưới).

Điều kiện tiếp nhận. Đơn phải hoàn thành tối thiểu 24 giờ (để lượng tương tác ổn định trước khi chạy bù), gói có hỗ trợ bảo hành, còn trong thời hạn bảo hành, không có yêu cầu nào đang chạy, và mỗi đơn chỉ được 1 lần / 24 giờ. Không thoả → trả lỗi (xem Mã lỗi).

Body parameters

FieldKiểuBắt buộcMô tả
keystringAPI key.
actionstringrefill
orderintegerKhôngID 1 đơn (dùng khi không gửi orders).
ordersstringKhôngDanh sách ID phân tách bằng dấu phẩy, ví dụ 48294,48293. Có giá trị thì order bị bỏ qua.

Chạy bù 1 đơn

curl
curl "https://likesub360.vn/api/v2" \
  -d "key=3kQp7xN2hVfL8mYwB1tRzAcEgUjK5sDoXrM4nPiF" \
  -d "action=refill" \
  -d "order=48294"
Success
{ "refill": true }
Error (HTTP vẫn 200, lỗi trong body)
{ "error": "Vui lòng chờ đủ 24 giờ kể từ khi đơn hoàn thành rồi mới yêu cầu bảo hành" }

Chạy bù nhiều đơn

curl
curl "https://likesub360.vn/api/v2" \
  -d "key=3kQp7xN2hVfL8mYwB1tRzAcEgUjK5sDoXrM4nPiF" \
  -d "action=refill" \
  -d "orders=48294,48293"
Body · mảng kết quả theo thứ tự đầu vào
[
  { "order": "48294", "refill": true },
  { "order": "48293", "refill": { "error": "Đơn đã hết thời hạn bảo hành" } }
]
Yêu cầu thành công: "refill": true. Đơn lỗi (chưa đủ 24h, hết bảo hành, không thuộc tài khoản…): "refill": { "error": "..." }. Field order giữ nguyên string từ input.
Cân nhắc nâng cấp. Khi project đã ổn định, chuyển sang v1 để có Idempotency-Key, mã lỗi chi tiết và pagination offset-based. Webhook event đang phát triển — sẽ ra mắt cùng module webhook-out.