Firecrawl のエラーレスポンスは、すべて同じ JSON 形式です。原因、対処法、またリクエストを安全に再試行できるかどうかを確認するには、以下の表で error の値 (または HTTP ステータス) を参照してください。
エラーレスポンスの形式#
2xx 以外のレスポンスはすべて、トップレベルに success: false と文字列の error を含む JSON を返します。利用可能なコンテキストが多い場合は、一部のエンドポイントで追加のフィールド (details、code) も含まれます。
| フィールド | 型 | 説明 |
|---|---|---|
success | boolean | エラー時は常に false。 |
error | string | 人間が読めるエラーメッセージ。以下の行を参照する際に使用します。 |
details | any | 任意。該当する場合、フィールドごとの構造化されたバリデーションエラー。 |
エラー#
| HTTP | error (一般的なメッセージ) | 原因 | 対処法 | リトライ可能 |
|---|---|---|---|---|
| 400 | Bad Request / バリデーションメッセージ | リクエスト本文がスキーマ検証に失敗しました (フィールドが不足しているか無効です) 。 | エンドポイントのリファレンスを参照してリクエストのペイロードを修正してください。対象のフィールドは details を確認してください。 | いいえ |
| 400 | Invalid URL | url フィールドがない、形式が不正、または未対応のスキームを使用しています。 | 絶対URLの http(s):// を指定してください。 | いいえ |
| 401 | Unauthorized: Invalid token | API key がない、形式が不正、または失効しています。 | ダッシュボード の有効なキーを使って Authorization: Bearer fc-... を送信してください。 | いいえ |
| 402 | Payment Required: Insufficient credits | プランのクレジットを使い切っているか、課金が設定されていません。 | 従量課金を有効にするか、プランをアップグレードしてください。 | いいえ |
| 403 | Forbidden | このエンドポイントまたは機能に対する権限がキーにありません。 | 必要なスコープを持つキーを使用するか、この機能が使えるプランにアップグレードしてください。 | いいえ |
| 403 | SCRAPE_PROMPT_INJECTION_DETECTED | checkPromptInjection: true を指定した JSONモードで、スクレイピングしたページコンテンツ内のプロンプトインジェクションの試行が検出されたため、抽出は中止されました。 | ページコンテンツを手動で確認してください。誤検知の場合は、checkPromptInjection を指定せずにリトライしてください。プロンプトインジェクションの検出 を参照してください。 | いいえ |
| 404 | Not Found | job ID、リソース、またはエンドポイントのパスが存在しません。 | リソース ID とエンドポイントの URL を確認してください。 | いいえ |
| 408 | Request Timeout | ページの読み込みに、リクエストの timeout より長い時間がかかりました。 | timeout を増やす、アクションを簡略化する、または fastMode を使用してください。 | はい、バックオフ あり |
| 409 | Conflict | リソースがそのオペレーションを実行できない状態にあります (例: すでに削除済み) 。 | リトライする前に状態を再取得し、整合性を取ってください。 | いいえ |
| 413 | Payload Too Large | リクエスト本文が許可されている最大サイズを超えました。 | ペイロードを小さくしてください (例: schema を短くする、batch ごとの URL 数を減らす) 。 | いいえ |
| 422 | Unprocessable Entity / extraction schema error | schema が無効な JSON Schema であるか、モデルがスキーマに準拠した結果を生成できませんでした。 | schema を検証し、必須フィールドの条件を緩めるか、別の model を試してください。 | 場合による |
| 429 | Rate limit exceeded | ご利用プランの1分あたりの上限を超える数のリクエストが送信されました。 | Retry-After 秒待ってから バックオフ してリトライしてください。レート制限 を参照してください。 | はい、バックオフ あり |
| 429 | Concurrency limit reached | ご利用プランの browser の同時実行上限に達しました。 | 実行中の jobs の完了を待つか、同時実行数 を下げるか、プランをアップグレードしてください。 | はい、バックオフ あり |
| 500 | Internal Server Error | サーバー側で未処理の障害が発生しました。 | 指数 バックオフ でリトライしてください。解消しない場合は、request ID を添えてサポートに連絡してください。 | はい、バックオフ あり |
| 502 | Bad Gateway | 上流の proxy または worker が無効なレスポンスを返しました。 | バックオフ してリトライしてください。 | はい、バックオフ あり |
| 503 | Service Unavailable | service が一時的にリクエストを処理できません。 | バックオフ してリトライしてください。 | はい、バックオフ あり |
| 504 | Gateway Timeout | リクエストがゲートウェイの timeout を超えました (通常は長時間のクロール) 。 | 代わりに async の crawl/batch エンドポイント を使い、status を poll してください。 | はい、バックオフ あり |
429 レスポンスでは、利用可能な場合、Firecrawl は Retry-After ヘッダー (秒単位) を含めます。リトライする前に、少なくともその時間だけ待ってください。
Agent#
/agent およびそのステータス、トレース、スナップショット、キャンセルの各エンドポイントに固有のエラーです。トレースおよびスナップショットのエンドポイントは、上流のエラーボディを変更せずに中継するため、この 2 つでは上記の success フィールドを含まないボディが返される場合があります。HTTP ステータスと error 文字列で照合してください。
| HTTP | error (一般的なメッセージ) | 原因 | 対処法 | リトライ可能 |
|---|---|---|---|---|
| 400 | Invalid job ID format. Job ID must be a valid UUID. | jobId パスセグメントが UUID ではありません。 | POST /v2/agent が返す id を渡してください。 | いいえ |
| 400 | Invalid snapshot ID | snapshotId パスセグメントの形式が正しくありません。 | artifact.updated トレースイベント の snapshotId を使用してください。 | いいえ |
| 400 | Trace is only available for Spark 2 extracts | このジョブは、トレースを記録する Spark 2 より前に作成されています。 | このジョブに対してできることはありません。新しい実行はすべて spark-2 で実行され、トレースが記録されます。 | いいえ |
| 400 | Snapshots are only available for Spark 2 extracts | このジョブは、スナップショットを記録する Spark 2 より前に作成されています。 | このジョブに対してできることはありません。新しい実行はすべて spark-2 で実行され、スナップショットが記録されます。 | いいえ |
| 400 | Your team has zero data retention enabled. This is not supported on extract. | ゼロデータ保持が強制されている Team では、Agent 実行を利用できません。 | Team でこの機能を利用できるようにするには、support@firecrawl.com までお問い合わせください。 | いいえ |
| 404 | Agent job not found | job ID が存在しないか、別の Team に属しています。 | job ID を確認し、実行を開始した Team のキーを使用してください。 | いいえ |
| 404 | Snapshot not found | このジョブには、その ID のスナップショットがありません。 | トレースを再取得し、artifact.updated トレースイベント の最新の snapshotId を使用してください。 | いいえ |
| 409 | Agent already finished | すでに終端状態に達した実行に対してキャンセルが呼び出されました。 | 代わりに GET /v2/agent/{jobId} を poll して結果を確認してください。 | いいえ |
| 409 | Agent is already cancelled | すでにキャンセル処理中の実行に対してキャンセルが呼び出されました。 | GET /v2/agent/{jobId} を poll してください。キャンセルされた実行は、キャンセルメッセージとともに failed を返します。 | いいえ |
| 500 | Failed to passthrough agent request. | Agent サービスが送信時にジョブを拒否しました。 | バックオフを使用してリトライしてください。解決しない場合は、request ID を添えてサポートにお問い合わせください。 | はい、バックオフを使用 |
maxCredits 上限に達した実行は HTTP エラーを返しません。失敗したジョブとして完了します。ステータスエンドポイントを poll すると、クレジット上限に関するエラーメッセージを含む status: "failed"、data なし、creditsUsed: 0 が返されます。失敗した実行には課金されないためです。トレースでは、同じ結果が outcome: "credit_limit_reached" を持つ run.finished イベントとして表示されます。
トレースのエラーコード#
Terminal および error.occurred トレースイベントには、5種類の値のいずれかを持つ code を含む構造化された error オブジェクトが含まれます。また、各イベントには retryable boolean が含まれ、上記のリトライ可能列と同様に扱います。
code | 意味と対処法 |
|---|---|
cancelled | 実行をキャンセルしました。作業をやり直す場合は、新しい実行を開始してください。 |
credit_limit_reached | 実行が maxCredits の上限に達しました。maxCredits を増やすか、必要な作業量が少なくなるようプロンプトを絞り込んでください。 |
parent_finished | 起動元のagentが先に完了したため、サブagentが停止しました。実際の原因は、親agentのTerminalイベントで確認してください。 |
refused | agentがタスクを拒否しました。プロンプトを言い換えるか、収集する権限のあるURLに対象を絞ってください。 |
internal | 実行中に予期しない障害が発生しました。実行をリトライし、問題が続く場合はjob IDを添えてサポートにお問い合わせください。 |
リトライのガイダンス#
リトライ可能 列を判断基準とし、HTTP ステータスだけで推測しないでください。以下のパターンでは、ジッター付きの指数バックオフを使用し、429 では Retry-After を優先します。
429 レスポンス#
429 レスポンスは、リトライ可能なエラーで最もよく発生します。プランごとのレート制限と同時実行数の上限については、レート制限 を参照してください。Retry-After ヘッダーがある場合は、すぐに再試行せず、必ずその指示に従ってください。

