Mintplex-Labs/anything-llm · critical · Error
No OpenRouter image generation API key was set.
Error message
No OpenRouter image generation API key was set.
What it means
Thrown synchronously in the OpenRouterImageGenerator constructor before building the OpenAI client pointed at openrouter.ai/api/v1. IMAGE_GEN_OPENROUTER_API_KEY is required because OpenRouter authenticates every request with a bearer token. This is distinct from the chat/embedding OpenRouter key so image access can be provisioned separately.
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 returnView on GitHub (pinned to 526360e320)
Solutions
- Set IMAGE_GEN_OPENROUTER_API_KEY to a valid OpenRouter key in .env.
- Note this differs from OPENROUTER_API_KEY — set the dedicated image-generation key variable.
- Restart the server after setting the variable.
- Confirm the key has credits/access for image models on OpenRouter.
Example fix
# before IMAGE_GEN_PROVIDER=openrouter # (no image key) # after IMAGE_GEN_PROVIDER=openrouter IMAGE_GEN_OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxx
Defensive patterns
Strategy: validation
Validate before calling
function hasOpenRouterImageKey() {
return typeof process.env.IMAGE_GEN_OPENROUTER_API_KEY === 'string'
&& process.env.IMAGE_GEN_OPENROUTER_API_KEY.trim().length > 0;
}
if (!hasOpenRouterImageKey()) {
throw new Error('Set IMAGE_GEN_OPENROUTER_API_KEY before using OpenRouter image generation.');
} Type guard
function isOpenRouterImageKeySet() {
return !!process.env.IMAGE_GEN_OPENROUTER_API_KEY && process.env.IMAGE_GEN_OPENROUTER_API_KEY.trim().length > 0;
} Try / catch
try {
generator = new OpenRouterImageGenerator();
} catch (e) {
if (/No OpenRouter image generation API key/.test(e.message)) {
throw new Error('Configure IMAGE_GEN_OPENROUTER_API_KEY (separate from OPENROUTER_API_KEY) and restart.');
}
throw e;
} Prevention
- Use IMAGE_GEN_OPENROUTER_API_KEY (the dedicated image key), distinct from OPENROUTER_API_KEY.
- Confirm the key has credits/access for image models on OpenRouter.
- Validate the variable at startup.
- Restart after .env changes.
When it happens
Trigger: Instantiating new OpenRouterImageGenerator() when process.env.IMAGE_GEN_OPENROUTER_API_KEY is unset or empty.
Common situations: Selecting OpenRouter as the image provider without an API key; confusing this with OPENROUTER_API_KEY (the chat/embedding key) and leaving the image variable blank; key not set in the container env.
Related errors
- No OpenAI image generation API key was set.
- No OpenRouter image generation model was set.
- No Voyage AI API key was set.
- No Lemonade image generation base path was set.
- No Lemonade image generation model was set.
AI-assisted analysis of Mintplex-Labs/anything-llm@526360e320 (2026-08-13).
Data as JSON: /api/errors/9418376d202b23e5.
Report an issue: GitHub.