Bỏ qua điều hướng
SMM Velox

SMM Velox · API V1

Tài liệu API

Kết nối website của bạn với danh mục, ví VND và đơn hàng SMM Velox qua API.

Bắt đầu kết nối

POST · VND · HTTPS

Gửi key/action trong body application/x-www-form-urlencoded hoặc JSON. Không nhận query trên URL. Production bắt buộc HTTPS. GET không hỗ trợ. Ví dụ chỉ dùng dữ liệu minh họa.

Địa chỉ API

https://smmvelox.com/api/v2
Ví dụ cURL
curl -X POST 'https://smmvelox.com/api/v2' \
  --data-urlencode 'key=YOUR_API_KEY' \
  --data-urlencode 'action=add' \
  --data-urlencode 'service=123' \
  --data-urlencode 'link=https://example.com/post' \
  --data-urlencode 'quantity=1000' \
  --data-urlencode 'client_order_id=YOUR_UNIQUE_ORDER_ID' \
  --data-urlencode 'max_charge=11550'

Xác thực API Key

Giữ key bí mật, chỉ gửi trong body. Không đưa vào URL, mã frontend hoặc chia sẻ cho người khác. Thay/thu hồi key có hiệu lực ngay. Tài khoản phải hoạt động và xác minh email.

API Key chỉ được gửi qua HTTPS trong phần thân POST; không đưa key vào URL hoặc mã phía trình duyệt.

API luôn báo giá và thanh toán bằng VND. USD trên giao diện chỉ để tham khảo.

POST

Danh sách dịch vụ

V1 chỉ công bố Default có mapping/đơn vị đã xác minh: rate là VND / 1.000 lượt; charge = rate × quantity / 1.000. service là ID nội bộ tương ứng DV-ID; order là chuỗi ID đơn nội bộ ổn định. Không trả ID nguồn. Tiền dùng chuỗi decimal chính xác tối đa 12 chữ số lẻ.

Yêu cầu (body)
key=YOUR_API_KEY&action=services
Phản hồi JSON
[
  {
    "service": 123,
    "name": "Example",
    "desc": "",
    "type": "Default",
    "category": "Facebook",
    "platform": "facebook",
    "rate": "11550.000000000000",
    "rate_unit": "per_1000",
    "min": "100",
    "max": "100000",
    "refill": false,
    "cancel": false,
    "dripfeed": false,
    "currency": "VND"
  }
]
POST

Kiểm tra số dư

API luôn báo giá và thanh toán bằng VND. USD trên giao diện chỉ để tham khảo.

Yêu cầu (body)
key=YOUR_API_KEY&action=balance
Phản hồi JSON
{
  "balance": "100000.000000000001",
  "currency": "VND"
}
POST

Tạo đơn hàng

add yêu cầu service nguyên dương, link URL http/https tối đa 2.000 ký tự, quantity nguyên trong min/max. Không nhận price/rate/discount/currency/user_id/status/provider hoặc trường ngoài contract. Batch status tối đa 100 ID.

Tham sốYêu cầuÝ nghĩa
keyBắt buộcKhóa API của tài khoản
actionBắt buộcGiá trị add
serviceBắt buộcID dịch vụ trong danh mục API
linkBắt buộcLiên kết http/https đến nội dung cần xử lý
quantityBắt buộcSố lượng nguyên trong min/max
client_order_idTùy chọnMã duy nhất theo tài khoản giúp tránh đặt trùng
idempotency_keyTùy chọnTên thay thế cho client_order_id; chỉ gửi một trong hai, không gửi cả hai
max_chargeTùy chọnMức phí tối đa được chấp nhận (chuỗi VND), không phải giá tự đặt
Yêu cầu (body)
key=YOUR_API_KEY&action=add&service=123&link=https://example.com/post&quantity=1000&client_order_id=YOUR_UNIQUE_ORDER_ID
Phản hồi JSON
{
  "order": "456"
}
POST

Trạng thái một đơn

