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é)
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
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)
https://braidrun.com/api/webhook-trigger/approval/appr-123/approve?api_key=dyk_<id>_<secret>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é
Authorization: Bearer dyk_…X-API-Key: dyk_…?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
| Forfait | par minute | quotidiennement |
|---|---|---|
| Free | 60 | 2,000 |
| Pro | 300 | 50,000 |
| Team | 1,200 | 500,000 |
| Enterprise | 6,000 | Tous |
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/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-WindowVous 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
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'état | sens | stratégies d'adaptation |
|---|---|---|
200 | succès | — |
202 | Accepté (lorsque l'exécution est lancée) | Interroger le statut avec l'executionId renvoyé |
400 | Corps de la requête invalide (erreur JSON/champ) | Demande de correction ; ne réessayez pas |
401 | Le jeton est manquant/mauvais format/révoqué/expiré/portée insuffisante | Revérifiez le jeton et la portée ; n'essaye pas à nouveau |
403 | Le compte du propriétaire du jeton a été désactivé/verrouillé | Contactez l'administrateur de votre compte ; n'essaye pas à nouveau |
404 | La ressource n'existe pas ou n'a aucune visibilité | Vérifier l'ID/la portée ; ne réessaye pas |
409 | Conflit de statut (par exemple, l'approbation a été décidée) | Interroger à nouveau l'état actuel |
429 | Limitation de débit | Réessayez après avoir respecté Retry-After |
500/502/503 | Erreur de serveur | Arrêt exponentiel + gigue, réessayez 3 à 5 fois |
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.