{"record":{"id":"50b3bd2500a64b0f","repo":"vercel/ai","slug":"no-such-embeddingmodel-modelid-50b3bd","errorCode":null,"errorMessage":"No such embeddingModel: ${modelId}","messagePattern":"No such embeddingModel: (.+?)","errorType":"exception","errorClass":"NoSuchModelError","httpStatus":null,"severity":"error","filePath":"packages/xai/src/xai-provider.ts","lineNumber":260,"sourceCode":"  ) as RealtimeFactoryV4;\n\n  const createFiles = () =>\n    new XaiFiles({\n      provider: 'xai.files',\n      baseURL,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const provider = (modelId: XaiResponsesModelId) =>\n    createResponsesLanguageModel(modelId);\n\n  provider.specificationVersion = 'v4' as const;\n  provider.languageModel = createResponsesLanguageModel;\n  provider.chat = createChatLanguageModel;\n  provider.responses = createResponsesLanguageModel;\n  provider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n  };\n  provider.textEmbeddingModel = provider.embeddingModel;\n  provider.imageModel = createImageModel;\n  provider.image = createImageModel;\n  provider.videoModel = createVideoModel;\n  provider.video = createVideoModel;\n  provider.experimental_realtime = experimentalRealtimeFactory;\n  provider.speechModel = createSpeechModel;\n  provider.speech = createSpeechModel;\n  provider.transcriptionModel = createTranscriptionModel;\n  provider.transcription = createTranscriptionModel;\n  provider.files = createFiles;\n  provider.tools = xaiTools;\n\n  return provider;\n}\n\nexport const xai = createXai();","sourceCodeStart":242,"sourceCodeEnd":278,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/xai/src/xai-provider.ts#L242-L278","documentation":"The xAI provider does not implement an embedding model, so its `embeddingModel`/`textEmbeddingModel` factory deliberately throws NoSuchModelError for every modelId. xAI's API surface supported here covers language, image, and video models only. Calling xai.embeddingModel('...') or xai.textEmbeddingModel('...'), or invoking embed/embedMany with an xai model string, produces this error.","triggerScenarios":"xai.embeddingModel('grok-embedding') or xai.textEmbeddingModel('...') called directly; embed()/embedMany() with model: xai('some-id'); provider factory strings like xai.embeddingModel in generic model-selection code.","commonSituations":"Mistaking xAI for a provider with embedding support; switching a project's embedding provider from OpenAI to xAI without checking capability; generic code that resolves models by provider string without capability checks.","solutions":["Use a provider that implements embeddings, e.g. openai.textEmbeddingModel('text-embedding-3-small') or another supported embedding provider.","Call embed/embedMany with a textEmbedding model from a capable provider instead of xai.","If xAI embedding support is needed, check for a newer @ai-sdk/xai release or file/track a feature request."],"exampleFix":"// before\nconst { embedding } = await embed({ model: xai.textEmbeddingModel('grok-embed'), value: 'hi' });\n\n// after\nimport { createOpenAI } from '@ai-sdk/openai';\nconst openai = createOpenAI();\nconst { embedding } = await embed({ model: openai.textEmbeddingModel('text-embedding-3-small'), value: 'hi' });","handlingStrategy":"fallback","validationCode":"const XAI_SUPPORTS_EMBEDDINGS = false;\nfunction resolveEmbeddingModel(provider: 'xai' | 'openai') {\n  if (provider === 'xai' && !XAI_SUPPORTS_EMBEDDINGS) {\n    return openai.textEmbeddingModel('text-embedding-3-small');\n  }\n  // ...\n}","typeGuard":"function providerSupportsEmbeddings(p: unknown): p is { textEmbeddingModel: (id: string) => unknown } {\n  return typeof (p as any)?.textEmbeddingModel === 'function' &&\n    !(p as any).textEmbeddingModel.toString().includes('NoSuchModelError');\n}","tryCatchPattern":"try {\n  return await embed({ model: xai.textEmbeddingModel(id), value });\n} catch (e) {\n  if (NoSuchModelError.isInstance(e) && e.modelType === 'embeddingModel') {\n    return await embed({ model: openai.textEmbeddingModel('text-embedding-3-small'), value });\n  }\n  throw e;\n}","preventionTips":["Check the provider's supported model types in docs before routing embeddings to it.","Keep a capability map (provider -> supported model types) in multi-provider apps.","Cover provider capability with tests so a wrong routing fails in CI, not production."],"tags":["xai","embeddings","no-such-model","provider-capability"],"backgroundTag":"model-not-supported-by-provider","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}