Rate Limits & Kontingente

Rate Limits & Kontingente

Die API verwendet Rate Limits, um faire Nutzung zu gewährleisten und die Servicequalität für alle Partner sicherzustellen.

Rate Limits

Anfragen pro Minute

Limit-Typ Grenze Beschreibung
Pro Token 100/min Jeder API-Token hat ein eigenes Limit
Pro Partner 1.000/min Gesamtlimit über alle Tokens eines Partners
Matching-Endpoint 10/sec Spezielles Limit für rechenintensive Matching-Anfragen

Rate Limit Header

Jede Response enthält Header mit Limit-Informationen:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1706540400
Header Beschreibung
X-RateLimit-Limit Maximale Anfragen pro Fenster
X-RateLimit-Remaining Verbleibende Anfragen
X-RateLimit-Reset Unix-Timestamp, wann das Limit zurückgesetzt wird

Bei Limit-Überschreitung

HTTP/1.1 429 Too Many Requests
Retry-After: 30
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Too many requests. Please wait before retrying.",
    "retry_after": 30
  }
}

Warte die im Retry-After Header angegebene Zeit (in Sekunden), bevor du weitere Anfragen sendest.


Fair-Use-Kontingente

Zusätzlich zu den Rate Limits gibt es quartalsweise Fair-Use-Kontingente.

Kontingent-Grenzen nach Tier

Tier Aktive Organisationen Matching-Anfragen/Jahr
S - Small ≤ 100 10.000
M - Medium ≤ 500 50.000
L - Large ≤ 1.000 100.000

Was ist eine "Aktive Organisation"?

Eine Organisation gilt als "aktiv" in einem Quartal, wenn mindestens eine Matching-Anfrage mit ihrer organization_id durchgeführt wurde.

Beispiel: - Organisation "org-123" führt 50 Matching-Anfragen aus → zählt als 1 aktive Organisation - Organisation "org-456" führt 200 Matching-Anfragen aus → zählt als 1 aktive Organisation - Gesamt: 2 aktive Organisationen

Kontingent-Warnung

Bei 90% Auslastung des Kontingents: - Du erhältst eine E-Mail an die hinterlegte Kontakt-Adresse - Im Partner-Dashboard erscheint ein Warnhinweis - Die quota-Response zeigt warning: true

Was passiert bei Überschreitung?

Die API bleibt funktionsfähig – wir blockieren keine Anfragen bei Kontingent-Überschreitung. Allerdings: - Die Überschreitung wird dokumentiert - Es erfolgt eine Nachberechnung gemäß Vertrag - Wir kontaktieren dich für ein mögliches Tier-Upgrade


Best Practices

Exponential Backoff

Bei 429-Fehlern implementiere Exponential Backoff:

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

    if (response.status === 429) {
      const retryAfter = response.headers.get('Retry-After') || Math.pow(2, i);
      await sleep(retryAfter * 1000);
      continue;
    }

    return response;
  }
  throw new Error('Max retries exceeded');
}

Request-Batching

Statt vieler einzelner Grant-Anfragen, nutze die Pagination:

# ❌ Schlecht: Viele einzelne Anfragen
GET /api/v1/grants/id1
GET /api/v1/grants/id2
GET /api/v1/grants/id3

# ✅ Gut: Eine Anfrage mit mehr Ergebnissen
GET /api/v1/grants?per_page=100

Caching

Implementiere clientseitiges Caching für: - Grant-Details (ändern sich selten) – Cache: 24 Stunden - Matching-Ergebnisse – Cache: 24 Stunden - Usage-Statistiken – Cache: 5 Minuten

Kontingent überwachen

Prüfe regelmäßig dein Kontingent:

curl -X GET "https://foerdermittelkompass.reflecta.org/api/v1/usage/quota" \
  -H "Authorization: Bearer rfk_dein_token"

Integriere eine Warnung in dein Monitoring, wenn percentage > 80%.


Höhere Limits benötigt?

Kontaktiere unser Partner-Team, wenn: - Deine Rate Limits regelmäßig erreicht werden - Du ein höheres Fair-Use-Kontingent benötigst - Du auf einen höheren Tier upgraden möchtest

Wir finden gemeinsam die passende Lösung für deine Anforderungen.

War diese Seite hilfreich?