CometAPI のエラー処理は、リクエスト形式の問題、認証の問題、パスの誤り、再試行可能なプラットフォーム障害 を切り分けると簡単になります。HTTP ステータス、Documentation Index
Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
Use this file to discover all available pages before exploring further.
error.code、error.message を組み合わせて、リクエストを修正すべきか再試行すべきかを判断してください。
クイックトリアージ
| Status | 通常の意味 | Retry? | 最初の対応 |
|---|---|---|---|
400 | リクエストが通常どおり処理される前に、リクエストの検証に失敗しました。 | いいえ | model、messages、JSON の構造、フィールドの型を検証してください。 |
401 | API キーが欠落している、形式が不正、または無効です。 | いいえ | Authorization: Bearer <COMETAPI_KEY> を確認してください。 |
403 | アクセスがブロックされたか、現在のリクエストが許可されていませんでした。 | 通常はいいえ | 動作確認済みのリクエストで再試行し、まず model 固有のフィールドを削除してください。 |
| Path mistake | base URL またはエンドポイントパスが誤っています。Comet では、これはきれいな JSON 404 ではなく、301 リダイレクトや HTML として現れる場合があります。 | いいえ | https://api.cometapi.com/v1 を正確に使用し、デバッグ中は自動リダイレクト追従を無効にしてください。 |
429 | レート制限または一時的な飽和状態です。 | はい | ジッター付きの指数バックオフを使用してください。 |
500 with error.code: invalid_request | 不正なリクエストがサーバーステータスのレスポンスとして返されました。 | いいえ | 再試行する前にリクエスト本文を修正してください。 |
500, 503, 504, 524 | プラットフォーム、プロバイダー、またはタイムアウト種別の障害です。 | はい | バックオフを使って再試行し、request id を保持してください。 |
エラーのエンベロープ
CometAPI の多くの失敗レスポンスでは、次のようなエラーボディが使われます。code が空のままです。ステータスが 500 の場合は、error.code と error.message を判断の決め手として扱ってください。
400 Bad Request
400 は通常、リクエストが正常に処理される前に、リクエスト本文の検証に失敗したことを意味します。
よくある原因:
modelなどの必須フィールドが不足している- JSON の構造が不正
- 誤った型でフィールドを送信している
- 選択したエンドポイントで受け付けない provider 固有のパラメータを再利用している
your-model-id は、CometAPI Models page にある現在の model ID に置き換えてください。
不正なチャットリクエストが常に 400 を返すとは限りません。messages などの必須チャットフィールドの欠落は、error.code: invalid_request を伴う 500 として現れる場合もあります。
500 Internal Server Error
ほとんどの 500 レスポンスは、プラットフォームまたはプロバイダーの障害を示します。Chat Completions では、一部の不正なリクエストが 500 として返されつつ、error.code: invalid_request を含むこともあります。
その一例が、messages を省略したリクエストです。
500 レスポンスに error.code: invalid_request がある場合は、リクエストの問題として扱ってください。
- リクエスト本文を修正する。
- ペイロードをエンドポイントスキーマと比較する。
- ペイロードを修正してからのみ再試行する。
500 レスポンスが不正なリクエストを示していない場合は、request id を保持し、バックオフを使用してください。
401 Invalid Token
トークンの失敗は通常、次のように見えます:
- ヘッダーは正確に
Authorization: Bearer <COMETAPI_KEY>である必要があります。 - アプリが
.env、shell history、またはデプロイ済みのシークレットストアから古いキーを読み込んでいないことを確認してください。 - 同じリクエストで1つのキーは失敗し、別のキーは動作する場合は、endpoint の問題ではなくトークンの問題として扱ってください。
403 Forbidden
403 は、ほとんどの場合次のいずれかの状況です:
- リクエストが、WAF フィルタリングなどのプラットフォーム側ルールによってブロックされている
- token または route に、要求された model またはリクエスト形状を使用する権限がない
- 選択した model が、渡した高度なパラメータのいずれかを拒否している
- 動作確認済みの model に対して、非常にシンプルなテキストリクエストで再試行します。
- 高度なフィールドと provider 固有のパラメータを削除し、その後で段階的に戻します。
- レスポンスに request id が含まれている場合は、サポートに連絡する前にそれを控えておいてください。
Wrong base URL or wrong path
Comet では、path の誤りは次のような形で表れることがあります:- リダイレクト
- クライアントがリダイレクトに従う場合の非 JSON の HTML レスポンス
- SDK 内部でのパースエラー
- API レイヤーに正常に到達しないリクエスト
- base URL に
/v1が含まれていることを確認します。 - endpoint path がドキュメントと完全に一致していることを確認します。
- path の問題をデバッグしている間は、自動リダイレクト追従を無効にします。
413 Request Entity Too Large
413 が表示された場合は、まず リクエストサイズ の問題として扱ってください。よくある原因は次のとおりです:
- 大きな base64 ペイロード
- インラインで埋め込まれたサイズの大きい画像または音声
- 非常に大きな multipart または JSON ボディ
- 添付コンテンツを削減または圧縮します。
- 大きなジョブをより小さなリクエストに分割します。
- 原因がプレーンテキストの長さだけだと決めつけないでください。
429 Too Many Requests
429 は再試行可能として扱ってください:
- ジッター付きの指数バックオフを使用します。
- バースト時の並行実行数を減らします。
- どの route と model が最初に飽和しているかを確認できるよう、リクエストログを有効にしておきます。
503, 504, and 524
これらのステータスは サーバー側またはタイムアウト系の障害 です。
実践的な指針:
503: route または provider サービスが一時的に利用不可504と524: プラットフォーム、エッジ、または provider サービス間で発生するタイムアウト系の障害
- バックオフ付きで再試行します。
request id、endpoint、model、timestamp を控えます。- 同じ障害が複数回の再試行でも繰り返される場合は、その情報を添えてサポートに連絡してください。
サポートに連絡する前に
まず、次の詳細を記録してください。- HTTP メソッド
- エンドポイントパス
- model ID
- サニタイズ済みのリクエスト body JSON(これはほとんどの API 呼び出しで最も有用な項目です)
- 失敗したリクエストで使用していた場合はクエリパラメータ
- クライアントが取得している場合は正確なレスポンス body
- 完全な HTTP ステータス
- 正確な
error.message - 任意の
request id - おおよそのタイムスタンプ
- 同じリクエストが別の model または別のトークンで動作するかどうか
- ファイルと一緒に送信したフィールド名とテキスト値
- ファイル名、ファイルタイプ、おおよそのファイルサイズ
- ファイルを直接アップロードしたのか、URL 参照なのか、base64 として埋め込んだのか