認証とレート制限
Bearer / X-API-Key / query 3 つの記述方法、パッケージ レート制限、HTTP ステータス コード セマンティクス。
オープン プラットフォームのすべてのエンドポイントは、API キーを通じて均一に認証されます。このページでは、トークンを記述する 3 つの方法、パッケージのレート制限、エラー応答のセマンティクスについて明確に説明します。
3つの認証書き込み方式
1.権限:Bearer(推奨)
curl https://braidrun.com/api/v1/workflows \
-H "Authorization: Bearer dyk_<id>_<secret>"最も標準的な書き込み方法で、すべての SDK でデフォルトでサポートされています。実稼働環境が優先されます。
2.X-API-Key ヘッダー
curl https://braidrun.com/api/v1/workflows \
-H "X-API-Key: dyk_<id>_<secret>"一部の閉じたネットワークのプロキシが認証ヘッダーを転送できないシナリオに適しています。機能的には Bearer と同等です。
3. クエリパラメータ ?api_key= (ヘッダーを書き込めないシナリオのみ)
https://braidrun.com/api/webhook-trigger/approval/appr-123/approve?api_key=dyk_<id>_<secret>クエリ パラメータは、ブラウザ履歴、リファラー ヘッダー、HTTP サーバー アクセス ログ、CDN ログに記録されます。これは、GET リンク (電子メール/Slack/Telegram のワンクリック承認リンクなど) の形式でトリガーする必要があるシナリオでのみ使用され、短い TTL キーとともに使用されます。クエリパラメータに対するベアラーの優先順位を決して放棄しないでください。
優先順位
Authorization: Bearer dyk_…X-API-Key: dyk_…?api_key=dyk_…
上から下に試して、空でないものが見つかったら解析を停止します。
レート制限
各 API キーには「1 分あたり」と「1 日あたり」の 2 つの上限があり、キー所有者のパッケージに応じて自動的に適用されます。 各キーには独立したクォータがあり、同じアカウント内の他のキーと共有されません。
パッケージ比較表
| パッケージ | 毎分 | 毎日 |
|---|---|---|
| Free | 60 | 2,000 |
| Pro | 300 | 50,000 |
| Team | 1,200 | 500,000 |
| Enterprise | 6,000 | 指定なし |
ウィンドウセマンティクス
- 分窓 · エポック分をキーとして使用し、境界は 1 分ごとに自動的にリセットされます (最初の通話から始まるスライディング ウィンドウではありません)。
- 毎日(日枠) · UTC 日付をキーとして使用し、毎日 00:00 UTC に自動的にリセットされます
限界に達したとき
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
}クライアントは次のことを行う必要があります。
- Retry-After ヘッダー (秒数) を読み取り、対応する時間だけ遅延してから再試行します。
X-RateLimit-Windowどのウィンドウがヒットしたかを示します (分/日)- 指数関数的バックオフ + ジッター。 429 を受信した直後に再試行しないでください
より高いスループットが必要ですか?異なる環境/異なる統合に対して独立したキーが発行され、各キーには完全なクォータが割り当てられます。 Pro ユーザーが 3 つのキーを開くと、合計 900 RPM の容量に相当します。これは、事故の場所を特定するためのベスト プラクティスでもあります。問題が発生した場合、どのキーが異常な使用法を持っているかを確認するだけで済みます。
HTTPレスポンスコード
| ステータスコード | 意味 | 対処戦略 |
|---|---|---|
200 | 成功 | — |
202 | 承諾(実行開始時) | 返された実行IDを使用してステータスをポーリングします。 |
400 | 無効なリクエストボディ (JSON/フィールドエラー) | 修正リクエスト;再試行しないでください |
401 | トークンが見つからない/間違った形式/失効/期限切れ/スコープが不十分です | トークンとスコープを再確認します。再試行しないでください |
403 | トークン所有者のアカウントが非アクティブ化/ロックされています | アカウント管理者に連絡してください。再試行しないでください |
404 | リソースが存在しないか、可視性がありません | ID/スコープを確認してください。再試行しないでください |
409 | ステータスの矛盾(例:承認が決定された) | 現在のステータスを再度問い合わせる |
429 | レート制限 | Retry-Afterに従ってから再試行してください |
500/502/503 | サーバーエラー | 指数関数的バックオフ + ジッター、3 ~ 5 回の再試行 |
トークンの欠落、期限切れ、取り消し、およびスコープの不足はすべて、特定の失敗理由を明らかにすることなく、一律に 401 を返します。これにより、攻撃者がどのキーが存在するか、どのスコープが有効になっているかを検出するために試行錯誤することが回避されます。完全な失敗理由 (理由フィールド) は監査ログに保持され、管理者が確認できます。