ขีดจำกัดระดับทั่วทั้งระบบ
Brevo บังคับใช้ขีดจำกัดอัตราการเรียกใช้ในระดับทั่วทั้งระบบกับทุก API endpoint เพื่อให้การใช้งานเป็นธรรมและระบบทำงานได้อย่างมีประสิทธิภาพสูงสุด
ระดับของขีดจำกัดอัตราการเรียกใช้
แพ็กเกจ Free
- ขีดจำกัดรายวัน: 300 requests
- ขีดจำกัดรายชั่วโมง: 50 requests
- ขีดจำกัดแบบ burst: 10 requests/นาที
- เครดิตอีเมล: 300/เดือน
แพ็กเกจ Starter
- ขีดจำกัดรายวัน: 20,000 requests
- ขีดจำกัดรายชั่วโมง: 1,000 requests
- ขีดจำกัดแบบ burst: 100 requests/นาที
- เครดิตอีเมล: ไม่จำกัด
แพ็กเกจ Business
- ขีดจำกัดรายวัน: 50,000 requests
- ขีดจำกัดรายชั่วโมง: 3,000 requests
- ขีดจำกัดแบบ burst: 300 requests/นาที
- เครดิตอีเมล: ไม่จำกัด
แพ็กเกจ Enterprise
- ขีดจำกัดรายวัน: กำหนดเอง (100,000 ขึ้นไป)
- ขีดจำกัดรายชั่วโมง: กำหนดเอง (10,000 ขึ้นไป)
- ขีดจำกัดแบบ burst: กำหนดเอง (1,000 ขึ้นไป/นาที)
- เครดิตอีเมล: ไม่จำกัด
Header ของขีดจำกัดอัตราการเรียกใช้
ทุก API response จะแนบข้อมูลขีดจำกัดอัตราการเรียกใช้มาด้วย
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600คำอธิบาย header
X-RateLimit-Limit: จำนวน request ทั้งหมดที่อนุญาตในช่วงเวลาปัจจุบันX-RateLimit-Remaining: จำนวน request ที่เหลือในช่วงเวลาปัจจุบันX-RateLimit-Reset: Unix timestamp ของเวลาที่ขีดจำกัดจะรีเซ็ตX-RateLimit-Retry-After: จำนวนวินาทีที่ต้องรอก่อนลองใหม่
การติดตามการใช้งาน
ตรวจสอบการใช้งานปัจจุบัน
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) });};การติดตามผ่านแดชบอร์ด
- เข้าสู่ระบบ แดชบอร์ด Brevo ของคุณ
- ไปที่ Settings → API Keys
- ดูการใช้งาน ของแต่ละ API key
- ตั้งการแจ้งเตือน เมื่อใกล้ถึงขีดจำกัด
ช่วงเวลารีเซ็ตขีดจำกัด
- ขีดจำกัดรายวัน: รีเซ็ตเวลา 00:00 UTC
- ขีดจำกัดรายชั่วโมง: รีเซ็ตทุกชั่วโมงที่นาทีที่ :00
- ขีดจำกัดแบบ burst: หน้าต่างแบบเลื่อน (60 วินาทีล่าสุด)
การรับมือกับขีดจำกัดอัตราการเรียกใช้
การหน่วงเวลาแบบทวีคูณ
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; } }};การอัปเกรดแพ็กเกจ
เมื่อคุณชนขีดจำกัดอัตราการเรียกใช้อยู่เป็นประจำ
- วิเคราะห์การใช้งาน: ตรวจสอบว่าคุณใช้ endpoint ใดมากที่สุด
- ปรับปรุงโค้ด: ใช้การแคชและการรวม request เป็นชุด
- พิจารณาอัปเกรด: ย้ายไปแพ็กเกจระดับสูงขึ้นหากจำเป็น
- ติดต่อฝ่ายขาย: สำหรับความต้องการระดับ enterprise
ข้อยกเว้นของขีดจำกัดอัตราการเรียกใช้
Webhook endpoint
- ไม่อยู่ภายใต้ขีดจำกัดอัตราการเรียกใช้มาตรฐาน
- มีขีดจำกัดการส่ง webhook แยกต่างหาก
Health check endpoint
/v3/pingมีขีดจำกัดที่ผ่อนคลายกว่า- ออกแบบมาสำหรับการติดตามและการตรวจสอบ uptime
การทำงานแบบเป็นชุด
- นับเป็น request เดียว แต่อาจมีขีดจำกัดขนาด payload
- มีประสิทธิภาพมากกว่าการเรียกแยกทีละ request