Felo API PlatformFelo API Platform

ガイド

エラー、レート制限、リトライ

エラー応答とレート制限ヘッダーを読み、安全に再試行し、よくある障害を特定します。

すべての Felo API は、安定したエラーコードと request ID を含む JSON のエラーボディを返します。まず HTTP ステータス、次に code、最後に message を読んでください。

エラーの封筒

現在の本番環境のレスポンスは、HTTP ステータスを status として返します。

{
  "status": 401,
  "code": "UNAUTHORIZED",
  "message": "Invalid API Key",
  "request_id": "202610221444486982113280416060637185"
}
フィールド意味
statusHTTP ステータスコード(ボディにも同じ値)
code機械可読なエラーコード
message人が読むための説明
request_idこのリクエストの不透明な識別子。サポートに連絡する際に含めます

一部の古い endpoint の例では status: "error" と異なるコード文字列を使っています。message の正確な文言ではなく、HTTP ステータスと code で分岐してください。

よくあるコード

HTTPCode意味対処
400Endpoint 固有の検証コードパラメータの欠落または不正リクエストを修正する。そのまま再試行しない
401UNAUTHORIZEDAPI key の欠落、無効、期限切れ、失効Authorization: Bearer $FELO_API_KEY を送る。失効している場合は key をローテーションする
402INSUFFICIENT_CREDITSサービス利用枠が不足Console Billing でチャージしてから再試行
404Endpoint 固有不明なモデル、タスク、ルートモデル ID やタスク ID、endpoint のパスを確認
429RATE_LIMITEDレート制限に達したRetry-After を待ってから再試行
5xxCHAT_FAILED、*_FAILED、SERVICE_UNAVAILABLE上流またはサービスの障害バックオフ付きで再試行。続く場合はサポートに連絡

endpoint のリファレンスには、その endpoint 固有のコードが記載されています。Chat API のエラーか、呼び出す endpoint のリファレンスから始めてください。

Request ID

Felo のエラーボディには request_id が含まれます。endpoint、HTTP ステータス、エラーコード、モデル ID、タスク ID と一緒に記録してください。API key 全体は決してログに残さないでください。

Model API は任意の X-Request-Id リクエストヘッダーも受け付けます。送ると診断用にエコーバックされるため、自分のログとリクエストを対応付けられます。送らない場合は返された request_id を使ってください。

レート制限

/v2/chat は、ドキュメント化された強制レート制限がある唯一の Felo endpoint です。

  • API key ごと、1 分間のウィンドウ。
  • ユーザーごと、1 分間のウィンドウ。
  • ユーザーごと、1 時間のウィンドウ。

有効な有料 Felo サブスクリプション(エンタープライズ含む)を持つユーザーは免除され、X-RateLimit-* ヘッダーを受け取りません。サブスクリプション状態を確認できない場合、制限は適用されます。

ヘッダー意味
X-RateLimit-Limit現在有効な最も厳しい次元の上限
X-RateLimit-Remaining3 次元のうち残りの最小値
X-RateLimit-Reset現在のウィンドウがリセットされる Unix タイムスタンプ(秒)
Retry-After429 時の推奨待機秒数

その他の /v2/** endpoint には現在強制レート制限はありません。Model API のリクエストは上流プロバイダーによって制限され、429 として現れることがあります。

数値の上限をハードコードしないでください。各レスポンスのヘッダーを読んでください。

リトライポリシー

状況再試行するか
400、401、402、404しない。まずリクエスト、key、残高を修正する。
429Retry-After または X-RateLimit-Reset の後に再試行する。
5xx、タイムアウト、接続リセット指数バックオフと jitter を付けて再試行する。
ストリーミング中に接続が切れた重複生成を許容できる場合のみ再試行する。

推奨するループ:

  1. 冪等または安全に繰り返せるリクエストだけを再試行する。
  2. 指数バックオフを使う。約 1 秒から始めて倍にし、最大 30 秒。
  3. ランダムな jitter を加え、クライアントが一斉に再試行しないようにする。
  4. 少ない試行回数で止め、エラーを呼び出し元に返す。
  5. 429 では自分のスケジュールではなく Retry-After に従う。

デバッグの順序

  1. key が存在し、失効していないことを確認します。
  2. 同じ key で GET /api/v1/models を呼び、認証を確認します。
  3. 対象 endpoint に最小の有効なリクエストを送ります。
  4. streaming、tools、大きな入力を 1 つずつ追加します。
  5. 非同期処理では、再送信する前にタスクの状態を確認します。

関連