Budibase/budibase · warning · HTTPError
Config id not found
Error message
Config id not found
What it means
Thrown by createLLM when the configId argument is falsy (empty string, undefined, null). An AI config id is mandatory to resolve which LLM provider/model to use, so calls without one are rejected immediately with HTTPError 422 before any lookup.
Solutions
- Verify the AI config exists in the workspace and copy its id into the call
- Fix the caller (automation step, API request) to pass a non-empty configId
- If the config was deleted, recreate it and update references
- Add validation at the entry point of your integration to reject empty config ids early
Example fix
// before
await llm({ configId: options.configId })
// after
if (!options.configId) {
throw new HTTPError("configId is required", 422)
}
await llm({ configId: options.configId }) Defensive patterns
Strategy: validation
Validate before calling
function requireConfigId(id: string | undefined): string {
if (!id) throw new HTTPError("AI configId is required", 422)
return id
}
await createLLM(requireConfigId(options.configId), sessionId) Try / catch
try {
await createLLM(configId, sessionId)
} catch (e) {
if (e instanceof HTTPError && e.message === "Config id not found") {
return { error: "No AI configuration was provided — select an AI config" }
}
throw e
} Prevention
- Validate that AI config variables are filled before saving automations
- Use config lookups by name at call time instead of hardcoding ids
- Add required-field checks in API request schemas for configId
When it happens
Trigger: Calling createLLM (directly or via chat/agent helpers) with a configId parameter that is empty or undefined — e.g. an AI config variable that was never set, a deleted config referenced by id, or a caller passing an unset options field.
Common situations: Automations or apps referencing an AI configuration that was deleted; environment/app variables for AI config ids left blank; API integrations omitting the configId field in the request body.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- Automations cannot have more than
- Config id " " not found
- External tables cannot be migrated
- Field is readonly and it cannot be modified
- _id or _rev fields missing
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/1292c41c81cb222b.
Report an issue: GitHub.
Appendix: source
Thrown at packages/server/src/sdk/workspace/ai/llm/index.ts:20
import { quotas } from "@budibase/pro"
import { BUDIBASE_AI_PROVIDER_ID, LLMResponse } from "@budibase/types"
import tracer from "dd-trace"
import sdk from "../../.."
import { createBBAIClient } from "./bbai"
import { createLiteLLMOpenAI } from "./litellm"
export * as bbai from "./bbai"
export * from "./utils"
export * from "./messages"
export async function createLLM(
configId: string,
sessionId?: string,
span?: tracer.Span,
agentId?: string
): Promise<LLMResponse> {
if (!configId) {
throw new HTTPError("Config id not found", 422)
}
const aiConfig = await sdk.ai.configs.find(configId)
if (!aiConfig) {
throw new HTTPError(`Config id "${configId}" not found`, 422)
}
if (aiConfig.provider === BUDIBASE_AI_PROVIDER_ID) {
await quotas.throwIfBudibaseAICreditsExceeded()
}
if (aiConfig.provider === BUDIBASE_AI_PROVIDER_ID && !env.SELF_HOSTED) {
return createBBAIClient(
aiConfig.model,
sessionId,
span,
aiConfig.reasoningEffort,
agentId
)View on GitHub (pinned to a81a902e9a)