Rate Limits

Rate Limits

Die CODEFLUSS API verwendet Rate Limiting, um faire Nutzung sicherzustellen und die Plattformstabilität zu gewährleisten. Die Limits variieren je nach Abonnement-Plan.

Limit-Übersicht nach Plan

PlanAnfragen/MinuteAnfragen/StundeAnfragen/Tag
Free601.00010.000
Starter1205.00050.000
Professional30015.000150.000
Enterprise1.00050.000Unbegrenzt

Rate Limit Headers

Jede API-Response enthält Header mit Informationen zum aktuellen Rate Limit Status:

X-RateLimit-Limit: 60 X-RateLimit-Remaining: 45 X-RateLimit-Reset: 1706054400
HeaderBeschreibung
X-RateLimit-LimitMaximale Anfragen im aktuellen Zeitfenster
X-RateLimit-RemainingVerbleibende Anfragen im aktuellen Zeitfenster
X-RateLimit-ResetUnix-Timestamp, wann das Limit zurückgesetzt wird

Rate Limit überschritten

Wenn Sie das Rate Limit überschreiten, erhalten Sie einen 429 Too Many Requests Status:

{ "success": false, "error": { "code": "RATE_LIMIT_EXCEEDED", "message": "Too many requests. Please retry after 45 seconds.", "details": { "retryAfter": 45, "limit": 60, "windowSeconds": 60 } } }

Retry-After Header

HTTP/1.1 429 Too Many Requests Retry-After: 45 X-RateLimit-Limit: 60 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1706054445

Best Practices

Exponential Backoff implementieren

Bei Rate Limit Fehlern empfehlen wir exponentielles Backoff:

async function fetchWithRetry( url: string, options: RequestInit, maxRetries = 3 ): Promise<Response> { let lastError: Error | null = null; for (let attempt = 0; attempt < maxRetries; attempt++) { try { const response = await fetch(url, options); if (response.status === 429) { const retryAfter = parseInt( response.headers.get("Retry-After") || "60" ); const backoff = Math.min(retryAfter * 1000, 60000); console.log(`Rate limited. Retrying in ${backoff}ms...`); await new Promise(resolve => setTimeout(resolve, backoff)); continue; } return response; } catch (error) { lastError = error as Error; const backoff = Math.pow(2, attempt) * 1000; await new Promise(resolve => setTimeout(resolve, backoff)); } } throw lastError || new Error("Max retries exceeded"); }

Anfragen bündeln

Statt vieler einzelner Anfragen, nutzen Sie Batch-Endpunkte wo verfügbar:

// ❌ Schlecht: Viele einzelne Anfragen for (const id of mediaIds) { await fetch(`/api/v1/media/${id}`, { method: "DELETE" }); } // ✅ Gut: Eine Batch-Anfrage await fetch("/api/v1/media/batch", { method: "DELETE", body: JSON.stringify({ ids: mediaIds }), });

Rate Limit Status überwachen

Überwachen Sie proaktiv Ihre verbleibenden Anfragen:

async function makeApiRequest(url: string, options: RequestInit) { const response = await fetch(url, options); const remaining = parseInt( response.headers.get("X-RateLimit-Remaining") || "0" ); if (remaining < 10) { console.warn(`Low rate limit: ${remaining} requests remaining`); } return response; }

Spezielle Limits

Einige Endpunkte haben zusätzliche spezifische Limits:

EndpunktLimitFenster
POST /api/v1/ai/*10Pro Minute
POST /api/v1/media50Pro Stunde
POST /api/v1/contact5Pro Stunde

Rate Limit erhöhen

Für höhere Limits haben Sie folgende Optionen:

  1. Plan upgraden – Höhere Pläne bieten mehr Anfragen
  2. Enterprise kontaktieren – Für individuelle Limits
  3. Caching implementieren – Reduzieren Sie wiederholte Anfragen

Nächste Schritte