Budibase/budibase · critical · HTTPError

LiteLLM should be configured. Contact support if the issue p

Error message

LiteLLM should be configured. Contact support if the issue persists.

What it means

Thrown by getLiteLLMModelSettings when the LiteLLM proxy secret key cannot be resolved from key settings. Model settings (apiKey/baseUrl) cannot be built without it, so LiteLLM-backed LLM calls fail fast with HTTPError 500 advising contacting support.

Source

Thrown at packages/server/src/sdk/workspace/ai/llm/litellm.ts:192

  return (await response.json()) as AIQuotaUsageResponse
}

const getLiteLLMProviderOptions = (hasTools: boolean) => {
  if (!hasTools) return
  return {
    openai: {
      parallelToolCalls: true,
    },
  }
}

async function getLiteLLMModelSettings(): Promise<{
  apiKey: string
  baseUrl: string
}> {
  const { secretKey } = await getKeySettings()
  if (!secretKey) {
    throw new HTTPError(
      "LiteLLM should be configured. Contact support if the issue persists.",
      500
    )
  }

  return {
    apiKey: secretKey,
    baseUrl: environment.LITELLM_URL,
  }
}

async function uploadFile({
  stream,
  filename,
  purpose,
  model,
  apiKey,
}: {

View on GitHub (pinned to a81a902e9a)

Solutions

  1. Configure the LiteLLM secret key in the environment/tenant settings (admin/_env configuration)
  2. Verify the key settings record exists and is readable in the database
  3. Restart services after updating the LiteLLM configuration
  4. If self-hosting and the key should exist, check backend-core environment LITELLM_* variables and key provisioning scripts

Example fix

// before: calling litellm path without configured key
const settings = await getLiteLLMModelSettings() // throws
// after: guard first
const { secretKey } = await getKeySettings()
if (!secretKey) {
  console.error("LiteLLM not configured")
  return fallbackProvider()
}
Defensive patterns

Strategy: validation

Validate before calling

const { secretKey } = await getKeySettings()
if (!secretKey) {
  throw new Error("LiteLLM secret key is not configured for this environment")
}

Try / catch

try {
  const settings = await getLiteLLMModelSettings()
} catch (e) {
  if (e instanceof HTTPError && e.message.includes("LiteLLM should be configured")) {
    return { error: "LiteLLM is not configured — contact your administrator" }
  }
  throw e
}

Prevention

When it happens

Trigger: Any LLM call routed through LiteLLM when getKeySettings() returns no secretKey — LiteLLM integration not configured for the environment/tenant, or the stored key settings record is empty/corrupted.

Common situations: Fresh installations where LiteLLM keys were never provisioned; key settings wiped by a config reset/migration; multi-tenant setups where the tenant lacks LiteLLM configuration.

Related errors


AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29). Data as JSON: /api/errors/fed3c24a9489fbf5. Report an issue: GitHub.