Thông tin chung

Rate Limit

Để bảo vệ các API, hệ thống đã được cài đặt cơ chế Rate Limit để tránh tình trạng một API được gọi liên tục trong một thời gian ngắn, dẫn đến tắt nghẽn hệ thống.

Hệ thống Rate Limit được sử dụng theo thuật toán Leaky Bucket và có Window Time là 3 giây. Tức là trong vòng 3 giây sẽ bị giới hạn các Request theo bảng bên dưới. Sau 3 giây thì sẽ được reset về 0.

Giới hạn được tính riêng cho từng tổ hợp [Địa chỉ IP] + [HTTP Method] + [Nhóm API (controller)] + [Token xác thực]. Ví dụ các request GET /v1/products và GET /v1/orders được tính ở hai bộ đếm khác nhau.

Chi tiết giới hạn

Bên dưới là số lượng request tối đa theo Window Time (3 giây) theo từng HTTP Method:

  • GET: 30 request / 3 giây
  • POST: 15 request / 3 giây
  • PUT: 15 request / 3 giây
  • DELETE: 3 request / 3 giây
  • PATCH, OPTIONS, HEAD, etc.: 30 request / 3 giây

Một số nhóm API có giới hạn POST cao hơn để phục vụ thao tác hàng loạt:

  • Upload file (POST /v1/files, POST /v1/files/addimagefromurl): 30 request / 3 giây
  • Hội thoại / tin nhắn (POST /v1/marketingconversations/...): 60 request / 3 giây

LƯU Ý: Một số API đặc thù (ví dụ webhook nhận từ đối tác) có cơ chế giới hạn riêng và không áp dụng bảng trên.

Cách xác định khi bị giới hạn

Khi bị giới hạn, hệ thống sẽ trả về HTTP Status Code là 429, body là ["error_rate_limit_exceed"].

Ngoài ra, hệ thống còn trả về Header là "X-Rate-Limit-Limit", "X-Rate-Limit-Remaining" và "X-Rate-Limit-Identifier" (có ở cả response thành công lẫn bị giới hạn).

  • "X-Rate-Limit-Limit": số lượng request có thể gọi trong khoảng thời gian Window Time.
  • "X-Rate-Limit-Remaining": số lượng request còn lại trong khoảng thời gian Window Time.
  • "X-Rate-Limit-Identifier": tổ hợp của [Địa chỉ IP], [HTTP Method], [Controller] & [Hash token]. Phần hash token là 16 ký tự đầu của SHA-256 chuỗi header Authorization (JWT hoặc API Key), không bao giờ chứa token hay secret gốc.

Khi nhận lỗi 429, hãy chờ hết Window Time (3 giây) rồi gửi lại. Nên giới hạn số request đồng thời ở phía ứng dụng của bạn.

Giới hạn riêng của API đổi công ty

API Đổi công ty đang làm việc có thêm giới hạn riêng: tối đa 10 lần / 60 giây cho mỗi tài khoản. Vượt quá sẽ nhận HTTP 429 với body {"error": ["error_rate_limit_exceed"]}.

On this page