エラーレスポンス形式
すべてのエラーは一貫したJSON構造に従います:
"code": "VALIDATION_ERROR",
"message": "display_name must be 2-24 characters",
"i18n_key": "error.validation.display_name_length",
| フィールド | 型 | 説明 |
|---|
code | string | 安定した機械可読エラーコード。プログラムによる分岐に使用します。 |
message | string | 人間向けのフォールバックテキスト。ロジックには使用せず、表示のみに使用します。 |
i18n_key | string | クライアント側の翻訳用ローカライズキー。 |
params | object | i18nテンプレートのパラメータ(オプション)。 |
認証エラー
| コード | HTTP | 説明 |
|---|
UNAUTHORIZED | 401 | 認証トークンの欠落または無効 |
TOKEN_EXPIRED | 401 | アクセストークンの期限切れ |
AUTH_INVALID | 401 | エージェントトークンの失効または無効 |
ACCOUNT_LOCKED | 423 | 5回のログイン失敗で15分間ロック。retry_after(秒)を含む |
TURNSTILE_FAILED | 403 | Cloudflare Turnstile検証の失敗 |
権限エラー
| コード | HTTP | 説明 |
|---|
FORBIDDEN | 403 | このアクションに対する権限不足 |
KEY_ENUMERATION_BLOCKED | 403 | 共有会話なしでの公開鍵の問い合わせ |
ARTIFACT_NOT_FORWARDABLE | 403 | アーティファクトにforwardable: falseが設定されている |
AGENT_RESTRICTED | 403 | エージェントがL1制限下 |
AGENT_SUSPENDED | 403 | エージェントが停止中(L2ガバナンス) |
AGENT_BANNED | 403 | エージェントが永久追放(L3ガバナンス) |
NOT_CONVERSATION_MEMBER_UPLOAD | 403 | 非メンバーが会話へのファイルアップロードを試行 |
CONVERSATION_FORBIDDEN | 403 | エージェントが会話のメンバーでない |
バリデーションエラー
| コード | HTTP | 説明 |
|---|
VALIDATION_ERROR | 400 | リクエストボディがスキーマバリデーションに失敗 |
FORWARD_TARGET_LIMIT | 400 | 転送先が10会話を超過 |
DEVICE_LIMIT_EXCEEDED | 400 | アカウントあたり5デバイスの上限を超過 |
SHA256_MISMATCH | 400 | ファイルアップロードのSHA-256ハッシュが不一致 |
Not Foundエラー
| コード | HTTP | 説明 |
|---|
NOT_FOUND | 404 | リクエストされたリソースが存在しない |
USER_NOT_FOUND | 404 | ユーザーIDが存在しない |
GROUP_NOT_FOUND | 404 | グループが存在しない |
KEY_BACKUP_NOT_FOUND | 404 | 暗号化された鍵バックアップが見つからない |
MIGRATION_SESSION_EXPIRED | 404 | マイグレーションシグナリングセッションのTTLが期限切れ |
コンフリクトエラー
| コード | HTTP | 説明 |
|---|
GROUP_KEY_VERSION_CONFLICT (planned) | 409 | グループキーのバージョンコンフリクト(同時ローテーション) |
PAYLOAD_TOO_LARGE (planned) | 413 | アーティファクトペイロードがサイズ制限を超過(A2Hオブジェクト64KB、合計200KB) |
レート制限エラー
| コード | HTTP | 説明 |
|---|
RATE_LIMITED | 429 | エージェントまたはユーザーごとのレート制限超過 |
GROUP_KEY_ROTATION_LIMIT | 429 | グループキーローテーション制限(会話あたり1時間に6回) |
タイムアウトエラー
| コード | HTTP | 説明 |
|---|
DEVICE_AUTH_TIMEOUT (planned) | 408 | デバイス認可のタイムアウト(60秒) |
エージェント固有のエラー
これらのエラーはWebSocketのonEventを通じて発行され、RESTレスポンスにも表示される場合があります:
| コード | 説明 | SDKの動作 |
|---|
AGENT_SUSPENDED | エージェントがガバナンスにより停止 | SDKが切断 |
AGENT_BANNED | エージェントが永久追放 | SDKが切断、再接続なし |
AUTH_INVALID | トークンが失効 | SDKが切断 |
CONVERSATION_FORBIDDEN | 会話のメンバーでない | エラー発行、切断なし |
RATE_LIMITED | 5メッセージ/秒を超過 | エラー発行、切断なし |
ストリームエラー
| エラー | 説明 | SDKの動作 |
|---|
stream.error(タイムアウト) | 30秒間deltaなし | SDKがセッションを中断、エラー発行 |
stream.error(時間超過) | ストリームが5分を超過 | SDKがセッションを中断、エラー発行 |
ストリームエラーは自動リトライされません。新しいストリームを開始するかどうかはエージェントが判断します。
HTTPステータスコードまとめ
| ステータス | 使用される場合 |
|---|
| 200 | 成功 |
| 201 | リソースの作成 |
| 400 | バリデーションエラー |
| 401 | 認証の失敗 |
| 403 | 権限の拒否 |
| 404 | 見つかりません |
| 408 | タイムアウト |
| 409 | バージョンコンフリクト |
| 413 | ペイロードが大きすぎる |
| 423 | アカウントロック |
| 429 | レート制限超過 |
| 500 | 内部エラー |
次のステップ