content/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx
generateImage()Generates images based on a given prompt using an image model.
It is ideal for use cases where you need to generate images programmatically, such as creating visual content or generating images for data augmentation.
import { generateImage } from 'ai';
const { images } = await generateImage({
model: openai.image('dall-e-3'),
prompt: 'A futuristic cityscape at sunset',
n: 3,
size: '1024x1024',
});
console.log(images);
<Snippet text={import { generateImage } from "ai"} prompt={false} />
<PropertiesTable
content={[
{
name: 'model',
type: 'ImageModelV4',
description: 'The image model to use.',
},
{
name: 'prompt',
type: 'string | GenerateImagePrompt',
description: 'The input prompt to generate the image from.',
properties: [
{
type: 'GenerateImagePrompt',
type: 'object',
description: 'A prompt object for image editing',
parameters: [
{
name: 'images',
type: 'Array<DataContent>',
description:
'an image item can be one of: base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer.',
},
{
name: 'text',
type: 'string',
description: 'The text prompt.',
},
{
name: 'mask',
type: 'DataContent',
description:
'base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer.',
},
],
},
],
},
{
name: 'n',
type: 'number',
isOptional: true,
description: 'Number of images to generate.',
},
{
name: 'size',
type: 'string',
isOptional: true,
description:
'Size of the images to generate. Format: {width}x{height}.',
},
{
name: 'aspectRatio',
type: 'string',
isOptional: true,
description:
'Aspect ratio of the images to generate. Format: {width}:{height}.',
},
{
name: 'seed',
type: 'number',
isOptional: true,
description: 'Seed for the image generation.',
},
{
name: 'providerOptions',
type: 'ProviderOptions',
isOptional: true,
description: 'Additional provider-specific options.',
},
{
name: 'maxImagesPerCall',
type: 'number',
isOptional: true,
description:
'Maximum number of images to generate per API call. When n exceeds this value, multiple API calls will be made.',
},
{
name: 'maxRetries',
type: 'number',
isOptional: true,
description: 'Maximum number of retries. Default: 2.',
},
{
name: 'abortSignal',
type: 'AbortSignal',
isOptional: true,
description: 'An optional abort signal to cancel the call.',
},
{
name: 'headers',
type: 'Record<string, string>',
isOptional: true,
description: 'Additional HTTP headers for the request.',
},
]}
/>
<PropertiesTable
content={[
{
name: 'image',
type: 'GeneratedFile',
description: 'The first image that was generated.',
properties: [
{
type: 'GeneratedFile',
parameters: [
{
name: 'base64',
type: 'string',
description: 'Image as a base64 encoded string.',
},
{
name: 'uint8Array',
type: 'Uint8Array',
description: 'Image as a Uint8Array.',
},
{
name: 'mediaType',
type: 'string',
description: 'The IANA media type of the image.',
},
],
},
],
},
{
name: 'images',
type: 'Array<GeneratedFile>',
description: 'All images that were generated.',
properties: [
{
type: 'GeneratedFile',
parameters: [
{
name: 'base64',
type: 'string',
description: 'Image as a base64 encoded string.',
},
{
name: 'uint8Array',
type: 'Uint8Array',
description: 'Image as a Uint8Array.',
},
{
name: 'mediaType',
type: 'string',
description: 'The IANA media type of the image.',
},
],
},
],
},
{
name: 'warnings',
type: 'Warning[]',
description:
'Warnings from the model provider (e.g. unsupported settings).',
},
{
name: 'usage',
type: 'ImageModelUsage',
description: 'The usage statistics for the image generation.',
properties: [
{
type: 'ImageModelUsage',
parameters: [
{
name: 'imagesGenerated',
type: 'number',
description: 'The total number of images generated.',
},
],
},
],
},
{
name: 'providerMetadata',
type: 'ImageModelProviderMetadata',
isOptional: true,
description:
'Optional metadata from the provider. The outer key is the provider name. The inner values are the metadata. An images key is always present in the metadata and is an array with the same length as the top level images key. Details depend on the provider.',
},
{
name: 'responses',
type: 'Array<ImageModelResponseMetadata>',
description:
'Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.',
properties: [
{
type: 'ImageModelResponseMetadata',
parameters: [
{
name: 'timestamp',
type: 'Date',
description: 'Timestamp for the start of the generated response.',
},
{
name: 'modelId',
type: 'string',
description:
'The ID of the response model that was used to generate the response.',
},
{
name: 'headers',
type: 'Record<string, string>',
isOptional: true,
description: 'Response headers.',
},
],
},
],
},
]}
/>