# エラーと制限

エラーは共通の形式で返り、課金されません。1 エンジンの失敗でリクエスト全体は失敗せず、その回答の status が timeout または failed になり error フィールドに理由が入ります（無料）。他のエンジンは通常どおり返ります。指定したエンジンがすべて利用不可の場合のみ、リクエスト全体が 503 になります。

| HTTP | code | 意味 |
| --- | --- | --- |
| 400 | `invalid_request` | パラメータ不足または形式不正。message に該当フィールド |
| 400 | `unsupported_engine` | engines に不明なエンジン id |
| 401 | `invalid_api_key` | API キーがない・誤り・無効化済み |
| 402 | `insufficient_credits` | 残高が仮押さえ分に足りない |
| 403 | `plan_not_allowed` | 現在のプランでは使えない（Starter の index、Pro の group_by など） |
| 404 | `not_found` | job_id が存在しないか期限切れ |
| 500 | `internal_error` | サーバーエラー。request_id を添えてサポートへ |
| 503 | `engines_unavailable` | 指定したエンジンがすべて一時的に利用不可。Retry-After（秒）付きで返り、仮押さえ・課金はありません。1 つでも利用可能なら通常どおり処理します |

```json
{
  "error": {
    "code": "insufficient_credits",
    "message": "本次请求需预占 9 credits，余额 4",
    "request_id": "req_7a11c2"
  }
}
```

```json
{
  "error": {
    "code": "engines_unavailable",
    "message": "请求的引擎当前都不可用：claude、grok",
    "request_id": "req_5c02e4"
  }
}
```

### 制限

- アカウント単位のレート制限はありません。安定のため同時実行は 100 未満を推奨（負荷試験で確定予定）。
- 1 リクエストあたり最大 8 エンジン × 10 サンプル = 80 回答。
- エンジンの一時的なエラー（ネットワーク、タイムアウト、レート制限、5xx）は制限時間内で最大 2 回自動リトライします。追加課金はありません。
- prompt は最大 2,000 文字、competitors は最大 20 個。
- キャッシュは 24 時間、非同期ジョブ結果は 7 日間保持。
