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

  1. Use an image-capable provider (e.g. @ai-sdk/openai, @ai-sdk/google, @ai-sdk/azure) for generateImage.
  2. Split your provider config by capability: ElevenLabs for audio, another provider for images.
  3. 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

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.