DayuanJiang/next-ai-draw-io · critical · Error

${requiredVar} environment variable is required for ${provid

Error message

${requiredVar} environment variable is required for ${provider} provider. Please set it in your .env.local file.

What it means

Generic single-env-var credential check: for any provider, the required var (customApiKeyEnv or PROVIDER_ENV_VARS[provider]) must be set or getAIModel throws.

Source

Thrown at lib/ai-providers.ts:666

        return
    }

    // Anthropic accepts ANTHROPIC_AUTH_TOKEN (Bearer auth) as alternative to ANTHROPIC_API_KEY
    if (provider === "anthropic" && !customApiKeyEnv) {
        const hasCredential = !!(
            process.env.ANTHROPIC_API_KEY || process.env.ANTHROPIC_AUTH_TOKEN
        )
        if (!hasCredential) {
            throw new Error(
                `Either ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN environment variable is required for anthropic provider. ` +
                    `Please set one in your .env.local file.`,
            )
        }
    } else {
        // Use custom env var name if provided, otherwise use default
        const requiredVar = customApiKeyEnv || PROVIDER_ENV_VARS[provider]
        if (requiredVar && !process.env[requiredVar]) {
            throw new Error(
                `${requiredVar} environment variable is required for ${provider} provider. ` +
                    `Please set it in your .env.local file.`,
            )
        }
    }

    // Azure requires either AZURE_BASE_URL or AZURE_RESOURCE_NAME in addition to API key
    if (provider === "azure") {
        const hasBaseUrl = !!process.env.AZURE_BASE_URL
        const hasResourceName = !!process.env.AZURE_RESOURCE_NAME
        if (!hasBaseUrl && !hasResourceName) {
            throw new Error(
                `Azure requires either AZURE_BASE_URL or AZURE_RESOURCE_NAME to be set. ` +
                    `Please set one in your .env.local file.`,
            )
        }
    }
}

View on GitHub (pinned to 155ef4f7ac)

Solutions

  1. Set the exact variable named in the error (e.g. OPENAI_API_KEY=...) in .env.local
  2. Restart/redeploy so the environment is re-read
  3. If using a custom var name, ensure customApiKeyEnv matches what you actually set

Example fix

# before
AI_PROVIDER=openai

# after
AI_PROVIDER=openai
OPENAI_API_KEY=sk-...
Defensive patterns

Strategy: validation

Validate before calling

const requiredVar = PROVIDER_ENV_VARS[provider]
if (requiredVar && !process.env[requiredVar]) throw new Error(`Missing ${requiredVar}`)

Try / catch

try { getAIModel() } catch (e) { const m = (e as Error).message; if (m.includes('is required for') && m.includes('provider')) mapToEnvSetupUI(m) }

Prevention

When it happens

Trigger: Provider set to e.g. openai without OPENAI_API_KEY, or a custom var name configured but unset.

Common situations: Switching providers in .env.local without adding the matching key, deployment env not injected, renamed custom var.

Understand the failure class

Background: "API key is required" / "API key not found" / "No API key was set": the missing-api-key error family across 16 libraries — this error's family across 16 libraries.

Related errors


AI-assisted analysis of DayuanJiang/next-ai-draw-io@155ef4f7ac (2026-08-27). Data as JSON: /api/errors/d87dec78486c4e2b. Report an issue: GitHub.