DocsLimites de debit

Limites de debit

Comprenez les limites de debit de l'API FreeFileTools et comment les gerer dans votre application.

Limites du plan gratuit

LimiteValeur
Requetes par heure50
Taille maximale de fichier par requete25 MB
Fenetre de limite de debitRolling 1 hour

La limite de debit est appliquee par API key. Chaque cle dispose de son propre compteur independant qui se reinitialise sur une base horaire glissante.

Lorsque les limites de debit sont depassees

Lorsque vous depassez la limite de debit, l'API renvoie une reponse 429 Too Many Requests :

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

Le champ retryAfter indique le nombre de secondes a attendre avant d'effectuer une autre requete.

En-tetes de reponse de limite de debit

Chaque reponse API inclut des en-tetes pour vous aider a suivre votre utilisation de la limite de debit :

En-teteDescription
X-RateLimit-LimitNombre maximal de requetes autorisees par heure (50)
X-RateLimit-RemainingNombre de requetes restantes dans la fenetre actuelle
Retry-AfterSecondes a attendre avant de reessayer (uniquement sur les reponses 429)

Exemple d'en-tetes de reponse

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

Conseils pour rester dans les limites

1.

Verifiez les requetes restantes

Surveillez l'en-tete X-RateLimit-Remaining pour savoir combien de requetes il vous reste.

2.

Implementez un backoff exponentiel

Lorsque vous recevez une reponse 429, attendez et reessayez avec des delais croissants au lieu de bombarder l'API.

3.

Mettez les resultats en cache

Si vous traitez les memes fichiers a plusieurs reprises, mettez les resultats en cache localement pour eviter les appels API inutiles.

4.

Regroupez intelligemment

Pour le traitement par lots, espacez vos requetes dans le temps au lieu de les envoyer toutes en meme temps.

Exemple : Gestion des limites de debit en JavaScript

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");
}