content/providers/01-ai-sdk-providers/65-prodia.mdx
Prodia is a fast inference platform for generative AI, offering high-speed image generation with FLUX and Stable Diffusion models.
The Prodia provider is available via the @ai-sdk/prodia module. You can install it with
<Tabs items={['pnpm', 'npm', 'yarn', 'bun']}> <Tab> <Snippet text="pnpm add @ai-sdk/prodia" dark /> </Tab> <Tab> <Snippet text="npm install @ai-sdk/prodia" dark /> </Tab> <Tab> <Snippet text="yarn add @ai-sdk/prodia" dark /> </Tab>
<Tab> <Snippet text="bun add @ai-sdk/prodia" dark /> </Tab> </Tabs>You can import the default provider instance prodia from @ai-sdk/prodia:
import { prodia } from '@ai-sdk/prodia';
If you need a customized setup, you can import createProdia and create a provider instance with your settings:
import { createProdia } from '@ai-sdk/prodia';
const prodia = createProdia({
apiKey: 'your-api-key', // optional, defaults to PRODIA_TOKEN environment variable
baseURL: 'custom-url', // optional
headers: {
/* custom headers */
}, // optional
});
You can use the following optional settings to customize the Prodia provider instance:
baseURL string
Use a different URL prefix for API calls.
The default prefix is https://inference.prodia.com/v2.
apiKey string
API key that is being sent using the Authorization header as a Bearer token.
It defaults to the PRODIA_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 use it as a middleware to intercept requests, or to provide a custom fetch implementation for e.g. testing.
You can create Prodia image models using the .image() factory method.
For more on image generation with the AI SDK see generateImage().
import { writeFileSync } from 'node:fs';
import { prodia } from '@ai-sdk/prodia';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: prodia.image('inference.flux-fast.schnell.txt2img.v2'),
prompt: 'A cat wearing an intricate robe',
});
const filename = `image-${Date.now()}.png`;
writeFileSync(filename, image.uint8Array);
console.log(`Image saved to ${filename}`);
Prodia offers fast inference for various image generation models. Here are the supported model types:
| Model | Description |
|---|---|
inference.flux-fast.schnell.txt2img.v2 | Fast FLUX Schnell model for text-to-image generation |
inference.flux.schnell.txt2img.v2 | FLUX Schnell model for text-to-image generation |
You can specify the image size using the size parameter in WIDTHxHEIGHT format:
import { prodia } from '@ai-sdk/prodia';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: prodia.image('inference.flux-fast.schnell.txt2img.v2'),
prompt: 'A serene mountain landscape at sunset',
size: '1024x768',
});
Prodia image models support additional options through the providerOptions.prodia object:
import { prodia, type ProdiaImageModelOptions } from '@ai-sdk/prodia';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: prodia.image('inference.flux-fast.schnell.txt2img.v2'),
prompt: 'A cat wearing an intricate robe',
providerOptions: {
prodia: {
width: 1024,
height: 768,
steps: 4,
stylePreset: 'cinematic',
} satisfies ProdiaImageModelOptions,
},
});
The following provider options are supported:
size.size.3d-model, analog-film, anime, cinematic, comic-book, digital-art, enhance, fantasy-art, isometric, line-art, low-poly, neon-punk, origami, photographic, pixel-art, texture, craft-clay.You can use the seed parameter to get reproducible results:
import { prodia } from '@ai-sdk/prodia';
import { generateImage } from 'ai';
const { image } = await generateImage({
model: prodia.image('inference.flux-fast.schnell.txt2img.v2'),
prompt: 'A serene mountain landscape at sunset',
seed: 12345,
});
The generateImage response includes provider-specific metadata in providerMetadata.prodia.images[]. Each image object may contain the following properties:
import { prodia } from '@ai-sdk/prodia';
import { generateImage } from 'ai';
const { image, providerMetadata } = await generateImage({
model: prodia.image('inference.flux-fast.schnell.txt2img.v2'),
prompt: 'A serene mountain landscape at sunset',
});
// Access provider metadata
const metadata = providerMetadata?.prodia?.images?.[0];
console.log('Job ID:', metadata?.jobId);
console.log('Seed:', metadata?.seed);
console.log('Elapsed:', metadata?.elapsed);