Limites de Taux
L'API ArchiCore implémente des limites de taux pour garantir une utilisation équitable.
Limites par Niveau
| Niveau | Requêtes/jour | Requêtes/minute | Projets |
|---|---|---|---|
| Gratuit | 100 | 10 | 3 |
| Pro | 10 000 | 100 | 25 |
| Enterprise | Illimité | 1 000 | Illimité |
En-têtes de Limite de Taux
Chaque réponse de l'API inclut les informations de limite de taux:
HTTP/1.1 200 OK
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640000000
| En-tête | Description |
|---|---|
X-RateLimit-Limit | Requêtes maximales autorisées |
X-RateLimit-Remaining | Requêtes restantes dans la fenêtre |
X-RateLimit-Reset | Timestamp Unix de réinitialisation |
Limite de Taux Dépassée
Lorsque vous dépassez la limite de taux:
HTTP/1.1 429 Too Many Requests
Retry-After: 60
{
"success": false,
"error": "Limite de taux dépassée",
"code": "RATE_LIMIT_EXCEEDED",
"retryAfter": 60
}
Bonnes Pratiques
1. Vérifier les En-têtes
Vérifiez toujours X-RateLimit-Remaining avant les requêtes:
async function makeRequest(url) {
const response = await fetch(url, { headers });
const remaining = response.headers.get('X-RateLimit-Remaining');
if (parseInt(remaining) < 10) {
console.warn('Limite de taux basse:', remaining);
}
return response.json();
}
2. Implémenter le Backoff Exponentiel
async function requestWithRetry(url, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, { headers });
if (response.status !== 429) {
return response.json();
}
const retryAfter = response.headers.get('Retry-After') || 60;
await sleep(retryAfter * 1000 * Math.pow(2, i));
}
throw new Error('Maximum de tentatives dépassé');
}
3. Mettre en Cache les Réponses
Cachez les réponses pour réduire les appels API:
const cache = new Map();
async function getCached(key, fetchFn, ttl = 60000) {
const cached = cache.get(key);
if (cached && Date.now() - cached.timestamp < ttl) {
return cached.data;
}
const data = await fetchFn();
cache.set(key, { data, timestamp: Date.now() });
return data;
}
4. Opérations par Lots
Utilisez les endpoints par lots si disponibles:
// Au lieu de multiples requêtes
for (const id of projectIds) {
await client.projects.get(id); // ❌ Multiples requêtes
}
// Utiliser l'endpoint par lots
await client.projects.getBatch(projectIds); // ✓ Une seule requête
Augmenter les Limites
Besoin de limites plus élevées? Passez à Pro ou contactez-nous pour les plans Enterprise.