Rate-Limits
Um eine faire Nutzung und Plattformstabilität zu gewährleisten, setzt die SilentChat API Rate-Limits für alle Endpunkte durch. Limits werden pro API-Schlüssel oder authentifiziertem Benutzer, pro Endpunktgruppe und pro Minute angewendet, sofern nicht anders angegeben.
Limits nach Endpunktgruppe
| Group | Limit | Window | Scope |
|---|---|---|---|
Auth (/v1/auth/*) | 10 requests | 1 minute | Per IP address |
API (all other /v1/*) | 100 requests | 1 minute | Per user / API key |
Widget (/v1/widget/*) | 30 requests | 1 minute | Per visitor session |
Enterprise-Pläne haben höhere Limits. Kontaktieren Sie den Vertrieb, wenn Ihre Integration einen höheren Durchsatz benötigt.
Rate-Limit-Header
Jede API-Antwort enthält Header, die Ihnen den aktuellen Stand Ihres Rate-Limits mitteilen:
| Header | Description |
|---|---|
X-RateLimit-Limit | Die maximale Anzahl erlaubter Anfragen im aktuellen Zeitfenster. |
X-RateLimit-Remaining | Die Anzahl der im aktuellen Zeitfenster noch verbleibenden Anfragen. |
X-RateLimit-Reset | Der Unix-Zeitstempel, zu dem das aktuelle Zeitfenster zurückgesetzt wird. |
Retry-After | Nur in 429-Antworten vorhanden. Die Anzahl der Sekunden, die gewartet werden soll, bevor erneut versucht wird. |
Beispiel-Antwort-Header
HTTP/1.1 200 OKX-RateLimit-Limit: 100X-RateLimit-Remaining: 87Content-Type: application/json
Umgang mit 429 Too Many Requests
Wenn Sie eine 429-Antwort erhalten, enthält die API einen Retry-After-Header, der angibt, wie viele Sekunden gewartet werden soll, bevor eine weitere Anfrage gestellt wird. Versuchen Sie es nicht sofort erneut — das wird nicht funktionieren und kann die Wartezeit verlängern.
HTTP/1.1 429 Too Many RequestsRetry-After: 23Content-Type: application/json{"error": {"code": "RATE_LIMITED","message": "Too many requests. Please retry after 23 seconds.","status": 429}}
Empfohlene Wiederholungsstrategie
- Lesen Sie den Retry-After-Header aus der 429-Antwort.
- Warten Sie die angegebene Anzahl von Sekunden.
- Fügen Sie einen kleinen zufälligen Jitter (0–1 s) hinzu, um Thundering-Herd-Probleme zu vermeiden, wenn viele Clients gleichzeitig das Limit zurücksetzen.
- Wiederholen Sie die Anfrage einmal. Wenn Sie erneut eine 429-Antwort erhalten, wenden Sie exponentielles Backoff an.
Beispiel (JavaScript)
async function fetchWithRetry(url, options, maxRetries = 3) {for (let attempt = 0; attempt <= maxRetries; attempt++) {const response = await fetch(url, options);if (response.status !== 429) {return response;}const retryAfter = parseInt(response.headers.get('Retry-After') || '5', 10);const delay = Math.min(retryAfter * 1000 * Math.pow(2, attempt), 60000);console.warn(`Rate limited. Retrying in ${delay / 1000}s...`);await new Promise((resolve) => setTimeout(resolve, delay));}throw new Error('Max retries exceeded');}
Best Practices
- Cachen Sie Antworten, wo möglich, um die Anzahl der API-Aufrufe zu reduzieren.
- Verwenden Sie Webhooks statt Polling für Echtzeit-Updates.
- Fassen Sie Operationen zusammen, wenn die API dies unterstützt (z. B. Massen-Kontaktimport).
- Beobachten Sie den X-RateLimit-Remaining-Header und verlangsamen Sie die Anfragen proaktiv, wenn Sie sich dem Limit nähern.
- Verteilen Sie Anfragen gleichmäßig über die Zeit, anstatt sie in Bursts zu senden.