packages/cloud-frontend/content/image-generation.mdx
import { Callout, Tabs, Cards } from "@/docs/components";
Generate high-quality images from text prompts using state-of-the-art AI models.
<div className="status-badge status-stable">Stable</div>elizaOS Cloud provides image generation through the configured image provider catalog. See the Images API reference or API Explorer for current models and defaults.
Navigate to Dashboard → Images for the visual interface.
<Tabs items={['cURL', 'JavaScript', 'Python']}> <Tabs.Tab>
curl -X POST "https://elizacloud.ai/api/v1/generate-image" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A futuristic cityscape at sunset, cyberpunk style",
"model": "google/gemini-2.5-flash-image",
"aspectRatio": "16:9",
"numImages": 1
}'
</Tabs.Tab> <Tabs.Tab>
const response = await fetch('https://elizacloud.ai/api/v1/generate-image', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
prompt: 'A futuristic cityscape at sunset, cyberpunk style',
model: 'google/gemini-2.5-flash-image',
aspectRatio: '16:9',
numImages: 1,
}),
});
const result = await response.json();
console.log(result.images[0].url);
</Tabs.Tab> <Tabs.Tab>
import requests
response = requests.post(
'https://elizacloud.ai/api/v1/generate-image',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
json={
'prompt': 'A futuristic cityscape at sunset, cyberpunk style',
'model': 'google/gemini-2.5-flash-image',
'aspectRatio': '16:9',
'numImages': 1,
},
)
result = response.json()
print(result['images'][0]['url'])
</Tabs.Tab> </Tabs>
{
"images": [
{
"url": "https://your-storage.vercel-storage.com/images/abc123.webp",
"text": "Optional model response text",
"mimeType": "image/webp",
"fileSize": 102400
}
],
"numImages": 1
}
Model availability and defaults are documented in the canonical Images API reference. Use that page or the API Explorer for the current model catalog and pricing-sensitive defaults.
| Parameter | Type | Required | Description |
|---|---|---|---|
prompt | string | ✓ | Text description of the image |
model | string | Model to use (default: google/gemini-2.5-flash-image) | |
aspectRatio | string | Output aspect ratio (default: 1:1) | |
numImages | integer | Number of images (1-4, default: 1) | |
stylePreset | string | Style preset to apply | |
sourceImage | string | Base64 data URL for image-to-image |
| Aspect Ratio | Description |
|---|---|
1:1 | Square (default) |
16:9 | Wide landscape |
9:16 | Tall portrait |
4:3 | Standard landscape |
3:4 | Standard portrait |
21:9 | Ultra-wide cinematic |
9:21 | Ultra-tall vertical |
| Preset | Description |
|---|---|
none | No style modification (default) |
photographic | Realistic lighting and details |
digital-art | Vibrant colors, modern aesthetics |
comic-book | Bold lines, dramatic shading |
fantasy-art | Magical and ethereal elements |
analog-film | Film grain and vintage tones |
neon-punk | Cyberpunk style with neon colors |
cinematic | Dramatic lighting and composition |
Transform existing images by providing a sourceImage parameter:
const response = await fetch("https://elizacloud.ai/api/v1/generate-image", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
prompt: "Transform this into a watercolor painting",
sourceImage: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
}),
});
[Subject] [Style] [Details] [Lighting] [Mood]
Photorealistic:
{
"prompt": "Professional headshot of a business executive, studio lighting, neutral background, sharp focus",
"stylePreset": "photographic"
}
Artistic:
{
"prompt": "Enchanted forest with glowing mushrooms, magical atmosphere, soft moonlight filtering through trees",
"stylePreset": "fantasy-art"
}
Product:
{
"prompt": "Modern smartphone on white background, professional product photography, soft shadows",
"aspectRatio": "4:3"
}
| Code | Error | Solution |
|---|---|---|
| 400 | Invalid prompt | Ensure prompt is non-empty |
| 400 | Invalid model | Use a supported model |
| 402 | Insufficient credits | Add credits to your account |
| 429 | Rate limited | Wait and retry |
| 500 | Generation failed | Retry or try a different model |