---
title: エラーと再試行
description: HTTPエラー、レート制限、OpenTester APIの安全な再試行を扱います。
---

# エラーと再試行 {#errors-and-retries}

APIの失敗はHTTPステータスとJSON本文で返します。

```json
{
  "message": "フィードバックが見つかりません。",
  "statusCode": 404
}
```

この例は`Accept-Language: ja`を使います。`message`は表示用で言語によって変わります。入力エラーには`title: ...; issueIds: ...`のようなフィールドパスを含む場合があります。REST APIは別の固定文字列エラーコードを提供しません。

## HTTPステータス別の処理 {#http-status-handling}

| 状態 | 主な原因 | 対処 |
| --- | --- | --- |
| `400` | UUID、フィールド、query、PR URLが不正。別アプリの報告 | 入力を修正 |
| `401` | セッションなし、トークン期限切れ・取り消し・不正、トークン管理にBearer使用 | 認証を確認 |
| `403` | 所有者ではない、別アプリのトークン、権限不足、Origin不許可 | アプリ・権限・送信元を確認 |
| `404` | 対象アプリに報告・作業・トークンがない | IDとアプリを再確認 |
| `409` | 同じIDで異なる内容、または別のPRが関連付け済み | 既存作業を確認 |
| `413` | JSON本文が64 KiB超 | 本文を縮小 |
| `429` | リクエスト過多 | `Retry-After`秒待つ |
| `500` | サーバー処理失敗 | 回数を制限して時間を空けて再試行 |

最初に失敗した検査の結果が返ります。例えばOriginなしの不正Bearer変更リクエストは、トークン検査前に`403`になる場合があります。

## レート制限 {#rate-limits}

既定のAutomation API制限はIPごとに毎分120回で、フィードバック、修正作業、トークン管理で共有します。アプリやトークンを替えても同じIPの利用量に合算されます。デプロイやプロキシ設定により追加制限がある場合があります。

`429`応答は待ち時間を秒で返します。

```http
HTTP/1.1 429 Too Many Requests
Retry-After: 28
Content-Type: application/json
```

ポーリングには間隔を設け、必要なページだけ取得します。同じリクエストを短い間隔で繰り返さないでください。

## 応答を受け取れない場合 {#missing-responses}

通信断やクライアントのタイムアウトでも、サーバーでは処理が完了している可能性があります。

| 操作 | 再試行の規則 |
| --- | --- |
| 報告・作業・トークン取得 | 同じリクエストで再試行 |
| 修正作業作成 | 同じ`clientRequestId`と本文を保持 |
| PR関連付け | 同じ作業IDとPR URLを保持 |
| トークン取り消し | 同じトークンIDで再試行 |
| トークン発行 | 自動再試行しない。毎回別トークンが発行される |

作成にはJSONの`clientRequestId`を使い、`Idempotency-Key`ヘッダーはありません。同じアプリ・作成者・キーで異なる内容は`409`です。結果が確定するまでIDと本文を一緒に保持します。

`429`では`Retry-After`を優先します。一時的な通信・サーバーエラーには、回数を制限した指数バックオフとランダムな待機を使います。`400`、`401`、`403`、`404`、`409`は原因を解決してから再試行します。

## よくある問題 {#common-issues}

### 同じ所有者の別アプリで403 {#403-on-another-app-owned-by-the-same-account}

トークンは1つのアプリに限定されます。対象アプリ用に発行し、`OPENTESTER_APP_ID`を一致させます。

### 書き込みできるが読み取りに失敗する {#writes-work-but-reads-fail}

権限は独立しています。報告取得には`feedback:read`、作業取得には`work-items:read`が必要です。

### 文書ドメインからのリクエストが失敗する {#requests-from-the-docs-domain-fail}

文書サイトは静的です。自動化にはAPI基本URLを使い、トークン管理などのWebセッション要求はログイン済みコンソールのOriginから行います。[認証](/ja/api/authentication)を参照してください。

### PR関連付け後も報告がopenのまま {#feedback-remains-open-after-linking-a-pr}

正常です。PR関連付けは作業にURLを保存します。報告の確認と状態変更はコンソールで別途行います。