Trạng thái Pending/Processing/In progress/Completed/Partial/Canceled dựa trên bằng chứng. Đơn review/chưa rõ trả Pending và review_required=true. start_count/remains là null khi thiếu bằng chứng, không giả 0. charge lấy snapshot đã trả.

Yêu cầu (body)
key=YOUR_API_KEY&action=status&order=456
Phản hồi JSON
{
  "charge": "11550",
  "status": "Pending",
  "start_count": null,
  "remains": null,
  "currency": "VND",
  "review_required": false
}
POST

Trạng thái nhiều đơn

Trả kết quả dạng đối tượng theo từng ID; ID không tồn tại có lỗi riêng. Tối đa 100 ID mỗi lần.

Yêu cầu (body)
key=YOUR_API_KEY&action=status&orders=456,999
Phản hồi JSON
{
  "456": {
    "charge": "11550",
    "status": "Pending",
    "start_count": null,
    "remains": null,
    "currency": "VND",
    "review_required": false
  },
  "999": {
    "error": "Incorrect order ID"
  }
}
400

Thao tác chưa hỗ trợ

Package/per_unit, custom comments, subscriptions, dripfeed chưa hỗ trợ và bị ẩn. cancel/refill/refill_status trả HTTP 400 Action is not supported; không đổi trạng thái hoặc tự hoàn tiền. Các cờ cancel/refill/dripfeed luôn false ở V1.

Yêu cầu (body)
key=YOUR_API_KEY&action=cancel
Phản hồi JSON
{
  "error": "Action is not supported"
}

Quy tắc đặt đơn và trạng thái

Nên gửi client_order_id (hoặc idempotency_key), 1–64 ký tự A–Z/a–z/0–9/_.:-, duy nhất trong tài khoản. Cùng mã và cùng service/link/quantity/max_charge trả đơn cũ; đổi nội dung trả 409. max_charge tùy chọn là chuỗi trần VND, không quyết định giá bán.

Không gửi mã phía khách: mỗi add hợp lệ tạo đơn mới dù nội dung giống hệt. Khi timeout, không tự gửi lại mù quáng; không bảo đảm exactly-once nếu thiếu mã yêu cầu.

Giá API được tính trên máy chủ. Khi có chiết khấu, giá sàn an toàn có thể giới hạn mức giảm thực tế; giá website không thay đổi.

API OFF chặn add kể cả replay; key hợp lệ vẫn đọc services/balance/status. Gửi nhà cung cấp tuân theo gate và hàng đợi hiện có, không cam kết tức thì. Đơn API không sinh hoa hồng Affiliate.

Xử lý lỗi và gửi lại yêu cầu an toàn

Chống xử lý trùng

Khi đặt đơn qua API, mạng có thể ngắt sau lúc hệ thống đã nhận đơn và trừ tiền. Timeout hoặc HTTP 503 không tự chứng minh yêu cầu chưa được xử lý. Hãy dùng một mã duy nhất cho mỗi ý định đặt đơn.

  1. Trước lần add đầu tiên, tạo client_order_id duy nhất (hoặc idempotency_key), lưu lại cùng service, link, quantity và max_charge đã gửi.
  2. Nếu nhận được order ID, lưu ID đó và dùng action=status với order để kiểm tra; không tạo add mới chỉ để hỏi trạng thái.
  3. Nếu timeout hoặc mất phản hồi và chưa có order ID, chỉ thử lại khi kết nối/API sẵn sàng; gửi lại chính xác cùng action=add, mã yêu cầu và toàn bộ tham số ban đầu. Không tạo mã mới.
  4. Nếu API trả order ID sau lần thử lại, sử dụng ID đó để theo dõi. Nếu vẫn chưa rõ, dừng tự động thử lại vô hạn và liên hệ hỗ trợ kèm mã yêu cầu (không gửi API Key).

Không tạo đơn trùng

Đổi client_order_id hoặc không gửi mã có thể tạo thêm đơn và trừ tiền lần nữa. Giữ nguyên cả max_charge khi thử lại; cùng mã nhưng thay đổi service/link/quantity/max_charge sẽ bị từ chối 409. API OFF chặn cả thử lại add; không tự bật API hoặc đổi cấu hình để vượt qua.

