Limites de débit

Chaque request API FourA est soumise à une limitation de débit. Vous rencontrerez deux types de limites : la concurrence (requests simultanées) et le RPM (requests par minute). Les deux sont appliquées par service.

Fonctionnement des limites de débit

L'API applique des limites à deux niveaux :

  1. Limite globale de l'API : s'applique à toutes les requests quel que soit l'endpoint. Cette vérification s'exécute en premier.
  2. Limite par service : s'applique séparément à chaque endpoint (single, proxy, browser). Cette vérification ne s'exécute que si la limite globale est respectée.

Si la limite globale est atteinte, la vérification par service ne s'exécute pas. Une request doit passer les deux vérifications avant d'atteindre le backend.

Chaque niveau suit deux métriques :

  • Concurrence : le nombre de requests en cours d'exécution simultanée.
  • RPM : le nombre de requests envoyées au cours des 60 dernières secondes.

Réponses de limite de débit

Lorsque vous atteignez une limite, l'API renvoie une response JSON contenant votre utilisation actuelle et les limites en vigueur.

429 : RPM dépassé

{
  "error": "Rate limit exceeded",
  "status": 429,
  "service": "single",
  "retryAfter": 5,
  "current": {
    "concurrency": 12,
    "rpm": 3000
  },
  "limits": {
    "maxConcurrency": 500,
    "maxRpm": 3000
  }
}

Vous avez envoyé trop de requests au cours de la dernière minute. Attendez la période retryAfter avant d'en envoyer d'autres.

503 : Concurrence dépassée

{
  "error": "Service at capacity",
  "status": 503,
  "service": "proxy",
  "retryAfter": 2,
  "current": {
    "concurrency": 500,
    "rpm": 1200
  },
  "limits": {
    "maxConcurrency": 500,
    "maxRpm": 3000
  }
}

Trop de requests sont en cours d'exécution simultanée. Certaines de vos requests précédentes ne sont pas encore terminées.

Service désactivé

Lorsqu'un service est temporairement mis hors ligne pour maintenance, l'API renvoie une erreur 503 avec un message d'erreur différent :

{
  "error": "Service disabled",
  "status": 503,
  "retryAfter": 60
}

Il ne s'agit pas d'une limite de débit. Le service est temporairement indisponible. Vérifiez la valeur de retryAfter et réessayez après ce nombre de secondes. Cela se résout généralement en quelques minutes.

Ne confondez pas cela avec l'erreur 503 de concurrence. Une response « Service disabled » n'inclura pas les champs current ou limits.

Champs de la réponse

Champ Type Description
error string Message d'erreur lisible par l'utilisateur
status number Code d'état HTTP (429 ou 503)
service string Le service qui a atteint la limite : single, proxy, browser ou api
retryAfter number Temps d'attente recommandé en secondes avant de réessayer
current.concurrency number Votre nombre actuel de requests actives
current.rpm number Vos requests au cours des 60 dernières secondes
limits.maxConcurrency number Nombre maximal de requests simultanées autorisées
limits.maxRpm number Nombre maximal de requests par minute autorisées

Gérer les limites de débit

Utilisez le champ retryAfter pour implémenter un backoff :

import requests
import time

def fetch(url, max_retries=5):
    for attempt in range(max_retries):
        resp = requests.post(
            "https://eu.api.foura.ai/api/single/",
            headers={
                "X-API-Key": "YOUR_API_KEY",
                "Content-Type": "application/json"
            },
            json={"method": "GET", "url": url}
        )

        if resp.status_code in (429, 503):
            data = resp.json()
            wait = data.get("retryAfter", 5)
            time.sleep(wait)
            continue

        return resp

    raise Exception("Max retries exceeded")

Conseils

  • Vérifiez les champs current dans les réponses de limite de débit pour comprendre vos schémas d'utilisation.
  • Si vous atteignez régulièrement les limites de concurrence, réduisez le nombre de requests parallèles.
  • Si vous atteignez les limites de RPM, ajoutez un léger délai entre les requests ou regroupez-les sur une période plus longue.
  • La valeur de retryAfter varie selon le type de limite : 2 secondes pour la concurrence, 5 secondes pour le RPM.
  • Une réponse « Service disabled » signifie qu'une maintenance est en cours. Ne continuez pas à solliciter l'endpoint.

Pages associées

Mis à jour : 15 avril 2026