content/providers/01-ai-sdk-providers/60-replicate.mdx
Replicate is a platform for running open-source AI models. It is a popular choice for running image generation models.
The Replicate provider is available via the @ai-sdk/replicate module. You can install it with
<Tabs items={['pnpm', 'npm', 'yarn', 'bun']}> <Tab> <Snippet text="pnpm add @ai-sdk/replicate" dark /> </Tab> <Tab> <Snippet text="npm install @ai-sdk/replicate" dark /> </Tab> <Tab> <Snippet text="yarn add @ai-sdk/replicate" dark /> </Tab>
<Tab> <Snippet text="bun add @ai-sdk/replicate" dark /> </Tab> </Tabs>You can import the default provider instance replicate from @ai-sdk/replicate:
import { replicate } from '@ai-sdk/replicate';
If you need a customized setup, you can import createReplicate from @ai-sdk/replicate
and create a provider instance with your settings:
import { createReplicate } from '@ai-sdk/replicate';
const replicate = createReplicate({
apiToken: process.env.REPLICATE_API_TOKEN ?? '',
});
You can use the following optional settings to customize the Replicate provider instance:
baseURL string
Use a different URL prefix for API calls, e.g. to use proxy servers.
The default prefix is https://api.replicate.com/v1.
apiToken string
API token that is being sent using the Authorization header. It defaults to
the REPLICATE_API_TOKEN environment variable.
headers Record<string,string>
Custom headers to include in the requests.
fetch (input: RequestInfo, init?: RequestInit) => Promise<Response>
Custom fetch implementation.
You can create Replicate image models using the .image() factory method.
For more on image generation with the AI SDK see generateImage().
The following image models are currently supported by the Replicate provider:
Text-to-Image Models:
Inpainting and Image Editing Models:
Flux-2 Models (Multi-Reference Image Generation):
These models support up to 8 input reference images for style transfer and composition:
You can also use versioned models.
The id for versioned models is the Replicate model id followed by a colon and the version ID ($modelId:$versionId), e.g.
bytedance/sdxl-lightning-4step:5599ed30703defd1d160a25a63321b4dec97101d98b4674bcc56e41f62f35637.
import { replicate } from '@ai-sdk/replicate';
import { generateImage } from 'ai';
import { writeFile } from 'node:fs/promises';
const { image } = await generateImage({
model: replicate.image('black-forest-labs/flux-schnell'),
prompt: 'The Loch Ness Monster getting a manicure',
aspectRatio: '16:9',
});
await writeFile('image.webp', image.uint8Array);
console.log('Image saved as image.webp');
import { replicate, type ReplicateImageModelOptions } from '@ai-sdk/replicate';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: replicate.image('recraft-ai/recraft-v3'),
prompt: 'The Loch Ness Monster getting a manicure',
size: '1365x1024',
providerOptions: {
replicate: {
style: 'realistic_image',
} satisfies ReplicateImageModelOptions,
},
});
import { replicate } from '@ai-sdk/replicate';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: replicate.image(
'bytedance/sdxl-lightning-4step:5599ed30703defd1d160a25a63321b4dec97101d98b4674bcc56e41f62f35637',
),
prompt: 'The Loch Ness Monster getting a manicure',
});
Replicate supports image editing through various models. Pass input images via prompt.images to transform or edit existing images.
Transform an existing image using text prompts:
const imageBuffer = readFileSync('./input-image.png');
const { images } = await generateImage({
model: replicate.image('black-forest-labs/flux-fill-dev'),
prompt: {
text: 'Turn the cat into a golden retriever dog',
images: [imageBuffer],
},
providerOptions: {
replicate: {
guidance_scale: 7.5,
num_inference_steps: 30,
} satisfies ReplicateImageModelOptions,
},
});
Edit specific parts of an image using a mask. For FLUX Fill models, white areas in the mask indicate where the image should be edited:
const image = readFileSync('./input-image.png');
const mask = readFileSync('./mask.png'); // White = inpaint, black = keep
const { images } = await generateImage({
model: replicate.image('black-forest-labs/flux-fill-pro'),
prompt: {
text: 'A sunlit indoor lounge area with a pool containing a flamingo',
images: [image],
mask: mask,
},
providerOptions: {
replicate: {
guidance_scale: 7.5,
num_inference_steps: 30,
} satisfies ReplicateImageModelOptions,
},
});
Flux-2 models support up to 8 input reference images for style transfer, composition, and multi-subject generation:
import { replicate } from '@ai-sdk/replicate';
import { generateImage } from 'ai';
const reference1 = readFileSync('./style-reference.png');
const reference2 = readFileSync('./subject-reference.png');
const { images } = await generateImage({
model: replicate.image('black-forest-labs/flux-2-pro'),
prompt: {
text: 'Combine the style and subjects from the reference images',
images: [reference1, reference2],
},
});
Common provider options for image generation:
120 for 2 minutes). When not specified, uses the default 60-second wait.For more details, see the Replicate models page.