Bỏ qua để đến nội dung

Giới hạn tốc độ

~3 phút đọc

API giới hạn số yêu cầu để một tích hợp lỗi vòng lặp không làm chậm người khác. Hạn mức tính theo nhóm route (x-dt-rate-class trong đặc tả OpenAPI) và theo khoá; mỗi phản hồi cho bạn biết bạn còn bao nhiêu.

HeaderÝ nghĩa
X-RateLimit-LimitHạn mức của nhóm route trong cửa sổ hiện tại.
X-RateLimit-RemainingSố lần gọi còn lại trong cửa sổ.
X-RateLimit-ResetThời điểm cửa sổ được đặt lại, tính bằng epoch giây.
Retry-AfterChỉ có ở phản hồi 429: số giây nên chờ trước khi gửi lại.

Hãy đọc X-RateLimit-Remaining để giảm tốc trước khi chạm trần, thay vì chờ tới khi nhận 429.

Bảng dưới là mức tiêu chuẩn. Hạn mức nhóm đọc có thể khác theo gói; giá trị thực tế của khoá bạn luôn nằm ở X-RateLimit-Limit.

NhómÁp dụng choHạn mức
readRoute đọc (GET) như danh sách tài khoản, giao dịch, số dư.600 yêu cầu mỗi phút mỗi khoá
writeRoute ghi như tạo hay cập nhật tài khoản.120 yêu cầu mỗi phút mỗi khoá
collectRoute tạo yêu cầu thanh toán.60 yêu cầu mỗi phút mỗi khoá
exportRoute xuất dữ liệu.10 yêu cầu mỗi giờ
replayPhát lại webhook.30 yêu cầu mỗi phút mỗi tổ chức
mcpLời gọi công cụ MCP.300 yêu cầu mỗi phút mỗi phiên

Ngoài hạn mức theo nhóm còn có giới hạn đột biến ngắn hạn (100 yêu cầu trong 10 giây theo khoá); chạm giới hạn này nhận 429 với Retry-After: 10. Yêu cầu không có thông tin xác thực bị giới hạn theo địa chỉ IP, 60 yêu cầu mỗi phút.

Phản hồi 429 mang mã rate_limited, retryable: true và header Retry-After. Cách xử lý đúng:

  1. Chờ ít nhất Retry-After giây rồi gửi lại cùng yêu cầu.
  2. Thêm độ trễ ngẫu nhiên nhỏ để nhiều tiến trình không cùng gửi lại một lúc.
  3. Giảm tốc độ gọi ở phía bạn thay vì chỉ thử lại: gom yêu cầu, dùng limit lớn hơn (tối đa 100), hoặc dùng webhooks thay vì hỏi lại liên tục.

SDK TypeScript và Python tự thử lại 429 và tuân theo Retry-After. Nếu Retry-After lớn hơn 60 giây, SDK không ngủ chờ mà trả lỗi 429 cho mã của bạn để bạn quyết định.

HTTPMã lỗiThử lạiÝ nghĩa
429rate_limitedcóGọi quá nhanh
402quota_exceededkhôngVượt hạn mức gói