error.code は安定した機械判読用の文字列です。error.message は人間向けの説明で、バージョン間で変わる可能性があります。原則として code でパースし、message はログに残してください。
エラーコード一覧
クロステナント 404
別組織に属するリソースは403 forbidden ではなく 404 not_found を返します。これは意図的な挙動です。403 を返すと ID の存在が漏洩するため、「存在しない」と区別のつかない 404 を返すことで ID 列挙攻撃を防いでいます。この挙動は動画だけでなく、すべてのリソースパスに適用されます。
具体例として、組織 A のキーで組織 B の動画 ID に対して GET /v1/videos/{id} を呼ぶと、以下が返ります。
キーの自己失効
キーが漏洩した場合、Web UI にアクセスせずともキーの保持者自身で失効できます。401 unauthorized を返します。
request_id の使い方
すべてのレスポンス(成功・失敗にかかわらず)に meta.request_id が含まれます。問題を報告する際に添えていただくと、サーバ側で該当リクエストの正確なタイミング・入力・処理バックエンドを追跡できます。
req_ + 32 文字の小文字 16 進数(ハイフンを除いた UUID)です。同じ ID は X-Request-Id レスポンスヘッダーにも入るので、ログとの突き合わせが容易です。
レート制限
レート制限は API キー単位で強制されます。超過時は429 rate_limited が返り、Retry-After ヘッダーに待機秒数が入ります。
現時点ではすべての発行済みキーにレート制限が適用されているわけではありません。将来のリリースでスコープごとの標準値が適用される予定です。
Retry-After を常に尊重する設計にしておけば、制限適用への切り替え時にクライアント側の変更は不要になります。固定間隔をハードコードしないでください。バリデーションエラー
validation_failed(422)は開発中に最も多く遭遇するエラーです。message にはフィールドパスが入ります。
limitが1–100の範囲外(デフォルトは 25)created_after/created_beforeが ISO 8601 として不正statusフィルタが許容 enum 外 — リソース別のステータス値は APIリファレンス タブを参照POST /v1/webhooksのボディで必須フィールドが欠落