Passer au contenu principal

Niveaux de Limite de Débit

Type d’OpérationLimite de DébitPoints de Terminaison
Opérations de Lecture (GET)200 requêtes/minLister/obtenir l’entreprise, les espaces de travail, les modèles, les demandes de signature, les webhooks, les paramètres
Opérations d’Écriture (POST/PUT/PATCH/DELETE)120 requêtes/minCréer/mettre à jour/supprimer des espaces de travail, des modèles, des demandes de signature, des informations d’entreprise, des paramètres
Opérations CRUD sur les Webhooks60 requêtes/minCréer, mettre à jour, supprimer des webhooks
Test de Webhook10 requêtes/minEnvoyer un webhook de test
Régénération/Expiration de Clé API1 requête/minRégénérer ou faire expirer les clés API de l’espace de travail
Rotation du Secret de Webhook1 requête/minFaire tourner le secret de signature du webhook
Par exemple, dans le tableau ci-dessus, vous pouvez effectuer 200 GET par minute par clé API. Chaque espace de travail possède sa propre clé API.

En-têtes de Limite de Débit

Chaque réponse de l’API inclut des en-têtes indiquant l’état actuel de votre limite de débit :
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 195
X-RateLimit-Reset: 1734451200
En-têteDescription
X-RateLimit-LimitNombre maximal de requêtes autorisées par minute pour ce point de terminaison
X-RateLimit-RemainingNombre de requêtes restantes dans la fenêtre actuelle
X-RateLimit-ResetHorodatage Unix auquel la limite de débit se réinitialise

Réponse en Cas de Dépassement de la Limite de Débit

Lorsque vous dépassez la limite de débit, l’API renvoie une réponse 429 Too Many Requests :
{
  "error": "Too Many Requests",
  "message": "Rate limit exceeded. Please retry after 45 seconds.",
  "code": "RATE_LIMIT_EXCEEDED"
}
En-tête Supplémentaire :
Retry-After: 45
L’en-tête Retry-After indique le nombre de secondes à attendre avant de réessayer.

Bonnes Pratiques pour les Limites de Débit

  1. Surveillez les en-têtes de limite de débit - Vérifiez X-RateLimit-Remaining pour savoir quand vous approchez de la limite
  2. Implémentez un backoff exponentiel - Lorsque vous recevez des erreurs 429, attendez progressivement plus longtemps entre les tentatives
  3. Mettez les réponses en cache - Stockez les données fréquemment consultées pour réduire les appels API
  4. Groupez les opérations - Utilisez les points de terminaison de mise à jour complète (PUT) plutôt que plusieurs requêtes PATCH
  5. Utilisez les webhooks - Abonnez-vous aux événements plutôt que d’interroger périodiquement les changements de statut
  6. Respectez Retry-After - Attendez toujours le temps indiqué avant de réessayer

Exemple : Gestion des Limites de Débit

async function makeApiRequest(url, options, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const response = await fetch(url, options);
    
    // Check rate limit headers
    const remaining = parseInt(response.headers.get('X-RateLimit-Remaining'));
    const resetTime = parseInt(response.headers.get('X-RateLimit-Reset'));
    
    if (remaining < 10) {
      console.warn(`Rate limit warning: ${remaining} requests remaining`);
    }
    
    // Handle rate limit exceeded
    if (response.status === 429) {
      const retryAfter = parseInt(response.headers.get('Retry-After') || '60');
      console.log(`Rate limited. Retrying after ${retryAfter} seconds...`);
      
      if (attempt < maxRetries - 1) {
        await new Promise(resolve => setTimeout(resolve, retryAfter * 1000));
        continue;
      }
    }
    
    return response;
  }
  
  throw new Error('Max retries exceeded');
}

// Usage
const response = await makeApiRequest(
  'https://api.firma.dev/functions/v1/signing-request-api/templates',
  {
    headers: {
      'Authorization': process.env.FIRMA_API_KEY,
      'Content-Type': 'application/json'
    }
  }
);

Pour les Applications à Très Fort Volume

Les limites de débit peuvent être augmentées sur demande auprès de l’Assistance. Veuillez contacter l’assistance si vous pensez avoir besoin d’une limite de débit plus élevée pour votre cas d’utilisation.