エラーの分類
1. プロトコルエラー
AdCP ビジネスロジック外の通信・接続問題:- ネットワークタイムアウト
- 接続拒否
- TLS/SSL エラー
- JSON パースエラー
2. タスクエラー
status: "failed" で返るビジネスロジックの失敗:
- 在庫不足
- 無効なターゲティング
- 予算バリデーション失敗
- リソース未検出
3. バリデーションエラー
スキーマ検証に失敗する不正リクエスト:- 必須項目の欠落
- 無効な型
- 範囲外の値
エラーレスポンス形式
失敗した処理はステータスfailed とエラー詳細をトップレベルで返します:
エラーレスポンスのフィールド
| Field | Description |
|---|---|
status | エラー時は常に "failed" |
message | 人向けのエラー説明 |
error_code | 機械判読用コード |
suggestions | 任意の復旧提案 |
field | バリデーションエラーのフィールドパス |
retry_after | リトライまでの秒数(レート制限など) |
details | 追加のコンテキスト情報 |
標準エラーコード
認証エラー
| Code | Description | Resolution |
|---|---|---|
INVALID_CREDENTIALS | 無効/不正な認証情報 | API キーが正しく有効か確認 |
TOKEN_EXPIRED | Authentication token has expired | Refresh OAuth token or re-authenticate |
INSUFFICIENT_PERMISSIONS | Account lacks required permissions | Contact administrator to upgrade permissions |
Validation Errors
| Code | Description | Resolution |
|---|---|---|
MISSING_REQUIRED_FIELD | Required parameter is missing | Include all required fields |
INVALID_FIELD_VALUE | Field value doesn’t meet requirements | Provide valid values per specification |
INVALID_FIELD_FORMAT | Field format is incorrect | Use correct format as specified |
Resource Errors
| Code | Description | Resolution |
|---|---|---|
RESOURCE_NOT_FOUND | Requested resource doesn’t exist | Verify ID is correct and current |
PRODUCT_NOT_FOUND | Product ID doesn’t exist | Use get_products to find valid IDs |
CREATIVE_NOT_FOUND | Creative ID doesn’t exist | Use list_creatives to find valid IDs |
Operation Errors
| Code | Description | Resolution |
|---|---|---|
INSUFFICIENT_INVENTORY | Not enough inventory for request | Expand targeting or reduce impressions |
BUDGET_EXCEEDED | Request exceeds budget limits | Reduce budget or request limit increase |
INVALID_TARGETING | Targeting criteria is invalid | Adjust targeting parameters |
CREATIVE_REJECTED | Creative failed policy validation | Review and fix creative content |
Rate Limiting Errors
| Code | Description | Resolution |
|---|---|---|
RATE_LIMIT_EXCEEDED | Too many requests | Wait for retry_after seconds |
System Errors
| Code | Description | Resolution |
|---|---|---|
INTERNAL_SERVER_ERROR | Unexpected server error | Retry request, contact support if persistent |
SERVICE_UNAVAILABLE | External service temporarily down | Wait and retry |
TIMEOUT | Request exceeded processing time | Retry with smaller request or contact support |
Retry Logic
Exponential Backoff
Implement exponential backoff for retryable errors:Error Categorization
Group errors by whether they’re retryable:Rate Limit Handling
エラーハンドリングパターン
基本的なエラーハンドラー
ユーザーフレンドリーなメッセージ
技術的なエラーをユーザー向けメッセージに変換します:構造化されたエラーログ
デバッグのためにコンテキスト付きでエラーを記録します:Webhook のエラーハンドリング
Webhook 配信失敗
Webhook 配信に失敗した場合、ポーリングにフォールバックします:Webhook ハンドラーのエラー
Webhook エンドポイント内のエラーを丁寧に扱います:復旧戦略
コンテキストの復旧
コンテキストが期限切れの場合は新しい会話を開始します:部分的成功の扱い
Some operations may partially succeed:ベストプラクティス
- エラーを分類 - 種類に応じて対応を変える
- リトライを実装 - 一時的なエラーは指数バックオフで再試行
- レート制限を尊重 -
retry_afterを順守 - コンテキスト付きログ - デバッグ用に関連 ID を記録
- ユーザー向け文言に変換 - 技術的な内容をわかりやすく
- フォールバックを用意 - 常に代替策(例: Webhook 失敗時のポーリング)
- 恒久エラーは再試行しない - バリデーションエラーはコード修正
- 部分成功に対応 - 成功レスポンスの警告も処理
次のステップ
- Task Lifecycle: ステータス処理は Task Lifecycle
- Webhooks: Webhook エラー処理は Webhooks
- Security: 認証エラーは Security