الحدود العامة
يفرض Brevo حدودًا عامة لمعدل الاستخدام على جميع نقاط نهاية API لضمان الاستخدام العادل والأداء الأمثل.
مستويات حد المعدل
الخطة المجانية
- الحد اليومي: 300 طلب
- الحد بالساعة: 50 طلبًا
- حد الدفعات المتلاحقة: 10 طلبات في الدقيقة
- رصيد البريد الإلكتروني: 300 شهريًا
خطة Starter
- الحد اليومي: 20,000 طلب
- الحد بالساعة: 1,000 طلب
- حد الدفعات المتلاحقة: 100 طلب في الدقيقة
- رصيد البريد الإلكتروني: غير محدود
خطة Business
- الحد اليومي: 50,000 طلب
- الحد بالساعة: 3,000 طلب
- حد الدفعات المتلاحقة: 300 طلب في الدقيقة
- رصيد البريد الإلكتروني: غير محدود
خطة Enterprise
- الحد اليومي: مخصص (100,000 وأكثر)
- الحد بالساعة: مخصص (10,000 وأكثر)
- حد الدفعات المتلاحقة: مخصص (1,000 وأكثر في الدقيقة)
- رصيد البريد الإلكتروني: غير محدود
ترويسات حد المعدل
تتضمن كل استجابة من API معلومات عن حد المعدل:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600وصف الترويسات
X-RateLimit-Limit: إجمالي الطلبات المسموح بها في النافذة الحاليةX-RateLimit-Remaining: الطلبات المتبقية في النافذة الحاليةX-RateLimit-Reset: طابع Unix الزمني الذي تُعاد فيه تهيئة الحد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
- انتقل إلى الإعدادات ← API Keys
- اعرض الاستخدام لكل مفتاح API
- اضبط التنبيهات عند الاقتراب من الحدود
نوافذ إعادة تهيئة حد المعدل
- الحدود اليومية: تُعاد تهيئتها عند 00:00 UTC
- الحدود بالساعة: تُعاد تهيئتها كل ساعة عند الدقيقة :00
- حدود الدفعات المتلاحقة: نافذة منزلقة (آخر 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; } }};ترقية الخطة
عندما تصل إلى حدود المعدل باستمرار:
- حلّل الاستخدام: راجع نقاط النهاية الأكثر استخدامًا لديك
- حسّن الشيفرة: طبّق التخزين المؤقت وتجميع الطلبات
- فكّر في الترقية: انتقل إلى مستوى أعلى عند الحاجة
- تواصل مع المبيعات: للمتطلبات على مستوى المؤسسات
استثناءات حد المعدل
نقاط نهاية Webhook
- لا تخضع لحدود المعدل القياسية
- تنطبق عليها حدود منفصلة لتسليم Webhook
نقطة نهاية فحص السلامة
/v3/pingلها حدود مخففة- مصممة للمراقبة وفحوصات مدة التشغيل
العمليات المجمّعة
- تُحتسب كطلب واحد لكنها قد تخضع لحدود على حجم الحمولة
- أكثر كفاءة من عدة طلبات فردية