{"record":{"id":"3c034add66c4c192","repo":"vercel/ai","slug":"model-this-modelid-only-supports-streaming-tr-3c034a","errorCode":null,"errorMessage":"Model '${this.modelId}' only supports streaming transcription. Use experimental_streamTranscribe, or a unary model such as 'gemini-3.5-transcribe'.","messagePattern":"Model '(.+?)' only supports streaming transcription\\. Use experimental_streamTranscribe, or a unary model such as 'gemini-3\\.5-transcribe'\\.","errorType":"validation","errorClass":"InvalidArgumentError","httpStatus":null,"severity":"error","filePath":"packages/google/src/transcription/google-transcription-model.ts","lineNumber":140,"sourceCode":"    readonly modelId: GoogleTranscriptionModelId,\n    private readonly config: GoogleTranscriptionModelConfig,\n  ) {}\n\n  private async parseOptions(\n    providerOptions: Record<string, unknown> | undefined,\n  ): Promise<GoogleTranscriptionModelOptions | undefined> {\n    return parseProviderOptions({\n      provider: 'google',\n      providerOptions,\n      schema: googleTranscriptionModelOptions,\n    });\n  }\n\n  async doGenerate(\n    options: Parameters<TranscriptionModelV4['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>> {\n    if (isLiveTranscriptionModelId(this.modelId)) {\n      throw new InvalidArgumentError({\n        argument: 'modelId',\n        message:\n          `Model '${this.modelId}' only supports streaming transcription. ` +\n          `Use experimental_streamTranscribe, or a unary model such as 'gemini-3.5-transcribe'.`,\n      });\n    }\n\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const warnings: SharedV4Warning[] = [];\n    const googleOptions = await this.parseOptions(options.providerOptions);\n    const transcriptionConfig = buildTranscriptionConfig(googleOptions);\n\n    // Unary transcription is served by the Interactions API\n    // (https://ai.google.dev/gemini-api/docs/transcribe).\n    const requestBody = {\n      model: this.modelId,\n      input: [\n        {","sourceCodeStart":122,"sourceCodeEnd":158,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/google/src/transcription/google-transcription-model.ts#L122-L158","documentation":"Google transcription models come in two flavors: unary models (e.g. 'gemini-3.5-transcribe') that support generateTranscription, and live streaming models (ids matching isLiveTranscriptionModelId, e.g. '*-live') that only support experimental_streamTranscribe. doGenerate detects a live model id and refuses to run it through the unary path, throwing this InvalidArgumentError. The two model families are not interchangeable.","triggerScenarios":"Calling transcribe/generateTranscription (doGenerate) with a live model id such as 'gemini-3.5-transcribe-live' instead of a unary transcription model id.","commonSituations":"Copy-pasting a model id from streaming docs into a unary call; upgrading model ids and picking the '-live' variant unknowingly; generic model-selection code that does not distinguish the two families.","solutions":["Switch to a unary model id such as 'gemini-3.5-transcribe' for generateTranscription.","Keep the live model but call experimental_streamTranscribe instead.","Add a check with isLiveTranscriptionModelId (or a modelId suffix check) before choosing the call path."],"exampleFix":"// before\nconst model = google.transcription('gemini-3.5-transcribe-live');\nawait transcribe({ model, audio });\n// after\nconst model = google.transcription('gemini-3.5-transcribe');\nawait transcribe({ model, audio });","handlingStrategy":"validation","validationCode":"import { isLiveTranscriptionModelId } from './is-live-transcription-model-id';\nif (isLiveTranscriptionModelId(modelId)) {\n  throw new Error(`${modelId} requires experimental_streamTranscribe, not transcribe`);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep two explicit model constants: one for unary transcription, one for live streaming.","Route call path selection off the model id (live suffix => doStream).","Review model id changes in release notes for new '-live' variants."],"tags":["google","transcription","wrong-api","model-capability"],"backgroundTag":"model-capability-mismatch","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}