{"record":{"id":"b8507000006df8c3","repo":"vercel/ai","slug":"embeddingmodel-b85070","errorCode":null,"errorMessage":"embeddingModel","messagePattern":"embeddingModel","errorType":"exception","errorClass":"NoSuchModelError","httpStatus":null,"severity":"error","filePath":"packages/fal/src/fal-provider.ts","lineNumber":178,"sourceCode":"\n  const createTranscriptionModel = (modelId: FalTranscriptionModelId) =>\n    new FalTranscriptionModel(modelId, {\n      provider: `fal.transcription`,\n      url: ({ path }) => path,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createVideoModel = (modelId: FalVideoModelId) =>\n    new FalVideoModel(modelId, {\n      provider: 'fal.video',\n      url: ({ path }) => path,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({\n      modelId,\n      modelType: 'embeddingModel',\n    });\n  };\n\n  return {\n    specificationVersion: 'v4' as const,\n    imageModel: createImageModel,\n    image: createImageModel,\n    languageModel: (modelId: string) => {\n      throw new NoSuchModelError({\n        modelId,\n        modelType: 'languageModel',\n      });\n    },\n    speech: createSpeechModel,\n    embeddingModel,\n    textEmbeddingModel: embeddingModel,","sourceCodeStart":160,"sourceCodeEnd":196,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/fal/src/fal-provider.ts#L160-L196","documentation":"The fal provider does not support embedding models, so its embeddingModel factory always throws NoSuchModelError with modelType 'embeddingModel' and the requested modelId. Any attempt to obtain or call an embedding model from the fal provider fails by design.","triggerScenarios":"Calling fal.embeddingModel('some-model') or passing the fal provider where an embedding model is resolved (e.g. embed()/embedMany() with fal as the provider).","commonSituations":"Developers assume fal supports embeddings because it supports image/video generation, or they configure fal as a global default provider and then call embed().","solutions":["Use a provider that implements embedding models (e.g. openai, google, amazon-bedrock, cohere) for embed/embedMany.","Do not register fal as the provider for embedding use cases.","Check provider capability docs before routing model requests."],"exampleFix":"// before\nconst { embedding } = await embed({ model: fal.embeddingModel('x'), value: 'hi' });\n// after\nconst { embedding } = await embed({ model: openai.embedding('text-embedding-3-small'), value: 'hi' });","handlingStrategy":"fallback","validationCode":"// route embeddings to a provider that supports them\nconst supportsEmbeddings = (p: unknown) =>\n  typeof (p as { embeddingModel?: unknown })?.embeddingModel === 'function' &&\n  (p as { provider?: string }).provider !== 'fal';","typeGuard":null,"tryCatchPattern":"let model;\ntry {\n  model = fal.embeddingModel(id);\n} catch (e) {\n  if (NoSuchModelError.isInstance(e) && e.modelType === 'embeddingModel') {\n    model = openai.embedding('text-embedding-3-small');\n  } else throw e;\n}","preventionTips":["Maintain a capability matrix mapping providers to supported model types.","Never set fal as a default/global provider for embedding workloads.","Check provider docs for embedding support before wiring embed()/embedMany()."],"tags":["fal","embedding","unsupported-functionality","no-such-model"],"backgroundTag":"unsupported-model-type","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}