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
- Simplify the schema to a few primitive fields and retry.
- Shorten or rewrite extractionPrompt; avoid ambiguous keys.
- Confirm the URL is publicly reachable from FireCrawl's region.
- 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
- Start with a minimal schema and expand after a successful run.
- Keep extractionPrompt short and unambiguous.
- Confirm target URL is publicly fetchable.
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
- Crawl job failed
- Unknown extract status: ${statusData.status}
- Failed to monitor extract status
- Firecrawl: Crawl job failed
- No API key provided
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/f3f7543810103473.
Report an issue: GitHub.