> ## Documentation Index
> Fetch the complete documentation index at: https://help.comdesk.com/llms.txt
> Use this file to discover all available pages before exploring further.

# エラー

> 統一されたエラーエンベロープ、すべてのエラーコード、X-Request-ID を用いたデバッグ方法。

すべてのエラーは単一の JSON エンベロープを共有するため、クライアント側で統一的に処理できます。

## エラーエンベロープ

```json theme={null}
{
  "error": {
    "code": "invalid_api_key",
    "message": "The provided API key is invalid or has been revoked.",
    "details": null
  }
}
```

| フィールド | 説明 |
| - | - |
| `code` | 安定した機械可読のエラーコード（分岐はこれで行う） |
| `message` | 人間向けの説明（解析しないこと） |
| `details` | 該当する場合のフィールド別バリデーションエラー、なければ `null` |

`422 validation_error` の場合、`details` に問題のフィールドが入ります：

```json theme={null}
{
  "error": {
    "code": "validation_error",
    "message": "The request payload failed validation.",
    "details": {
      "phone_number": ["The phone_number format is invalid."],
      "staff_id": ["The selected staff_id is invalid."]
    }
  }
}
```

## エラーコード

| ステータス | コード | 意味 | 対処 |
| - | - | - | - |
| 401 | `invalid_api_key` | キーが欠落・不正・失効 | `Authorization` ヘッダーを確認。失効ならローテーション |
| 401 | `expired_api_key` | キーが有効期限切れ | 管理者に新しいキーの発行を依頼 |
| 403 | `insufficient_scope` | キーに必要なスコープがない | 管理者にスコープの追加を依頼 |
| 403 | `ip_not_allowed` | 送信元 IP が許可リストにない | サーバー IP を許可リストに追加 |
| 404 | `resource_not_found` | ID が存在しない／自テナント外 | ID が自テナントのものか確認 |
| 422 | `validation_error` | バリデーション失敗 | `details` を確認し、該当フィールドを修正 |
| 429 | `rate_limit_exceeded` | 当該分のリクエスト過多 | `Retry-After` 後にバックオフして再試行 |
| 429 | `quota_exceeded` | 日次・月次クォータ枯渇 | リセットを待つか Comdesk に連絡 |
| 500 | `internal_error` | サーバー側エラー | `X-Request-ID` を記録しサポートに連絡 |

## X-Request-ID でのデバッグ

すべてのレスポンスには `X-Request-ID` ヘッダー（そのリクエスト固有の UUID v4）が含まれます。独自の `X-Request-ID` を**送信**すると、Comdesk はそれをそのまま返すため、自社ログと Comdesk のログを相関できます。

```text theme={null}
X-Request-ID: 550e8400-e29b-41d4-a716-446655440000
```

<Note>
  エラーが発生したら、レスポンスの `X-Request-ID` を控えてください。同じ ID は **設定 → Open API → 利用ダッシュボード → 直近のリクエストログ** で確認でき、サポートはエンドツーエンドで追跡できます。これにより調査が桁違いに速くなります。
</Note>
