FlowiseAI/Flowise · error · Error
Base ID and Table ID must be provided.
Error message
Base ID and Table ID must be provided.
What it means
Airtable document loader requires both baseId and tableId to query the Airtable REST API. The guard runs after the AirtableLoader is already constructed, so it is a pre-flight input check that fails before any network call. Without both IDs the URL path /v0/{baseId}/{tableId} cannot be formed.
Source
Thrown at packages/components/nodes/documentloaders/Airtable/Airtable.ts:178
const credentialData = await getCredentialData(nodeData.credential ?? '', options)
const accessToken = getCredentialParam('accessToken', credentialData, nodeData)
const airtableOptions: AirtableLoaderParams = {
baseId,
tableId,
viewId,
fields,
returnAll,
accessToken,
limit: limit ? parseInt(limit, 10) : 100,
filterByFormula
}
const loader = new AirtableLoader(airtableOptions)
if (!baseId || !tableId) {
throw new Error('Base ID and Table ID must be provided.')
}
let docs: IDocument[] = []
if (textSplitter) {
docs = await loader.load()
docs = await textSplitter.splitDocuments(docs)
} else {
docs = await loader.load()
}
if (metadata) {
const parsedMetadata = typeof metadata === 'object' ? metadata : JSON.parse(metadata)
docs = docs.map((doc) => ({
...doc,
metadata:
_omitMetadataKeys === '*'
? {View on GitHub (pinned to abe4a8601a)
Solutions
- Open the Airtable base in a browser and copy baseId from the URL (after 'app/') and tableId (after 'tbl/').
- Set both as explicit node inputs rather than templated variables to rule out upstream resolution failures.
- If driving from variables, log nodeData.inputs.baseId and nodeData.inputs.tableId at runtime to confirm they are non-empty before this node runs.
Example fix
// before
const loader = new AirtableLoader(airtableOptions)
if (!baseId || !tableId) {
throw new Error('Base ID and Table ID must be provided.')
}
// after - validate before constructing, with specifics
if (!baseId) throw new Error('Airtable baseId is required (from URL segment after "app/")')
if (!tableId) throw new Error('Airtable tableId is required (from URL segment after "tbl/")')
const loader = new AirtableLoader(airtableOptions) Defensive patterns
Strategy: validation
Validate before calling
function validateAirtableIds(baseId: unknown, tableId: unknown): void {
if (typeof baseId !== 'string' || baseId.trim() === '') {
throw new Error('Airtable baseId is required (URL segment after "app/")')
}
if (typeof tableId !== 'string' || tableId.trim() === '') {
throw new Error('Airtable tableId is required (URL segment after "tbl/")')
}
if (!/^app[A-Za-z0-9]{14,}$/.test(baseId)) {
throw new Error(`Airtable baseId looks malformed: ${baseId}`)
}
if (!/^tbl[A-Za-z0-9]{14,}$/.test(tableId)) {
throw new Error(`Airtable tableId looks malformed: ${tableId}`)
}
}
// call before new AirtableLoader(airtableOptions) Type guard
function hasAirtableIds(inputs: unknown): inputs is { baseId: string; tableId: string } {
return typeof inputs === 'object' && inputs !== null
&& typeof (inputs as any).baseId === 'string' && (inputs as any).baseId.trim() !== ''
&& typeof (inputs as any).tableId === 'string' && (inputs as any).tableId.trim() !== ''
} Prevention
- Copy IDs directly from the Airtable URL: appXXX for base, tblXXX for table.
- Bind IDs as static inputs, not templated variables, until the flow is stable.
- Validate ID prefixes (app... / tbl...) before runtime.
When it happens
Trigger: Either baseId or tableId nodeData.inputs is empty/undefined/whitespace; the flow was duplicated from a template and the IDs never filled in; the values were bound to upstream variables that resolved to empty strings.
Common situations: User forgot to copy the IDs from the Airtable URL (app<baseId>/tbl<tableId>); credential or input mapping lost during import; environment-specific override resolves to blank.
Related errors
- Model is required
- Model is required
- Scenarios are required
- Invalid JSON in executeFlowOverrideConfig: ${parseError.mess
- Invalid base URL: must be a valid URL
AI-assisted analysis of FlowiseAI/Flowise@abe4a8601a (2026-08-12).
Data as JSON: /api/errors/12709f0a56f78ba5.
Report an issue: GitHub.