Tài liệu API

Mọi chức năng của panel đều dùng được qua hai API riêng biệt. Cả hai dùng chung tài khoản, số dư và danh sách dịch vụ; điểm khác nhau nằm ở định dạng và tính năng.

Mọi chức năng của panel đều dùng được qua hai API riêng biệt. Cả hai dùng chung tài khoản, số dư và danh sách dịch vụ; điểm khác nhau nằm ở định dạng và tính năng.

Vì sao có hai API?

API đại lý cổ điển (v2) mà cả ngành đang dùng gửi form tới một endpoint duy nhất và luôn trả về HTTP 200. Đó đúng là định dạng mà các phần mềm panel dựng sẵn mong đợi, nên chúng tôi giữ nguyên. Còn lập trình viên tự xây hệ thống thì liên tục vướng giới hạn của nó: không phân biệt được các loại lỗi, danh sách dịch vụ trả về nguyên một khối, và phải gọi kiểm tra trạng thái đơn hàng liên tục không dứt. v3 ra đời chính là dành cho họ.

API cũ sẽ không bị ngừng. Không có ngày ngừng hỗ trợ; bạn không bao giờ phải sửa một tích hợp đang chạy tốt.

So sánh

Tiêu chíAPI cũ (v2)API mới (v3)
Kiểu thiết kếMột endpoint, gửi form, tham số actionREST theo tài nguyên, body JSON
Mã trạng thái HTTPLuôn là 200, kể cả khi lỗiMã thật (400, 401, 402, 404, 409, 429, 502)
LỗiVăn bản tự dotype + code cố định + thông báo theo ngôn ngữ + param + doc_url
Trạng thái đơn hàngChỉ có văn bản theo ngôn ngữGiá trị cố định cho máy xử lý, kèm nhãn hiển thị riêng
Mô tả dịch vụKhông cóMô tả bằng 16 ngôn ngữ, thời gian trung bình, nền tảng, danh mục
Trường của đơn hàngĐoán từ tên loại dịch vụMỗi dịch vụ công bố schema trường riêng
Đơn vị tính giáKhông ghi rõ (dễ gây sai lệch 1.000 lần với dịch vụ gói)Ghi rõ per_1000 hoặc per_order
Danh sách dịch vụMọi dịch vụ trong một responseBộ lọc kèm phân trang bằng cursor
Chống đơn trùngKhông cóIdempotency-Key
Cập nhật trạng tháiGọi kiểm tra liên tụcWebhook có chữ ký hoặc luồng sự kiện
SchemaKhông cóOpenAPI 3.1
Ngôn ngữTiếng Anh và tiếng Thổ Nhĩ Kỳ (URL riêng)16 ngôn ngữ (qua header hoặc tham số)
Chất lượng dịch vụKhông cóĐiểm, độ tin cậy và bằng chứng cho từng dịch vụ; danh sách xếp hạng

Nên dùng API nào?

API cũ (v2)

Chọn API cũ nếu bạn dùng phần mềm panel dựng sẵn, bot hoặc panel đại lý. Phần lớn chỉ yêu cầu đổi URL API và key, vài phút sau là chạy được.

API mới (v3)

Chọn v3 nếu bạn tự viết ứng dụng, cửa hàng hoặc công cụ tự động hóa. Xử lý lỗi, chống đơn trùng và thông báo đều có sẵn; bạn còn có thể dựng form đặt hàng thẳng từ schema của dịch vụ.

Bắt đầu

  1. 1Tạo API key ở tab API key.
  2. 2Lấy danh sách dịch vụ, đọc id và schema trường của dịch vụ bạn cần.
  3. 3Kiểm tra đơn hàng bằng preview trước, rồi mới tạo đơn.
  4. 4Đăng ký webhook hoặc đọc luồng sự kiện để nắm được các thay đổi trạng thái.

Lỗi (48)

