Mintplex-Labs/anything-llm · error

No OpenRouter image generation API key was set.

Error message

No OpenRouter image generation API key was set.

What it means

OpenRouterImageGenerator's constructor hard-fails when process.env.IMAGE_GEN_OPENROUTER_API_KEY is unset or empty. The class is only instantiated when the user selects OpenRouter as the image generation engine, so the throw happens at engine construction time, not per request.

Solutions

  1. Add IMAGE_GEN_OPENROUTER_API_KEY=<key> to the server .env and restart
  2. For Docker, ensure the variable is passed to the container (docker run -e or env_file in compose) and recreate the container
  3. Verify the variable name exactly matches IMAGE_GEN_OPENROUTER_API_KEY
  4. Check the key is non-empty (no trailing whitespace or placeholder text)

Example fix

# before (.env)
# (no image gen key)

# after (.env)
IMAGE_GEN_OPENROUTER_API_KEY=sk-or-v1-...
Defensive patterns

Strategy: validation

Validate before calling

if (!process.env.IMAGE_GEN_OPENROUTER_API_KEY) {
  throw new Error('Configure IMAGE_GEN_OPENROUTER_API_KEY before enabling the OpenRouter image engine.');
}

Try / catch

try {
  generator = new OpenRouterImageGenerator();
} catch (err) {
  if (err.message.includes('OpenRouter image generation API key')) {
    // show a settings prompt instead of crashing the request
  }
  throw err;
}

Prevention

When it happens

Trigger: Selecting the OpenRouter image generation engine in settings (or the server restarting with it already selected) while IMAGE_GEN_OPENROUTER_API_KEY is missing from the environment.

Common situations: Key added to .env but server not restarted; Docker deployment where the variable was not passed with -e/--env-file; key name typo (e.g. IMAGE_GEN_OPENROUTER_KEY); .env placed where the server process cannot read it.

Understand the failure class

Background: "environment variable is not set" and "Missing keys in environment" errors: what missing required env var messages mean and how to fix them — this error's family across 28 libraries.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@3aec848f28 (2026-08-18). Data as JSON: /api/errors/9418376d202b23e5. Report an issue: GitHub.

Appendix: source

Thrown at server/utils/ImageGenerators/openRouter/index.js:11

const { BaseImageGenerator } = require("../base");

class OpenRouterImageGenerator extends BaseImageGenerator {
  _extractImageBuffer(dataUrl) {
    if (!dataUrl) throw new Error("OpenRouter returned no image data.");
    return Buffer.from(dataUrl.split(",").pop(), "base64");
  }

  constructor() {
    if (!process.env.IMAGE_GEN_OPENROUTER_API_KEY)
      throw new Error("No OpenRouter image generation API key was set.");
    if (!process.env.IMAGE_GEN_MODEL_PREF)
      throw new Error("No OpenRouter image generation model was set.");
    const { OpenAI: OpenAIApi } = require("openai");
    super({
      client: new OpenAIApi({
        baseURL: "https://openrouter.ai/api/v1",
        apiKey: process.env.IMAGE_GEN_OPENROUTER_API_KEY,
        defaultHeaders: {
          "HTTP-Referer": "https://anythingllm.com",
          "X-Title": "AnythingLLM",
        },
      }),
      model: process.env.IMAGE_GEN_MODEL_PREF,
      className: "OpenRouterImageGenerator",
    });
  }

  // OpenRouter does not expose /images/generations. Its image models return

View on GitHub (pinned to 3aec848f28)