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

# エラーハンドリング

> Tiro APIでのエラー処理に関する完全ガイド

## エラーレスポンス形式

Tiro APIのすべてのエラーは、一貫したJSON構造に従います。

```json theme={"system"}
{
  "error": {
    "code": 400001,
    "errorType": "bad_request",
    "message": "Human readable error message",
    "detail": "Additional context or null"
  }
}
```

### フィールド

| Field       | Type                     | Description                                                                          |
| ----------- | ------------------------ | ------------------------------------------------------------------------------------ |
| `code`      | integer                  | `AAABBB`形式の6桁のエラーコード。先頭3桁はHTTP statusに対応し、末尾3桁はstatusごとの連番です。クライアント側でのきめ細かな分岐に使用します。 |
| `errorType` | string                   | HTTP statusから導出される粗い粒度のカテゴリです。時間が経っても安定しているため、クライアント側の分岐に安全に使用できます。下の表を参照してください。     |
| `message`   | string                   | 人が読めるエラーメッセージです。安定していないため、分岐には使用しないでください。                                            |
| `detail`    | object \| string \| null | 任意の追加コンテキスト（エラーによって異なります）。                                                           |

## HTTP Status CodeとError Type

| Status  | `errorType`            | Meaning                                      |
| ------- | ---------------------- | -------------------------------------------- |
| **400** | `bad_request`          | リクエストの形式またはパラメータが不正です                        |
| **401** | `unauthorized`         | API keyがない、または無効です                           |
| **403** | `forbidden`            | API keyに必要な権限がありません                          |
| **404** | `not_found`            | リソースが存在しません                                  |
| **406** | `not_acceptable`       | サポートされていない`Accept`ヘッダーです                     |
| **409** | `conflict`             | リソースがすでに存在する、または状態が競合しています                   |
| **413** | `payload_too_large`    | リクエストボディがサイズ上限を超えています                        |
| **422** | `unprocessable_entity` | 形式は正しいがデータが不正です                              |
| **429** | `too_many_requests`    | rate limitを超過しました                            |
| **5xx** | `internal_error`       | サーバー側のエラー（これ以上の解析は行わず、backoffを入れてリトライしてください） |