Ví dụ add lần đầu hoặc thử lại với CÙNG mã và tham số
curl -X POST 'https://smmvelox.com/api/v2' \
  --data-urlencode 'key=YOUR_API_KEY' \
  --data-urlencode 'action=add' \
  --data-urlencode 'service=123' \
  --data-urlencode 'link=https://example.com/post' \
  --data-urlencode 'quantity=1000' \
  --data-urlencode 'client_order_id=YOUR_UNIQUE_ORDER_ID' \
  --data-urlencode 'max_charge=11550'

Không thể tra cứu status bằng client_order_id; action=status cần order ID. Nếu chưa nhận được ID, chỉ có thể thử lại add an toàn với cùng mã và nội dung đã gửi (khi API sẵn sàng), hoặc liên hệ hỗ trợ.

Ví dụ lỗi JSON và cách xử lý

HTTP 409

Mã đã dùng cho nội dung khác hoặc charge vượt max_charge: dừng, đối chiếu yêu cầu và giá; không tự tạo mã mới để lách lỗi.

Phản hồi JSON
{
  "error": "Client order ID conflicts with an existing request"
}
HTTP 422

Dữ liệu hoặc điều kiện đặt đơn không hợp lệ: xem fields, sửa nguyên nhân trước khi thử một yêu cầu mới; không lặp mù quáng.

Phản hồi JSON
{
  "error": "Invalid request parameters",
  "fields": [
    "quantity"
  ]
}
HTTP 429

Vượt giới hạn: chờ tối thiểu thời gian trong header Retry-After, giảm tần suất và giữ nguyên mã khi thử lại add.

Retry-After: 60

Phản hồi JSON
{
  "error": "Rate limit exceeded"
}
HTTP 503

API đang OFF, nguồn chưa sẵn sàng hoặc lỗi tạm thời: dừng gửi hàng loạt, chờ khôi phục; nếu kết quả add chưa rõ, chỉ thử lại với cùng mã/tham số.

Phản hồi JSON
{
  "error": "API order creation is disabled"
}

Các JSON trên là ví dụ từ các trường hợp thực tế; thông báo error có thể khác tùy nguyên nhân. Mã HTTP và hướng xử lý mới là điều cần kiểm tra.

Mã lỗi HTTP

Phản hồi lỗi dùng JSON có trường error; lỗi xác thực và thông tin nội bộ không được công khai.

HTTPÝ nghĩa
200Thành công (trong batch có thể có lỗi từng ID)
400Action hoặc tham số query không hợp lệ
401API Key không hợp lệ hoặc không được phép
403Kết nối không bảo đảm HTTPS
404Không tìm thấy dịch vụ/đơn hoặc không thuộc tài khoản
405Phương thức HTTP không được hỗ trợ
409Trùng mã yêu cầu với nội dung khác hoặc vượt max_charge
413Nội dung yêu cầu vượt giới hạn dung lượng
415Content-Type không hỗ trợ
422Tham số, giá hoặc điều kiện mua không hợp lệ
429Quá giới hạn yêu cầu, xem Retry-After
503API tắt, chưa cài đặt hoặc dịch vụ tạm chưa sẵn sàng

Bảo mật, giới hạn và lỗi

Tùy chọn: tối đa 20 IPv4/IPv6 chính xác, mỗi dòng một IP. Trống nghĩa là không giới hạn IP. Không hỗ trợ CIDR. Danh sách sai bị từ chối và giữ cấu hình cũ.

Mỗi phút: 60 request/IP trước xác thực; thêm 120 lượt đọc hoặc 15 add theo user và key. Body tối đa 64 KiB. Lỗi 429 có Retry-After. Không tin Forwarded/X-Forwarded-For tự gửi từ client.

FAQ: Lấy key sau đăng nhập. Quên key phải thay mới, không thể xem lại secret cũ. Key nhà cung cấp không dùng ở đây. V1 (30/10/2026): services, balance, add Default và status đơn/batch. Các thao tác sau bán chờ V2 có luồng an toàn.