{"record":{"id":"d3ff669f92c1dcd3","repo":"Mintplex-Labs/anything-llm","slug":"no-openai-image-generation-api-key-was-set","errorCode":null,"errorMessage":"No OpenAI image generation API key was set.","messagePattern":"No OpenAI image generation API key was set\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"server/utils/ImageGenerators/openAi/index.js","lineNumber":6,"sourceCode":"const { BaseImageGenerator } = require(\"../base\");\n\nclass OpenAiImageGenerator extends BaseImageGenerator {\n  constructor() {\n    if (!process.env.IMAGE_GEN_OPENAI_KEY)\n      throw new Error(\"No OpenAI image generation API key was set.\");\n    const { OpenAI: OpenAIApi } = require(\"openai\");\n    // gpt-image-1 is the default since OpenAI has deprecated the dall-e models.\n    // It does not support 512x512, so base.js upsizes to the nearest supported\n    // square (1024x1024) automatically.\n    super({\n      client: new OpenAIApi({\n        apiKey: process.env.IMAGE_GEN_OPENAI_KEY,\n      }),\n      model: process.env.IMAGE_GEN_MODEL_PREF || \"gpt-image-1\",\n      className: \"OpenAiImageGenerator\",\n    });\n  }\n\n  imageFieldName(count) {\n    return count > 1 ? \"image[]\" : \"image\";\n  }\n}\n","sourceCodeStart":1,"sourceCodeEnd":24,"githubUrl":"https://github.com/Mintplex-Labs/anything-llm/blob/526360e320da9d1b36074be5ed64fe76e5bbfbbd/server/utils/ImageGenerators/openAi/index.js#L1-L24","documentation":"Thrown synchronously in the OpenAiImageGenerator constructor before building the OpenAI client. IMAGE_GEN_OPENAI_KEY is required because the OpenAI SDK needs it for every authenticated request. Unlike the embedding engines (which reuse the main OpenAI key), image generation uses a dedicated key variable so image and chat keys can differ.","triggerScenarios":"Instantiating new OpenAiImageGenerator() when process.env.IMAGE_GEN_OPENAI_KEY is unset or empty.","commonSituations":"Selecting OpenAI as the image provider without pasting an image-capable API key; using the chat key variable name instead of IMAGE_GEN_OPENAI_KEY; key expired or revoked on the OpenAI dashboard; container env missing the variable.","solutions":["Set IMAGE_GEN_OPENAI_KEY to a valid OpenAI API key with image-generation access in .env.","Note this is distinct from the main OPEN_AI_KEY — set the dedicated image key variable.","Restart the server after setting the variable.","Confirm the key's organization has access to the default model (gpt-image-1)."],"exampleFix":"# before\nIMAGE_GEN_PROVIDER=openai\n# (no image key)\n\n# after\nIMAGE_GEN_PROVIDER=openai\nIMAGE_GEN_OPENAI_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx","handlingStrategy":"validation","validationCode":"function hasOpenAiImageKey() {\n  return typeof process.env.IMAGE_GEN_OPENAI_KEY === 'string'\n    && process.env.IMAGE_GEN_OPENAI_KEY.trim().length > 0;\n}\nif (!hasOpenAiImageKey()) {\n  throw new Error('Set IMAGE_GEN_OPENAI_KEY before using OpenAI image generation.');\n}","typeGuard":"function isOpenAiImageKeySet() {\n  return !!process.env.IMAGE_GEN_OPENAI_KEY && process.env.IMAGE_GEN_OPENAI_KEY.trim().length > 0;\n}","tryCatchPattern":"try {\n  generator = new OpenAiImageGenerator();\n} catch (e) {\n  if (/No OpenAI image generation API key/.test(e.message)) {\n    throw new Error('Configure IMAGE_GEN_OPENAI_KEY (separate from OPEN_AI_KEY) and restart.');\n  }\n  throw e;\n}","preventionTips":["Use IMAGE_GEN_OPENAI_KEY (the dedicated image key), not the chat OPEN_AI_KEY.","Confirm the key's org has access to gpt-image-1 (the default model).","Validate the variable at startup.","Restart after rotating the key."],"tags":["openai","image-generation","configuration","missing-api-key","constructor"],"backgroundTag":null,"analyzedSha":"526360e320da9d1b36074be5ed64fe76e5bbfbbd","analyzedAt":"2026-08-13T01:45:47.170Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}