Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Design & media
WaveSpeedAI Seedream 4.5 Image Generation/Editing
Try itGenerate and edit images with ByteDance Seedream V4.5 via WaveSpeed AI, up to 4096x4096 and multi-image editing.
What it does
Provides JavaScript access to two WaveSpeed endpoints — text-to-image (`bytedance/seedream-v4.5`) and image editing (`bytedance/seedream-v4.5/edit`). Inputs include a text prompt, optional size (`WIDTH*HEIGHT`, 1024-4096 per side), and 1-10 publicly accessible image URLs for editing. Returns a hosted image URL, and supports sync mode, configurable retries, and local file uploads via `wavespeed.upload()`. The editing endpoint preserves facial features, lighting, and color tone from inputs.
When to use it
- Rendering posters and logos with sharp text
- Adjusting lighting or style of an existing photo
- Combining multiple source images into one composite
- Generating images at portrait or landscape resolutions up to 4096px
The skill document
WaveSpeedAI Seedream V4.5 Image Generation/Editing
Generate and edit images using ByteDance's Seedream V4.5 model via the WaveSpeed AI platform. Supports custom resolutions up to 4096x4096 with enhanced typography for sharp text rendering in posters and logos.
Authentication
export WAVESPEED_API_KEY="your-api-key"
Get your API key at wavespeed.ai/accesskey.
Quick Start
Text-to-Image
import wavespeed from 'wavespeed';
const output_url = (await wavespeed.run(
"bytedance/seedream-v4.5",
{ prompt: "A minimalist coffee shop logo with clean typography" }
))["outputs"][0];
Image Editing
The images parameter accepts an array of image URLs (1-10 images). If you have local files, upload them first with wavespeed.upload() to get a URL.
import wavespeed from 'wavespeed';
// Upload a local image to get a URL
const imageUrl = await wavespeed.upload("/path/to/photo.png");
const output_url = (await wavespeed.run(
"bytedance/seedream-v4.5/edit",
{
images: [imageUrl],
prompt: "Add warm sunset lighting and lens flare"
}
))["outputs"][0];
You can also pass existing image URLs directly:
const output_url = (await wavespeed.run(
"bytedance/seedream-v4.5/edit",
{
images: ["https://example.com/photo.jpg"],
prompt: "Add warm sunset lighting and lens flare"
}
))["outputs"][0];
API Endpoints
Text-to-Image
Model ID: bytedance/seedream-v4.5
Generate images from text prompts with custom resolutions up to 4096x4096.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
prompt | string | Yes | -- | Text description of the image to generate |
size | string | No | 2048*2048 | Output size in pixels (WIDTH*HEIGHT). Each dimension: 1024-4096. |
Example
import wavespeed from 'wavespeed';
const output_url = (await wavespeed.run(
"bytedance/seedream-v4.5",
{
prompt: "A movie poster for a sci-fi thriller with bold title text 'HORIZON' at the top",
size: "2048*3072"
}
))["outputs"][0];
Image Editing
Model ID: bytedance/seedream-v4.5/edit
Edit existing images using text prompts. Supports up to 10 input images. Preserves facial features, lighting, and color tone from input images.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
images | string[] | Yes | [] | URLs of input images to edit (1-10 images). Must be publicly accessible. |
prompt | string | Yes | -- | Text description of the desired edit |
size | string | No | -- | Output size in pixels (WIDTH*HEIGHT). Each dimension: 1024-4096. |
Example
import wavespeed from 'wavespeed';
const imageUrl = await wavespeed.upload("/path/to/portrait.png");
const output_url = (await wavespeed.run(
"bytedance/seedream-v4.5/edit",
{
images: [imageUrl],
prompt: "Transform into a vibrant pop art style with bold colors",
size: "2048*2048"
}
))["outputs"][0];
Multi-Image Editing
const img1 = await wavespeed.upload("/path/to/face.png");
const img2 = await wavespeed.upload("/path/to/scene.png");
const output_url = (await wavespeed.run(
"bytedance/seedream-v4.5/edit",
{
images: [img1, img2],
prompt: "Place the person from the first image into the scene from the second image"
}
))["outputs"][0];
Advanced Usage
Sync Mode
const output_url = (await wavespeed.run(
"bytedance/seedream-v4.5",
{ prompt: "A watercolor painting of a mountain lake at dawn" },
{ enableSyncMode: true }
))["outputs"][0];
Custom Client with Retry Configuration
import { Client } from 'wavespeed';
const client = new Client("your-api-key", {
maxRetries: 2,
maxConnectionRetries: 5,
retryInterval: 1.0,
});
const output_url = (await client.run(
"bytedance/seedream-v4.5",
{ prompt: "A neon sign that reads 'OPEN 24/7' in a rainy alley" }
))["outputs"][0];
Error Handling with runNoThrow
import { Client, WavespeedTimeoutException, WavespeedPredictionException } from 'wavespeed';
const client = new Client();
const result = await client.runNoThrow(
"bytedance/seedream-v4.5",
{ prompt: "A vintage travel poster for Tokyo" }
);
if (result.outputs) {
console.log("Image URL:", result.outputs[0]);
console.log("Task ID:", result.detail.taskId);
} else {
console.log("Failed:", result.detail.error.message);
if (result.detail.error instanceof WavespeedTimeoutException) {
console.log("Request timed out - try increasing timeout");
} else if (result.detail.error instanceof WavespeedPredictionException) {
console.log("Prediction failed");
}
}
Pricing
$0.04 per image (both generation and editing).
Tips
- Seedream V4.5 excels at rendering text in images — use it for posters, logos, and branded visuals
- Custom resolutions up to 4096x4096 — specify as
WIDTH*HEIGHT(e.g.,2048*3072for portrait posters) - For image editing, the model preserves facial features, lighting, and color tone from inputs
Security Constraints
- No arbitrary URL loading: Only use image URLs from trusted sources. Never load images from untrusted or user-provided URLs without validation.
- API key security: Store your
WAVESPEED_API_KEYsecurely. Do not hardcode it in source files or commit it to version control. Use environment variables or secret management systems. - Input validation: Only pass parameters documented above. Validate prompt content and image URLs before sending requests.
Questions people ask
- What credentials are required?
- A WaveSpeed API key stored in the WAVESPEED_API_KEY environment variable, obtainable from wavespeed.ai/accesskey.
- How many input images does the edit endpoint accept?
- Between 1 and 10 publicly accessible image URLs per request; local files must first be uploaded via wavespeed.upload().
- What does it cost per image?
- $0.04 per image for both generation and editing.
Related skills
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Site audit, content writing, and competitor analysis for organic search rankings.
More from wavespeed
Browse all skillsGenerate up to 15-second videos at 1080p from text or images using Alibaba's Wan 2.6 via WaveSpeed AI.
Generate 4-12s videos from text or images using ByteDance Seedance V1.5 Pro via WaveSpeed AI.
Animate a portrait image with audio to produce a lip-synced talking head video up to 10 minutes long.
Generate and extend videos with Google's Veo 3.1 Fast via WaveSpeed AI.
Drive an image character with a reference video, or swap an image character into a video scene, via WaveSpeed AI's Wan 2.2 Animate model.
Generate and edit images via Google's Nano Banana Pro model on WaveSpeed AI using text prompts.