Nous utilisons des cookies. Les cookies et le stockage du navigateur vous gardent connecté et mémorisent vos préférences. Avec votre accord, nous mesurons aussi l’utilisation du site. Vous pouvez à tout moment. Consultez notre politique relative aux cookies.

Limites de débit

Compte

Limites de débit

Requêtes par minute selon le forfait, limites de RPM et limites quotidiennes en USD par clé, et gestion des erreurs 429 avec nouvelles tentatives.

Les limites de débit protègent votre solde et le service. Elles se comptent en requêtes par minute (RPM) par clé d'API, et les clés peuvent aussi avoir une limite de dépenses quotidiennes en USD.

Limites par forfait

ForfaitRequêtes par minute
Free5
Pro100
Team3,000
Enterprise3,000+

Passez à un forfait supérieur sur la page des tarifs pour augmenter votre limite.

Limites par clé

Lorsque vous créez ou modifiez une clé dans Clés d'API, vous pouvez définir :

LimiteEffet
Limite de RPMPlafonne les requêtes par minute pour cette clé. La limite effective est la plus basse entre la limite de la clé et celle de votre forfait.
Limite quotidienne en USDUne fois que la clé a dépensé ce montant dans la journée (UTC), les requêtes suivantes renvoient 429 daily_limit_reached jusqu'au lendemain.
Liste de modèles autorisésSeuls les ids de modèle listés peuvent être utilisés avec cette clé ; les autres renvoient 403 model_not_allowed.

La fenêtre de RPM est d'une minute et se compte par clé : des clés distinctes pour des applications distinctes ne partagent donc pas la même limite, mais chaque clé reste plafonnée par la limite de votre forfait.

En-têtes de limite

Chaque réponse de génération (succès ou erreur) indique où vous en êtes, pour ralentir avant d’atteindre la limite :

En-têteSignification
X-RateLimit-LimitRequêtes autorisées dans la fenêtre d’une minute en cours pour cette clé.
X-RateLimit-RemainingRequêtes restantes dans la fenêtre.
X-RateLimit-ResetSecondes avant la réinitialisation de la fenêtre.

Les clients navigateur peuvent aussi les lire (ils figurent dans Access-Control-Expose-Headers).

Pics et concurrence

Les requêtes au-delà de la limite ne sont pas rejetées tout de suite : elles attendent dans une file et démarrent dès que la fenêtre d’une minute se libère. Jusqu’à 10 requêtes par compte s’exécutent en même temps ; les autres attendent qu’une se termine. Avant le démarrage, le coût maximal estimé de la requête est réservé sur votre solde avec celui des requêtes en cours, si bien que des requêtes parallèles ne dépensent jamais plus que ce que vous avez. Une requête qui ne peut pas démarrer dans les 60 secondes renvoie 429 (rate_limited ou concurrency_limit) avec Retry-After ; si son coût ne tient plus dans votre solde, elle renvoie 402 insufficient_balance.

Réessais sûrs avec Idempotency-Key

Après une erreur réseau, vous ne savez pas toujours si la requête est arrivée. Envoyez un en-tête Idempotency-Key (une chaîne unique de 120 caractères maximum, par exemple un UUID) et réessayez avec la même clé : si la première requête a déjà été envoyée au modèle, le réessai renvoie 409 idempotency_conflict au lieu d’exécuter et de facturer le travail deux fois. Si la première a échoué avant d’atteindre le modèle, la clé est libérée et le réessai s’exécute normalement. Une clé est utilisable une fois par compte pendant 24 heures.

curl https://api14.com/api/v1/images/generations \
  -H "Authorization: Bearer $API14_KEY" \
  -H "Idempotency-Key: 6f1c2a3e-order-1842" \
  -H "Content-Type: application/json" \
  -d '{"model": "black-forest-labs/flux-3-image", "prompt": "a red bicycle"}'

Lorsque vous atteignez une limite

Trop de requêtes

HTTP/1.1 429 Too Many Requests
Retry-After: 60
{
  "error": {
    "message": "Rate limit of 5 requests per minute exceeded.",
    "type": "rate_limit_error",
    "code": "rate_limited"
  }
}

Attendez le nombre de secondes indiqué dans Retry-After, puis réessayez. Les SDK officiels d'OpenAI réessaient automatiquement les réponses 429 avec un backoff (deux nouvelles tentatives par défaut ; configurable avec maxRetries / max_retries).

Limite de dépenses quotidiennes

{
  "error": {
    "message": "This API key reached its daily spend limit.",
    "type": "rate_limit_error",
    "code": "daily_limit_reached"
  }
}

Réessayer ne sert à rien avant le jour UTC suivant. S'il s'agit d'un trafic attendu, augmentez ou supprimez la limite quotidienne de la clé dans Clés d'API.

Limites du fournisseur en amont

Les fournisseurs ont leurs propres limites, plus strictes pour les variantes de modèle :free. Lorsqu'un fournisseur limite une requête, son 429 vous est transmis tel quel. Utilisez les modèles de repli ou le routage des fournisseurs pour répartir la charge entre fournisseurs.

Gérer les limites dans le code

  • Respectez Retry-After et réessayez avec un backoff exponentiel et du jitter.
  • Distinguez rate_limited (réessayer plus tard) de daily_limit_reached et insufficient_balance (réessayer ne sert à rien).
  • Mettez les tâches de fond en file d'attente au lieu de les lancer toutes en même temps.
  • Diffusez les réponses longues en streaming : une requête en streaming compte pour une seule requête.
import time
from openai import OpenAI, RateLimitError

client = OpenAI(base_url="https://api14.com/api/v1", api_key="sk-api14-...", max_retries=0)

for attempt in range(5):
    try:
        r = client.chat.completions.create(model="openai/gpt-5-mini", messages=[{"role": "user", "content": "Hi"}])
        break
    except RateLimitError as e:
        if e.code == "daily_limit_reached":
            raise
        time.sleep(int(e.response.headers.get("retry-after", 2 ** attempt)))

Voir Erreurs pour tous les codes de statut.