MãTrạng tháiMô tả
missing_api_key401Chưa cung cấp API key. Vui lòng gửi key theo dạng 'Authorization: Bearer <key>'.
invalid_api_key401API key bạn cung cấp không hợp lệ.
revoked_api_key401API key này đã bị thu hồi và không thể dùng được nữa.
account_banned403Tài khoản này đã bị cấm.
account_suspended403Tài khoản này đang bị tạm khóa.
insufficient_scope403API key này không có quyền truy cập endpoint này.
invalid_json400Body của request không phải JSON hợp lệ.
unsupported_content_type415Content-Type không được hỗ trợ. Vui lòng dùng application/json hoặc application/x-www-form-urlencoded.
method_not_allowed405Endpoint này không cho phép phương thức HTTP này.
payload_too_large413Body của request quá lớn.
missing_parameter400Thiếu một tham số bắt buộc.
invalid_parameter400Một tham số có giá trị không hợp lệ.
invalid_quantity400Số lượng không phải số nguyên dương hợp lệ.
quantity_out_of_range400Số lượng nằm ngoài phạm vi cho phép của dịch vụ này.
invalid_comments400Trường bình luận đang trống hoặc có quá nhiều dòng.
invalid_username400Tên người dùng không hợp lệ với dịch vụ này.
invalid_subscription400Tham số của gói tự động không hợp lệ.
invalid_runs400Giá trị 'runs' không hợp lệ cho drip-feed.
invalid_interval400Giá trị 'interval' không hợp lệ cho drip-feed.
dripfeed_not_supported400Dịch vụ này không hỗ trợ drip-feed.
missing_required_field400Thiếu một trường bắt buộc của loại dịch vụ này, hoặc trường đó không hợp lệ.
service_inactive400Dịch vụ này hiện không nhận đơn.
invalid_cursor400Cursor phân trang không hợp lệ.
invalid_limit400Tham số 'limit' nằm ngoài phạm vi cho phép.
invalid_webhook_url400URL webhook phải là một địa chỉ https:// công khai.
invalid_events400Một hoặc nhiều loại sự kiện được yêu cầu không xác định.
batch_too_large400Request hàng loạt có quá nhiều mục.
cancel_not_supported400Dịch vụ này không hỗ trợ hủy đơn.
refill_not_supported400Dịch vụ này không có bảo hành.
unknown_endpoint404Endpoint không tồn tại. Xem tài liệu tham chiếu API để biết các đường dẫn hiện có.
service_not_found404Không có dịch vụ nào với id này.
order_not_found404Tài khoản của bạn không có đơn hàng nào với id này.
refill_not_found404Tài khoản của bạn không có yêu cầu bảo hành nào với id này.
webhook_not_found404Tài khoản của bạn không có endpoint webhook nào với id này.
order_not_cancelable409Không thể hủy đơn hàng này nữa do trạng thái hiện tại của đơn.
cancel_rejected409Nhà cung cấp đã từ chối yêu cầu hủy đơn.
order_not_completed409Chỉ có thể yêu cầu bảo hành cho đơn hàng đã hoàn thành.
idempotency_key_reuse409Idempotency-Key này đã được dùng với một body request khác.
idempotency_in_progress409Request với Idempotency-Key này vẫn đang được xử lý. Vui lòng thử lại sau giây lát.
webhook_limit_reached409Bạn đã đạt số lượng endpoint webhook tối đa.
insufficient_balance402Số dư không đủ cho đơn hàng này.
rate_limit_exceeded429Đã vượt giới hạn tần suất. Xem header Retry-After trong response.
provider_error502Nhà cung cấp phía trên (upstream) trả về lỗi. Vui lòng thử lại.
refill_failed502Nhà cung cấp đã từ chối yêu cầu bảo hành.
service_temporarily_unavailable503Dịch vụ này tạm thời không khả dụng. Vui lòng thử lại sau.
internal_error500Đã xảy ra lỗi ngoài dự kiến ở phía chúng tôi.