Giới hạn toàn cục
Brevo áp dụng giới hạn tần suất toàn cục cho mọi endpoint API nhằm đảm bảo sử dụng công bằng và hiệu năng tối ưu.
Các mức giới hạn tần suất
Gói Free
- Giới hạn theo ngày: 300 yêu cầu
- Giới hạn theo giờ: 50 yêu cầu
- Giới hạn tức thời: 10 yêu cầu/phút
- Tín dụng email: 300/tháng
Gói Starter
- Giới hạn theo ngày: 20.000 yêu cầu
- Giới hạn theo giờ: 1.000 yêu cầu
- Giới hạn tức thời: 100 yêu cầu/phút
- Tín dụng email: Không giới hạn
Gói Business
- Giới hạn theo ngày: 50.000 yêu cầu
- Giới hạn theo giờ: 3.000 yêu cầu
- Giới hạn tức thời: 300 yêu cầu/phút
- Tín dụng email: Không giới hạn
Gói Enterprise
- Giới hạn theo ngày: Tùy chỉnh (từ 100.000)
- Giới hạn theo giờ: Tùy chỉnh (từ 10.000)
- Giới hạn tức thời: Tùy chỉnh (từ 1.000/phút)
- Tín dụng email: Không giới hạn
Header giới hạn tần suất
Mọi phản hồi API đều kèm thông tin về giới hạn tần suất:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Mô tả các header
X-RateLimit-Limit: Tổng số yêu cầu được phép trong cửa sổ hiện tạiX-RateLimit-Remaining: Số yêu cầu còn lại trong cửa sổ hiện tạiX-RateLimit-Reset: Dấu thời gian Unix khi giới hạn được đặt lạiX-RateLimit-Retry-After: Số giây cần chờ trước khi thử lại
Giám sát mức sử dụng
Kiểm tra mức sử dụng hiện tại
const checkRateLimit = async () => { const response = await fetch('https://api.brevo.com/v3/account', { headers: { 'api-key': process.env.BREVO_API_KEY } });
console.log({ limit: response.headers.get('X-RateLimit-Limit'), remaining: response.headers.get('X-RateLimit-Remaining'), reset: new Date(response.headers.get('X-RateLimit-Reset') * 1000) });};Giám sát trên bảng điều khiển
- Đăng nhập vào bảng điều khiển Brevo của bạn
- Điều hướng tới Settings → API Keys
- Xem mức sử dụng của từng khóa API
- Đặt cảnh báo khi sắp chạm giới hạn
Cửa sổ đặt lại giới hạn tần suất
- Giới hạn theo ngày: Đặt lại lúc 00:00 UTC
- Giới hạn theo giờ: Đặt lại mỗi giờ vào phút :00
- Giới hạn tức thời: Cửa sổ trượt (60 giây gần nhất)
Xử lý khi chạm giới hạn tần suất
Lùi thời gian theo cấp số nhân
const makeRequestWithBackoff = async (url, options, maxRetries = 3) => { for (let i = 0; i < maxRetries; i++) { try { const response = await fetch(url, options);
if (response.status === 429) { const retryAfter = response.headers.get('X-RateLimit-Retry-After') || 60; const delay = Math.min(1000 * Math.pow(2, i), retryAfter * 1000);
console.log(`Rate limited. Waiting ${delay}ms before retry ${i + 1}`); await new Promise(resolve => setTimeout(resolve, delay)); continue; }
return response; } catch (error) { if (i === maxRetries - 1) throw error; } }};Nâng cấp gói
Khi bạn liên tục chạm giới hạn tần suất:
- Phân tích mức sử dụng: Xem lại những endpoint bạn dùng nhiều nhất
- Tối ưu mã nguồn: Áp dụng bộ nhớ đệm và gộp yêu cầu theo lô
- Cân nhắc nâng cấp: Chuyển lên gói cao hơn nếu cần
- Liên hệ bộ phận kinh doanh: Dành cho nhu cầu doanh nghiệp
Trường hợp ngoại lệ
Endpoint webhook
- Không chịu giới hạn tần suất tiêu chuẩn
- Áp dụng giới hạn gửi webhook riêng
Endpoint kiểm tra tình trạng
/v3/pingcó giới hạn nới lỏng- Được thiết kế cho giám sát và kiểm tra thời gian hoạt động
Thao tác theo lô
- Tính là một yêu cầu duy nhất nhưng có thể bị giới hạn kích thước payload
- Hiệu quả hơn so với nhiều yêu cầu riêng lẻ