FlowiseAI/Flowise · error · Error

Extract job failed

Error message

Extract job failed

What it means

Thrown by monitorExtractStatus when the /v1/extract/<id> polling response reports `status: 'failed'`. Indicates FireCrawl could not complete the extract job (LLM extraction failed, schema incompatible, or upstream site issue).

Source

Thrown at packages/components/nodes/documentloaders/FireCrawl/FireCrawl.ts:518

            }
        }
        throw new Error('Failed to monitor job status')
    }

    private async monitorExtractStatus(jobId: string, headers: AxiosRequestHeaders, checkInterval: number): Promise<ExtractStatusResponse> {
        let isJobCompleted = false
        while (!isJobCompleted) {
            const statusResponse: AxiosResponse = await this.getRequest(this.apiUrl + `/v1/extract/${jobId}`, headers)
            if (statusResponse.status === 200) {
                const statusData = statusResponse.data as ExtractStatusResponse
                switch (statusData.status) {
                    case 'completed':
                        isJobCompleted = true
                        return statusData
                    case 'processing':
                    case 'failed':
                        if (statusData.status === 'failed') {
                            throw new Error('Extract job failed')
                        }
                        await new Promise((resolve) => setTimeout(resolve, Math.max(checkInterval, 2) * 1000))
                        break
                    default:
                        throw new Error(`Unknown extract status: ${statusData.status}`)
                }
            } else {
                this.handleError(statusResponse, 'check extract status')
            }
        }
        throw new Error('Failed to monitor extract status')
    }

    private handleError(response: AxiosResponse, action: string): void {
        if ([402, 408, 409, 500].includes(response.status)) {
            const errorMessage: string = response.data.error || 'Unknown error occurred'
            throw new Error(`Failed to ${action}. Status code: ${response.status}. Error: ${errorMessage}`)
        } else {

View on GitHub (pinned to abe4a8601a)

Solutions

  1. Simplify the schema to a few primitive fields and retry.
  2. Shorten or rewrite extractionPrompt; avoid ambiguous keys.
  3. Confirm the URL is publicly reachable from FireCrawl's region.
  4. Check FireCrawl dashboard for the failed extract job's error.

Example fix

// before
const response = await app.extract({ urls: [url], prompt, schema: complexZod })

// after
const response = await app.extract({
  urls: [url],
  prompt,
  schema: { type: 'object', properties: { title: { type: 'string' } }, required: ['title'] }
})
Defensive patterns

Strategy: fallback

Validate before calling

if (!request.urls?.length) throw new Error('extract requires urls')
if (request.schema && typeof request.schema === 'object' && !request.schema.type) {
  throw new Error('schema must be a JSON-schema object')
}

Type guard

function isExtractFailed(s: unknown): boolean {
  return typeof s === 'object' && s !== null && (s as any).status === 'failed'
}

Try / catch

try { return await app.extract(req) }
catch (e) {
  if (/Extract job failed/.test((e as Error).message)) {
    return await app.extract({ ...req, schema: minimalSchema }) // retry simpler
  }
  throw e
}

Prevention

When it happens

Trigger: statusData.status === 'failed' on a 200 response from extract-status. Causes: invalid JSON schema, prompt rejected by the extraction model, target URL blocked, plan credits exhausted mid-job.

Common situations: Schema fields not matching page content; overly long extractionPrompt; target site requires JS that extraction backend cannot render; 402 mid-extraction.

Related errors


AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12). Data as JSON: /api/errors/f3f7543810103473. Report an issue: GitHub.