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

  1. Open the Airtable base in a browser and copy baseId from the URL (after 'app/') and tableId (after 'tbl/').
  2. Set both as explicit node inputs rather than templated variables to rule out upstream resolution failures.
  3. 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

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


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