DocsRatenlimits

Ratenlimits

Verstehen Sie die Ratenlimits der FreeFileTools API und wie Sie diese in Ihrer Anwendung handhaben.

Limits des kostenlosen Plans

LimitWert
Anfragen pro Stunde50
Maximale Dateigroesse pro Anfrage25 MB
Ratenlimit-FensterRolling 1 hour

Das Ratenlimit wird pro API Key angewendet. Jeder Schluessel hat seinen eigenen unabhaengigen Zaehler, der auf rollierender stuendlicher Basis zurueckgesetzt wird.

Wenn Ratenlimits ueberschritten werden

Wenn Sie das Ratenlimit ueberschreiten, gibt die API eine 429 Too Many Requests-Antwort zurueck:

json
{
  "error": "Rate limit exceeded",
  "message": "You have exceeded the rate limit of 50 requests per hour. Please try again later.",
  "retryAfter": 1742
}

Das Feld retryAfter gibt die Anzahl der Sekunden an, die vor einer weiteren Anfrage gewartet werden soll.

Ratenlimit-Antwort-Header

Jede API-Antwort enthaelt Header, die Ihnen helfen, Ihre Ratenlimit-Nutzung zu verfolgen:

HeaderBeschreibung
X-RateLimit-LimitMaximale Anzahl erlaubter Anfragen pro Stunde (50)
X-RateLimit-RemainingAnzahl verbleibender Anfragen im aktuellen Fenster
Retry-AfterSekunden bis zum erneuten Versuch (nur bei 429-Antworten)

Beispiel-Antwort-Header

http
HTTP/1.1 200 OK
Content-Type: image/jpeg
X-RateLimit-Limit: 50
X-RateLimit-Remaining: 42

Tipps zum Einhalten der Limits

1.

Verbleibende Anfragen pruefen

Ueberwachen Sie den X-RateLimit-Remaining-Header, um zu wissen, wie viele Anfragen Ihnen noch bleiben.

2.

Exponentielles Backoff implementieren

Wenn Sie eine 429-Antwort erhalten, warten Sie und versuchen Sie es mit zunehmenden Verzoegerungen erneut, anstatt die API zu bombardieren.

3.

Ergebnisse zwischenspeichern

Wenn Sie dieselben Dateien wiederholt verarbeiten, speichern Sie die Ergebnisse lokal zwischen, um unnoetige API-Aufrufe zu vermeiden.

4.

Kluges Batching

Verteilen Sie Ihre Anfragen bei Stapelverarbeitung ueber die Zeit, anstatt alle auf einmal zu senden.

Beispiel: Ratenlimits in JavaScript handhaben

javascript
async function apiCall(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const retryAfter = parseInt(response.headers.get("Retry-After") || "60");
      console.log(`Rate limited. Waiting ${retryAfter} seconds...`);
      await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));
      continue;
    }

    return response;
  }

  throw new Error("Max retries exceeded");
}