vercel/ai · error · NoSuchModelError
ElevenLabs does not provide image models
Error message
ElevenLabs does not provide image models
What it means
ElevenLabs offers no image generation, so its imageModel factory throws NoSuchModelError with the message 'ElevenLabs does not provide image models'. The stub enforces the provider's capability boundary (speech and transcription only).
Source
Thrown at packages/elevenlabs/src/elevenlabs-provider.ts:133
provider.languageModel = (modelId: string) => {
throw new NoSuchModelError({
modelId,
modelType: 'languageModel',
message: 'ElevenLabs does not provide language models',
});
};
provider.embeddingModel = (modelId: string) => {
throw new NoSuchModelError({
modelId,
modelType: 'embeddingModel',
message: 'ElevenLabs does not provide embedding models',
});
};
provider.textEmbeddingModel = provider.embeddingModel;
provider.imageModel = (modelId: string) => {
throw new NoSuchModelError({
modelId,
modelType: 'imageModel',
message: 'ElevenLabs does not provide image models',
});
};
return provider as ElevenLabsProvider;
}
/**
* Default ElevenLabs provider instance.
*/
export const elevenLabs = createElevenLabs();
View on GitHub (pinned to 69428b1f8b)
Solutions
- Use an image-capable provider (e.g. @ai-sdk/openai, @ai-sdk/google, @ai-sdk/azure) for generateImage.
- Split your provider config by capability: ElevenLabs for audio, another provider for images.
- Add a capability check before dispatching generation tasks to a provider.
Example fix
// before
await generateImage({ model: elevenlabs.imageModel('x'), prompt });
// after
await generateImage({ model: openai.image('gpt-image-1'), prompt }); Defensive patterns
Strategy: validation
Validate before calling
function supportsImages(provider: unknown): boolean {
return !/elevenlabs/i.test((provider as any)?.provider ?? '');
} Type guard
function isImageCapable(p: any): p is { imageModel: (id: string) => unknown } {
return typeof p?.imageModel === 'function' && !/elevenlabs/i.test(p?.provider ?? '');
} Try / catch
try {
await generateImage({ model: provider.imageModel(id), prompt });
} catch (e) {
if (NoSuchModelError.isInstance(e) && e.modelType === 'imageModel') {
throw new Error('ElevenLabs cannot generate images; use an image provider.');
}
throw e;
} Prevention
- Route image generation to providers with documented image support.
- Split media pipeline config by capability (audio: ElevenLabs, images: other).
- Assert provider capabilities in tests for dynamically selected providers.
When it happens
Trigger: Calling generateImage() with an ElevenLabs model or provider.imageModel('some-id') directly.
Common situations: Multi-provider media pipelines that route all generation tasks (text, image, speech) through one configured vendor, or exploratory API usage.
Related errors
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/a60de4895588ef3d.
Report an issue: GitHub.