SilentChat

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

GroupLimitWindowScope
Auth (/v1/auth/*)10 requests1 minutePer IP address
API (all other /v1/*)100 requests1 minutePer user / API key
Widget (/v1/widget/*)30 requests1 minutePer 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:

HeaderDescription
X-RateLimit-LimitDie maximale Anzahl erlaubter Anfragen im aktuellen Zeitfenster.
X-RateLimit-RemainingDie Anzahl der im aktuellen Zeitfenster noch verbleibenden Anfragen.
X-RateLimit-ResetDer Unix-Zeitstempel, zu dem das aktuelle Zeitfenster zurückgesetzt wird.
Retry-AfterNur in 429-Antworten vorhanden. Die Anzahl der Sekunden, die gewartet werden soll, bevor erneut versucht wird.

Beispiel-Antwort-Header

HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
Content-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 Requests
Retry-After: 23
Content-Type: application/json
{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Please retry after 23 seconds.",
"status": 429
}
}

Empfohlene Wiederholungsstrategie

  1. Lesen Sie den Retry-After-Header aus der 429-Antwort.
  2. Warten Sie die angegebene Anzahl von Sekunden.
  3. 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.
  4. 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.
Rate-Limits | SilentChat