Concepts
Limites de débit
Combien de requêtes envoyer, et que faire en cas de 429.
Les limites protègent votre solde et gardent l’API rapide pour tous. Quand vous en atteignez une, la requête échoue avec 429, type rate_limit_error, code rate_limited, et un en-tête Retry-After : le nombre de secondes avant la réouverture de la fenêtre (1 au moins).
Limites
| Limite | Comptée par | Valeur |
|---|---|---|
| Toutes les requêtes | Clé d’API (clés de test et de production séparément) | 100 requêtes par 10 secondes |
| Encaissements, paiements et reversements créés | Entreprise, test et production confondus | 300 par heure |
| Titulaires créés | Entreprise | 60 par heure |
| Vérifications d’identité envoyées | Titulaire | 5 par 24 heures |
| Renvois d’événement | Événement | 10 par heure |
Lister les opérateurs et Lister les banques sont mis en cache jusqu’à 10 minutes : les appeler plus souvent renvoie la même réponse.
Quotas
| Quota | Valeur |
|---|---|
| Clés d’API actives | 20 par entreprise |
| Points de terminaison | 10 par entreprise, test et production confondus (400 limit_reached) |
| Corps de requête | 12 Mo (413 body_too_large) |
| Image de pièce d’identité | 4 Mo chacune |
| Objets par page de liste | 100 |
Traiter un 429
Attendez Retry-After secondes, puis renvoyez la même requête avec la même Idempotency-Key. Étalez les traitements par lots au lieu de tout envoyer d’un coup.
async function monerail(path, init = {}, attempts = 5) {
for (let i = 0; ; i++) {
const res = await fetch('https://api.monerail.com/v1' + path, {
...init,
headers: { Authorization: `Bearer ${process.env.MONERAIL_KEY}`, ...init.headers },
});
if (res.status !== 429 || i + 1 >= attempts) return res;
const wait = Number(res.headers.get('Retry-After')) || 1;
await new Promise((resolve) => setTimeout(resolve, wait * 1000));
}
}import os
import time
import requests
def monerail(method, path, attempts=5, **kwargs):
headers = {"Authorization": f"Bearer {os.environ['MONERAIL_KEY']}", **kwargs.pop("headers", {})}
for i in range(attempts):
res = requests.request(method, "https://api.monerail.com/v1" + path, headers=headers, timeout=30, **kwargs)
if res.status_code != 429 or i + 1 == attempts:
return res
time.sleep(int(res.headers.get("Retry-After", "1")))Contactez support@monerail.com si votre volume demande des limites plus hautes.