{"record":{"id":"50bdd3e5514dd16e","repo":"Mintplex-Labs/anything-llm","slug":"no-elevenlabs-api-key-was-set","errorCode":null,"errorMessage":"No ElevenLabs API key was set.","messagePattern":"No ElevenLabs API key was set\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/utils/TextToSpeech/elevenLabs/index.js","lineNumber":6,"sourceCode":"const { ElevenLabsClient } = require(\"elevenlabs\");\n\nclass ElevenLabsTTS {\n  constructor() {\n    if (!process.env.TTS_ELEVEN_LABS_KEY)\n      throw new Error(\"No ElevenLabs API key was set.\");\n    this.elevenLabs = new ElevenLabsClient({\n      apiKey: process.env.TTS_ELEVEN_LABS_KEY,\n    });\n\n    // Rachel as default voice\n    // https://api.elevenlabs.io/v1/voices\n    this.voiceId =\n      process.env.TTS_ELEVEN_LABS_VOICE_MODEL ?? \"21m00Tcm4TlvDq8ikWAM\";\n    this.modelId = \"eleven_multilingual_v2\";\n  }\n\n  static async voices(apiKey = null) {\n    try {\n      const client = new ElevenLabsClient({\n        apiKey: apiKey ?? process.env.TTS_ELEVEN_LABS_KEY ?? null,\n      });\n      return (await client.voices.getAll())?.voices ?? [];\n    } catch {}","sourceCodeStart":1,"sourceCodeEnd":24,"githubUrl":"https://github.com/Mintplex-Labs/anything-llm/blob/526360e320da9d1b36074be5ed64fe76e5bbfbbd/server/utils/TextToSpeech/elevenLabs/index.js#L1-L24","documentation":"Thrown by the ElevenLabsTTS constructor when process.env.TTS_ELEVEN_LABS_KEY is falsy. The class builds an ElevenLabsClient used for text-to-speech synthesis. Without the key the client cannot authenticate, so construction is aborted.","triggerScenarios":"TTS_PROVIDER=elevenlabs is set but TTS_ELEVEN_LABS_KEY is missing/empty; the key was added but the process not restarted; the var was set under a different name.","commonSituations":"New deployment forgetting the ElevenLabs key; rotated key not updated; Docker env not propagated.","solutions":["Add TTS_ELEVEN_LABS_KEY=<your-key> to .env and restart.","Optionally set TTS_ELEVEN_LABS_VOICE_MODEL (defaults to Rachel voice id 21m00Tcm4TlvDq8ikWAM).","Confirm the exact name TTS_ELEVEN_LABS_KEY.","In Docker, pass the variable to the container."],"exampleFix":"# before\nTTS_PROVIDER=elevenlabs\n# TTS_ELEVEN_LABS_KEY missing\n\n# after\nTTS_PROVIDER=elevenlabs\nTTS_ELEVEN_LABS_KEY=el_xxxxxxxx","handlingStrategy":"validation","validationCode":"if (process.env.TTS_PROVIDER === \"elevenlabs\" && !process.env.TTS_ELEVEN_LABS_KEY) {\n  throw new Error(\"TTS_PROVIDER is 'elevenlabs' but TTS_ELEVEN_LABS_KEY is not set.\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  return new ElevenLabsTTS();\n} catch (e) {\n  if (/No ElevenLabs API key/i.test(e.message)) {\n    logger.error(\"Set TTS_ELEVEN_LABS_KEY in .env, then restart.\");\n  }\n  throw e;\n}","preventionTips":["Validate the provider→key pairing at startup.","Optionally set TTS_ELEVEN_LABS_VOICE_MODEL to your preferred voice id.","Restart after editing .env."],"tags":["tts","elevenlabs","configuration","environment","credentials"],"backgroundTag":null,"analyzedSha":"526360e320da9d1b36074be5ed64fe76e5bbfbbd","analyzedAt":"2026-08-13T01:45:47.170Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}