Giới hạn toàn cục
Brevo giới hạn yêu cầu API theo từng endpoint. Mỗi giới hạn là một số yêu cầu mỗi giây (RPS), mỗi giờ (RPH), hoặc cả hai. Các con số dưới đây lấy từ trang giới hạn tốc độ của Brevo, được kiểm tra vào ngày 7 tháng 10 năm 2026. Hãy kiểm tra trang đó trước khi bạn ước lượng quy mô một tác vụ lớn.
Các mức giới hạn tốc độ
| Mức | Có trên |
|---|---|
| General | Free, Starter, Standard, Professional và Enterprise |
| Advanced | Professional và Enterprise |
| Extended | Enterprise |
Giới hạn theo từng mức
| Endpoint | General | Advanced | Extended |
|---|---|---|---|
POST /v3/smtp/email, GET /v3/smtp/blockedContacts | 1.000 RPS, 3.600.000 RPH | 2.000 RPS, 7.200.000 RPH | 6.000 RPS |
GET /v3/smtp/emails | 2 RPS, 7.200 RPH | 3 RPS, 10.800 RPH | 18.000 RPH |
POST /v3/transactionalSMS/send | 150 RPS, 540.000 RPH | 200 RPS, 720.000 RPH | 250 RPS |
POST /v3/events | 10 RPS, 36.000 RPH | 20 RPS, 72.000 RPH | 60 RPS |
POST /v3/orders/status | 5 RPS, 18.000 RPH | 10 RPS, 36.000 RPH | 15 RPS |
POST /v3/products | 2 RPS, 7.200 RPH | 4 RPS, 14.400 RPH | 21.600 RPH |
Các endpoint khác dưới /v3/smtp | 300 RPH | 600 RPH | 1.800 RPH |
Tất cả endpoint dưới /v3/contacts | 10 RPS, 36.000 RPH | 20 RPS, 72.000 RPH | 60 RPS |
Tất cả endpoint dưới /v3/loyalty | 600 RPH | 1.200 RPH | 100.000 RPH |
| Tất cả endpoint khác | 100 RPH | 200 RPH | 600 RPH |
Khi một endpoint có cả giới hạn RPS và RPH, hãy nằm dưới cả hai.
Header giới hạn tốc độ
Các endpoint có giới hạn tốc độ trả về các header sau:
HTTP/1.1 200 OKx-sib-ratelimit-limit: 1000x-sib-ratelimit-remaining: 750x-sib-ratelimit-reset: 1Mô tả các header
x-sib-ratelimit-limit: số yêu cầu được phép trong cửa sổ hiện tạix-sib-ratelimit-remaining: số yêu cầu còn lại trong cửa sổ hiện tạix-sib-ratelimit-reset: thời gian cho đến khi cửa sổ đặt lại, thường tính bằng giây
Brevo mô tả các header này trên trang header giới hạn tốc độ của họ.
Theo dõi 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-sib-ratelimit-limit'), remaining: response.headers.get('x-sib-ratelimit-remaining'), resetInSeconds: Number(response.headers.get('x-sib-ratelimit-reset')) });};Xử lý giới hạn tốc độ
Exponential backoff
const makeRequestWithBackoff = async (url, options, maxRetries = 3) => { for (let i = 0; i < maxRetries; i++) { const response = await fetch(url, options);
if (response.status !== 429) return response;
const resetSeconds = Number(response.headers.get('x-sib-ratelimit-reset') || 1); const delay = Math.max(resetSeconds * 1000, 1000 * Math.pow(2, i));
console.log(`Rate limited. Waiting ${delay}ms before retry ${i + 1}`); await new Promise(resolve => setTimeout(resolve, delay)); } throw new Error('Rate limit retries exhausted');};Khi bạn liên tục chạm giới hạn
- Dàn đều các yêu cầu: giới hạn 1.000 RPS cho phép tối đa 60.000 yêu cầu mỗi phút chỉ khi các yêu cầu được dàn đều.
- Gom lô và cache: dùng các endpoint hàng loạt và tránh đọc lại dữ liệu bạn đã có.
- Dùng webhook cho số liệu thống kê: nhận sự kiện thay vì polling các endpoint thống kê.
- Cân nhắc mức cao hơn: mức advanced và extended đi kèm các gói Professional và Enterprise.