{"record":{"id":"fb2da129be8d51ad","repo":"vercel/ai","slug":"elevenlabs-does-not-provide-language-models","errorCode":null,"errorMessage":"ElevenLabs does not provide language models","messagePattern":"ElevenLabs does not provide language models","errorType":"exception","errorClass":"NoSuchModelError","httpStatus":null,"severity":"error","filePath":"packages/elevenlabs/src/elevenlabs-provider.ts","lineNumber":116,"sourceCode":"      url: ({ path }) => `https://api.elevenlabs.io${path}`,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const provider = function (modelId: ElevenLabsTranscriptionModelId) {\n    return {\n      transcription: createTranscriptionModel(modelId),\n    };\n  };\n\n  provider.specificationVersion = 'v4' as const;\n  provider.transcription = createTranscriptionModel;\n  provider.transcriptionModel = createTranscriptionModel;\n  provider.speech = createSpeechModel;\n  provider.speechModel = createSpeechModel;\n\n  provider.languageModel = (modelId: string) => {\n    throw new NoSuchModelError({\n      modelId,\n      modelType: 'languageModel',\n      message: 'ElevenLabs does not provide language models',\n    });\n  };\n\n  provider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({\n      modelId,\n      modelType: 'embeddingModel',\n      message: 'ElevenLabs does not provide embedding models',\n    });\n  };\n  provider.textEmbeddingModel = provider.embeddingModel;\n\n  provider.imageModel = (modelId: string) => {\n    throw new NoSuchModelError({\n      modelId,","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/elevenlabs/src/elevenlabs-provider.ts#L98-L134","documentation":"ElevenLabs provides speech and transcription models only; its languageModel factory always throws NoSuchModelError with the custom message 'ElevenLabs does not provide language models'. The stub satisfies the Provider interface and fails fast instead of silently returning an invalid model.","triggerScenarios":"Calling generateText/streamText with elevenLabs('some-id') or invoking provider.languageModel('...') directly.","commonSituations":"Generic chat pipelines that map a configured provider to generateText, or developers confusing ElevenLabs' text-rendering (TTS) with LLM text generation.","solutions":["Use a chat-capable provider (e.g. @ai-sdk/openai, @ai-sdk/anthropic, @ai-sdk/deepseek) for generateText/streamText.","Use elevenLabs.speech() with streamText-free speech APIs (or elevenlabs.transcription) for its actual capabilities.","If chaining voice pipelines, run the LLM on another provider and pass its text output to ElevenLabs speech()."],"exampleFix":"// before\nconst { text } = await generateText({ model: elevenlabs.languageModel('eleven_turbo'), prompt });\n\n// after\nconst { text } = await generateText({ model: openai('gpt-4o'), prompt });\nconst audio = await experimental_generateSpeech({ model: elevenlabs.speech('eleven_turbo_v2_5'), text });","handlingStrategy":"validation","validationCode":"function supportsLanguageModels(provider: unknown): boolean {\n  return !/elevenlabs/i.test((provider as any)?.provider ?? '');\n}","typeGuard":"function isChatCapable(p: any): p is { languageModel: (id: string) => unknown } {\n  return typeof p?.languageModel === 'function' && !/elevenlabs/i.test(p?.provider ?? '');\n}","tryCatchPattern":"try {\n  await generateText({ model: provider.languageModel(id), prompt });\n} catch (e) {\n  if (NoSuchModelError.isInstance(e) && e.modelType === 'languageModel') {\n    throw new Error('ElevenLabs is audio-only; use a chat provider for generateText.');\n  }\n  throw e;\n}","preventionTips":["Treat ElevenLabs strictly as speech/transcription in your provider registry.","Build LLM pipelines against chat-capable providers only.","Add capability checks when providers are selected dynamically from config."],"tags":["provider-capability","language-model","no-such-model"],"backgroundTag":"provider-does-not-support-model-type","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}