# Limites

https://gorally.games/developpeurs/limites

Chaque clé a un quota de requêtes, un délai par requête et une taille de corps maximale. Ce guide dit quoi respecter et quoi faire en cas de refus.

## Le quota de ta clé

Chaque clé peut envoyer :

- 120 requêtes par minute ;
- 3 000 requêtes par heure.

Au-delà, l’API répond `429` avec le code `RATE_LIMITED`. Elle ajoute l’en-tête `Retry-After`, le nombre de secondes à attendre.

Le quota est par clé. Deux clés ont deux quotas.

## Que faire d’un 429

1. Attends au moins `Retry-After` secondes.
2. Renvoie la requête.
3. Si le `429` revient, double l’attente à chaque essai et ajoute un délai au hasard.

```js
async function appeler(url, options, essais = 5) {
  for (let essai = 0; essai < essais; essai += 1) {
    const reponse = await fetch(url, options);
    if (reponse.status !== 429) return reponse;
    const attente = Number(reponse.headers.get('Retry-After') ?? 1) * 2 ** essai;
    await new Promise((fin) => setTimeout(fin, (attente + Math.random()) * 1000));
  }
  throw new Error('Quota toujours dépassé');
}
```

Pour ne pas y arriver, demande des pages de `limit` 100. Suis aussi les événements par webhook plutôt que d’interroger l’API en boucle.

## Le délai de 10 secondes

Une requête qui dure plus de 10 secondes est coupée. L’API répond `503` avec `LEAGUES_UNAVAILABLE` et `Retry-After: 30`.

Une écriture coupée a peut-être réussi. Relis l’élément ou les événements (`GET /events`) avant de la renvoyer.

Si rien n’a été écrit, renvoie-la avec une clé neuve. La même clé peut répondre `409` sans rien exécuter : lis le guide « Idempotence ».

## La taille du corps

Un corps de requête ne dépasse pas 16 Kio. Au-delà, l’API répond `413` avec `BODY_TOO_LARGE`.

L’API ne transporte aucun fichier : réduis le corps, ne le découpe pas.

## Les changements de limites

Ces valeurs peuvent changer. Tout changement est annoncé avec préavis. La page « Versions et règles d’utilisation » explique comment, et le journal des changements le date.

## Et ensuite

- Relis le guide « Erreurs » pour la liste complète des codes.
