{"record":{"id":"efcbacfc0078235c","repo":"vercel/ai","slug":"gemini-image-models-do-not-support-generating-a-se","errorCode":null,"errorMessage":"Gemini image models do not support generating a set number of images per call. Use n=1 or omit the n parameter.","messagePattern":"Gemini image models do not support generating a set number of images per call\\. Use n=1 or omit the n parameter\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/google-vertex/src/google-vertex-image-model.ts","lineNumber":87,"sourceCode":"      size,\n      aspectRatio,\n      seed,\n      providerOptions,\n      headers,\n      abortSignal,\n      files,\n      mask,\n    } = options;\n    const warnings: Array<SharedV4Warning> = [];\n\n    if (mask != null) {\n      throw new Error(\n        'Gemini image models do not support mask-based image editing.',\n      );\n    }\n\n    if (n != null && n > 1) {\n      throw new Error(\n        'Gemini image models do not support generating a set number of images per call. Use n=1 or omit the n parameter.',\n      );\n    }\n\n    if (size != null) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'size',\n        details:\n          'This model does not support the `size` option. Use `aspectRatio` instead.',\n      });\n    }\n\n    const userContent: Array<\n      | { type: 'text'; text: string }\n      | {\n          type: 'file';\n          data:","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/google-vertex/src/google-vertex-image-model.ts#L69-L105","documentation":"Gemini image models on Google Vertex generate one image per request; the provider throws this plain Error in doGenerate when `n` is provided and greater than 1. It fails fast client-side because the underlying Gemini image API has no count parameter like Imagen's sampleCount.","triggerScenarios":"generateImage({ model: vertex.image('<gemini image model>'), prompt, n: 2 }) (or any n > 1) — the check `if (n != null && n > 1)` throws before the request is sent.","commonSituations":"Migrating from Imagen or OpenAI DALL·E code that requested multiple images per call; loops that fan out a shared options object containing n: 4; expecting batch generation semantics that Gemini image models don't offer on Vertex.","solutions":["Set n to 1 or omit the n parameter entirely.","Call generateImage multiple times (or Promise.all) to obtain several images.","Use an Imagen model on Vertex if single-call multi-image generation (sampleCount) is needed."],"exampleFix":"// before\nawait generateImage({ model: vertex.image('gemini-2.0-flash-exp-image'), prompt, n: 4 });\n// after\nconst images = await Promise.all([1, 2, 3, 4].map(() => generateImage({ model: vertex.image('gemini-2.0-flash-exp-image'), prompt })));","handlingStrategy":"validation","validationCode":"if (typeof n === 'number' && n > 1 && isGeminiImageModel(modelId)) {\n  throw new Error('Gemini image models generate 1 image per call; loop calls instead.');\n}","typeGuard":null,"tryCatchPattern":"try {\n  await generateImage({ model, prompt, n });\n} catch (e) {\n  if (e instanceof Error && e.message.includes('set number of images')) {\n    // retry with n = 1 or fan out parallel calls\n  } else throw e;\n}","preventionTips":["Clamp n to 1 (or omit it) whenever the model id starts with 'gemini'.","Centralize image generation behind a helper that adapts n per provider capability."],"tags":["unsupported-parameter","image-generation","google-vertex","gemini"],"backgroundTag":"unsupported-model-capability","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}