ขีดจำกัดระดับทั่วทั้งระบบ
Brevo จำกัดคำขอ API ต่อ endpoint ขีดจำกัดแต่ละรายการคือจำนวนคำขอต่อวินาที (RPS) ต่อชั่วโมง (RPH) หรือทั้งสองอย่าง ตัวเลขด้านล่างมาจากหน้าขีดจำกัดอัตราการเรียกใช้ของ Brevo ตรวจสอบเมื่อวันที่ 7 ตุลาคม 2026 โปรดตรวจสอบหน้านั้นก่อนวางแผนงานขนาดใหญ่
ระดับของขีดจำกัดอัตราการเรียกใช้
| ระดับ | ใช้ได้กับ |
|---|---|
| General | Free, Starter, Standard, Professional และ Enterprise |
| Advanced | Professional และ Enterprise |
| Extended | Enterprise |
ขีดจำกัดแยกตามระดับ
| 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 |
endpoint อื่นภายใต้ /v3/smtp | 300 RPH | 600 RPH | 1,800 RPH |
ทุก endpoint ภายใต้ /v3/contacts | 10 RPS, 36,000 RPH | 20 RPS, 72,000 RPH | 60 RPS |
ทุก endpoint ภายใต้ /v3/loyalty | 600 RPH | 1,200 RPH | 100,000 RPH |
| endpoint อื่นทั้งหมด | 100 RPH | 200 RPH | 600 RPH |
เมื่อ endpoint มีทั้งขีดจำกัด RPS และ RPH ต้องไม่เกินทั้งสองอย่าง
Header ของขีดจำกัดอัตราการเรียกใช้
endpoint ที่มีการจำกัดอัตราจะส่งกลับ header เหล่านี้:
HTTP/1.1 200 OKx-sib-ratelimit-limit: 1000x-sib-ratelimit-remaining: 750x-sib-ratelimit-reset: 1คำอธิบาย Header
x-sib-ratelimit-limit: จำนวนคำขอที่อนุญาตในช่วงเวลาปัจจุบันx-sib-ratelimit-remaining: จำนวนคำขอที่เหลือในช่วงเวลาปัจจุบันx-sib-ratelimit-reset: เวลาที่เหลือก่อนช่วงเวลาจะรีเซ็ต โดยปกติเป็นวินาที
Brevo อธิบาย header เหล่านี้ไว้ในหน้า rate limit headers
การติดตามการใช้งาน
ตรวจสอบการใช้งานปัจจุบัน
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')) });};การรับมือกับขีดจำกัดอัตราการเรียกใช้
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');};เมื่อคุณชนขีดจำกัดอยู่เรื่อยๆ
- กระจายคำขอให้สม่ำเสมอ: ขีดจำกัด 1,000 RPS อนุญาตได้ถึง 60,000 คำขอต่อนาที ก็ต่อเมื่อกระจายคำขอให้สม่ำเสมอเท่านั้น
- รวมเป็นชุดและแคช: ใช้ endpoint แบบเป็นชุด และหลีกเลี่ยงการอ่านข้อมูลที่คุณมีอยู่แล้วซ้ำ
- ใช้ Webhook สำหรับสถิติ: รับเหตุการณ์แทนการ poll endpoint สถิติ
- พิจารณาระดับที่สูงขึ้น: ระดับ advanced และ extended มาพร้อมแพ็กเกจ Professional และ Enterprise