Aller au contenu principal
DocumentPlateforme ouverte APIAuthentification et limitation de débit

Authentification et limitation de débit

Bearer / X-API-Key / requête trois méthodes d'écriture, limite de débit de paquet, sémantique du code d'état HTTP.

Tous les points de terminaison de la plateforme ouverte sont authentifiés uniformément via la clé API. Cette page explique clairement les trois manières d'écrire les jetons, les limites de débit des packages et la sémantique des réponses d'erreur.

Trois méthodes d'écriture d'authentification

1. Autorisation : Au porteur (recommandé)

bash
curl https://braidrun.com/api/v1/workflows \
  -H "Authorization: Bearer dyk_<id>_<secret>"

La méthode d'écriture la plus standard, prise en charge par tous les SDK par défaut. L'environnement de production est préféré.

2.En-tête X-API-Key

bash
curl https://braidrun.com/api/v1/workflows \
  -H "X-API-Key: dyk_<id>_<secret>"

Convient aux scénarios dans lesquels le proxy de certains réseaux fermés ne peut pas transmettre l'en-tête d'autorisation. Fonctionnellement équivalent à Bearer.

3. Paramètre de requête ?api_key= (uniquement dans les scénarios où l'en-tête ne peut pas être écrit)

text
https://braidrun.com/api/webhook-trigger/approval/appr-123/approve?api_key=dyk_<id>_<secret>
Utilisez les paramètres de requête avec prudence

Les paramètres de requête seront enregistrés dans l'historique du navigateur, l'en-tête du référent, les journaux d'accès au serveur HTTP et les journaux CDN. Il n'est utilisé que dans des scénarios qui doivent être déclenchés sous la forme de liens GET (tels que des liens d'approbation en un clic par e-mail/Slack/Telegram) et est utilisé avec une clé TTL courte. N'abandonnez jamais la priorité du porteur pour interroger les paramètres.

Priorité

  1. Authorization: Bearer dyk_…
  2. X-API-Key: dyk_…
  3. ?api_key=dyk_…

Essayez de haut en bas et arrêtez l'analyse lorsque vous en trouvez un non vide.

Limitation de débit

Chaque clé API a deux limites supérieures « par minute » et « quotidiennement », qui sont automatiquement appliquées en fonction du package du propriétaire de la clé. Chaque clé dispose d'un quota indépendant et n'est pas partagée avec d'autres clés du même compte.

Tableau comparatif des forfaits

Forfaitpar minutequotidiennement
Free602,000
Pro30050,000
Team1,200500,000
Enterprise6,000Tous

Sémantique des fenêtres

  • fenêtre des minutes · Utilisez les minutes d'époque comme clé, et la limite est automatiquement réinitialisée toutes les minutes (pas la fenêtre glissante à partir du premier appel)
  • quotidiennement (fenêtre de jour) · Utilisez la date UTC comme clé, réinitialisée automatiquement à 00h00 UTC tous les jours

Quand la limite est atteinte

http
HTTP/1.1 429 Too Many Requests
Retry-After: 38
X-RateLimit-Limit: 60
X-RateLimit-Window: minute
Content-Type: application/json

{
  "error": "Rate limit exceeded",
  "window": "minute",
  "limit": 60,
  "retryAfterSeconds": 38
}

Le client doit :

  • Lisez l'en-tête Retry-After (nombre de secondes), attendez la durée correspondante, puis réessayez.
  • X-RateLimit-Window Vous indique quelle fenêtre a été touchée (minute/jour)
  • Retard exponentiel + gigue ; ne réessayez pas immédiatement après avoir reçu 429
Plusieurs clés pour diviser le trafic

Besoin d’un débit plus élevé ? Des clés indépendantes sont émises pour différents environnements/différentes intégrations, et chaque clé reçoit un quota complet. Un utilisateur Pro ouvrant 3 clés équivaut à une capacité totale de 900 tr/min. C'est également la meilleure pratique pour localiser un accident : lorsqu'un problème survient, il vous suffit de vérifier quelle clé a été utilisée de manière anormale.

Code de réponse HTTP

code d'étatsensstratégies d'adaptation
200succès
202Accepté (lorsque l'exécution est lancée)Interroger le statut avec l'executionId renvoyé
400Corps de la requête invalide (erreur JSON/champ)Demande de correction ; ne réessayez pas
401Le jeton est manquant/mauvais format/révoqué/expiré/portée insuffisanteRevérifiez le jeton et la portée ; n'essaye pas à nouveau
403Le compte du propriétaire du jeton a été désactivé/verrouilléContactez l'administrateur de votre compte ; n'essaye pas à nouveau
404La ressource n'existe pas ou n'a aucune visibilitéVérifier l'ID/la portée ; ne réessaye pas
409Conflit de statut (par exemple, l'approbation a été décidée)Interroger à nouveau l'état actuel
429Limitation de débitRéessayez après avoir respecté Retry-After
500/502/503Erreur de serveurArrêt exponentiel + gigue, réessayez 3 à 5 fois
Pourquoi 401 ne fait pas de distinction entre les raisons

Les jetons manquants, expirés, révoqués et à portée insuffisante renvoient tous 401 de manière uniforme, sans exposer la raison spécifique de l'échec - cela évite aux attaquants de recourir à des essais et des erreurs pour détecter quelles clés existent/quelles portées sont activées. La raison complète de l'échec (champ de raison) est conservée dans le journal d'audit et peut être vérifiée par l'administrateur.