FlowiseAI/Flowise · error · Error
Failed to fetch ${url} from Airtable: ${error.message}, stat
Error message
Failed to fetch ${url} from Airtable: ${error.message}, status: ${error.response?.status} What it means
AxiosError branch of fetchAirtableData: the POST to api.airtable.com rejected with a recognizable axios error. Preserves both error.message and the HTTP status from error.response. Airtable uses standard statuses: 401 (bad token), 403 (no permission to the base/table), 404 (wrong baseId/tableId), 422 (bad filterByFormula), 429 (rate limited).
Source
Thrown at packages/components/nodes/documentloaders/Airtable/Airtable.ts:322
public async load(): Promise<IDocument[]> {
if (this.returnAll) {
return this.loadAll()
}
return this.loadLimit()
}
protected async fetchAirtableData(url: string, data: AirtableLoaderRequest): Promise<AirtableLoaderResponse> {
try {
const headers = {
Authorization: `Bearer ${this.accessToken}`,
'Content-Type': 'application/json',
Accept: 'application/json'
}
const response = await axios.post(url, data, { headers })
return response.data
} catch (error) {
if (axios.isAxiosError(error)) {
throw new Error(`Failed to fetch ${url} from Airtable: ${error.message}, status: ${error.response?.status}`)
} else {
throw new Error(`Failed to fetch ${url} from Airtable: ${error}`)
}
}
}
private createDocumentFromPage(page: AirtableLoaderPage): IDocument {
// Generate the URL
const pageUrl = `https://api.airtable.com/v0/${this.baseId}/${this.tableId}/${page.id}`
// Return a langchain document
return new Document({
pageContent: JSON.stringify(page.fields, null, 2),
metadata: {
url: pageUrl
}
})
}View on GitHub (pinned to abe4a8601a)
Solutions
- Read the embedded status: 401/403 -> regenerate/fix the accessToken credential; 404 -> re-verify baseId and tableId; 422 -> simplify filterByFormula and test it in the Airtable web formula bar; 429 -> lower 'limit' or add delay between runs.
- Confirm the access token has data.records:read scope on the target base.
- Run the same request with curl using the Bearer token to isolate Flowise vs Airtable behavior.
Defensive patterns
Strategy: retry
Validate before calling
function assertAccessToken(token: unknown): asserts token is string {
if (typeof token !== 'string' || token.trim() === '') {
throw new Error('Airtable accessToken is missing - check credential mapping')
}
}
// assertAccessToken(accessToken) before calling loader.load() Try / catch
try {
const docs = await loader.load()
} catch (error) {
const msg = error instanceof Error ? error.message : String(error)
const statusMatch = msg.match(/status: (\d+)/)
const status = statusMatch ? Number(statusMatch[1]) : null
if (status === 429) {
// rate limited - back off and retry once
await new Promise(r => setTimeout(r, 1000))
return loader.load()
}
if (status === 401 || status === 403) throw new Error('Airtable credential invalid or lacks scope')
if (status === 404) throw new Error('Airtable baseId/tableId not found')
throw error
} Prevention
- Keep token scopes to data.records:read only and verify the target base is shared with the token.
- Stay under 5 requests/sec per base; lower 'limit' and add delays in batch flows.
- Test filterByFormula in the Airtable web UI before pasting it into the node.
When it happens
Trigger: Expired or revoked personal access token (401); token lacks scopes for the table (403); baseId/tableId typo (404); malformed filterByFormula (422); burst requests past Airtable's 5 req/sec per base limit (429).
Common situations: Airtable token regenerated but the Flowise credential not updated; user copied the table name instead of the tableId; complex filterByFormula referencing a non-existent field.
Related errors
- Crawl failed: ${error.response.data.error}
- Arxiv API error: ${response.status} ${response.statusText}
- Failed to download PDF: ${response.status} ${response.status
- Failed to retrieve access token: Response missing access_tok
- Microsoft Graph API error: ${response.status} ${response.sta
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/647fa44240050e9f.
Report an issue: GitHub.