Per generated image
30
credits / image
= $0.03 USD / image
100 images ≈ $3.00 · 1,000 images ≈ $30.00
Official: $0.035−14%
ByteDance
Available via APIImage GenerationGenerate, edit, and fuse up to 14 reference images with ByteDance Seedream 4.0 at 1K, 2K, or 4K, with up to 15 images per request.
seedream-4New accounts start with $0.20 in free credits, about 6 images at the starting price.
Compare all Seedream API versionsSeedream 4.0 is developed by ByteDance. Wizzx provides API access to it and does not own the model. All trademarks belong to their respective owners.
Next: turn the image into a video with
Model Guide
Generate, edit, and fuse up to 14 reference images with ByteDance Seedream 4.0 at 1K, 2K, or 4K, with up to 15 images per request.
Seedream 4.0 is the ByteDance Seed model that first merged image generation and image editing into a single architecture. According to ByteDance Seed, that unified design lets it handle knowledge-based generation, complex reasoning, and reference consistency in one model, runs much faster than its predecessor, and outputs images at up to 4K. On ByteDance's MagicBench evaluation it scored well on prompt following, aesthetics, and text rendering for text-to-image, and balanced instruction following against fidelity to the source image in single-image editing.
In Wizzx, Seedream 4.0 is the broadest of the 4.x controls: it keeps the 1K tier for cheap drafts, accepts a large reference set for fusion, and can return a batch of variations from one request.
| Wizzx control | Current behavior |
|---|---|
| Prompt | Required |
| Reference images | Optional, up to 14 images for fusion or editing; references do not change the price |
| Aspect ratio | 1:1 (default), 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9 |
| Resolution | 1K, 2K (default), or 4K; resolution does not change the per-image rate |
| Number of images | 1 (default) to 15 per request; reference images plus requested images must not exceed 15 |
| Watermark | Off by default; switch on to add the upstream AI-generated mark |
| Seed | Optional integer for more reproducible iterations |
State the task first: generate, edit, or combine. For knowledge-style images, give the actual content, such as the equation, dates, or labels, and the layout you expect. For edits, name the object or region, say what it becomes, and list what must stay unchanged; ByteDance Seed's own examples use phrasing like "Keep the color scheme, font, and alignment of the text unchanged." With several references, refer to them by order ("the jacket from image 1, the street from image 2") so each one has a clear job. When you request multiple images, describe how they should differ or relate, for example a series of steps or color options.
Wizzx charges per generated image at a flat rate: resolution, aspect ratio, watermark, and the number of reference images do not change it, while Number of Images multiplies it. Number of Images is the upper bound for the request, and credits are settled for the images actually delivered. The live price is shown in the pricing section on this page and comes from the backend catalog.
ByteDance's API for Seedream 4.0 also accepts exact pixel sizes within a wide aspect-ratio range and adds a watermark by default. Wizzx currently exposes only the eight preset aspect ratios and the 1K, 2K, and 4K tiers, does not offer custom pixel dimensions or an output format choice, and turns the watermark off unless you enable it.
Backend pricing
Model identity, billing unit and every price tier below are read from the backend catalog.
30
credits / image
= $0.03 USD / image
100 images ≈ $3.00 · 1,000 images ≈ $30.00
Official: $0.035−14%
| Tier | Official from | Wizzx | Savings |
|---|---|---|---|
| Per generated image | $0.035 | $0.03 | −14% |
1 credit = $0.001 USD. The final deduction returned by the API is authoritative.
Back to all modelsEvery request is asynchronous: submit the task, keep the task ID, then poll for the result. The body below uses the model's default settings.
Sign in and create a key in the dashboard. Set WIZZX_API_KEY in your server environment; never expose it in browser code.
Send a POST request to the model endpoint. A successful submission returns data.task_id; keep that ID before polling. Submission is not generation completion.
Replace YOUR_TASK_ID with the returned ID and query /api/v1/task/status. Wait for SUCCEEDED and read the output URLs. Stop on FAILED or REVIEW_REQUIRED; do not automatically resubmit an uncertain task.
curl -X POST \
https://api.wizzx.ai/api/v1/task/submit/seedream-4 \
-H "Authorization: Bearer $WIZZX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"aspect_ratio": "1:1",
"resolution": "2K",
"batch_size": 1,
"watermark": false,
"prompt": "A ceramic coffee cup on a wooden table, soft morning light, product photography"
}'const response = await fetch("https://api.wizzx.ai/api/v1/task/submit/seedream-4", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WIZZX_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"aspect_ratio": "1:1",
"resolution": "2K",
"batch_size": 1,
"watermark": false,
"prompt": "A ceramic coffee cup on a wooden table, soft morning light, product photography"
}),
});
const payload = await response.json();
const task = payload.data ?? payload;
const taskId = task.task_id;import os
import requests
response = requests.post(
"https://api.wizzx.ai/api/v1/task/submit/seedream-4",
headers={
"Authorization": f"Bearer {os.environ['WIZZX_API_KEY']}",
},
json={
"aspect_ratio": "1:1",
"resolution": "2K",
"batch_size": 1,
"watermark": False,
"prompt": "A ceramic coffee cup on a wooden table, soft morning light, product photography"
},
)
payload = response.json()
task = payload.get("data", payload)
task_id = task["task_id"]curl -X POST \
https://api.wizzx.ai/api/v1/task/status \
-H "Authorization: Bearer $WIZZX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"task_id": "YOUR_TASK_ID"
}'const response = await fetch("https://api.wizzx.ai/api/v1/task/status", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WIZZX_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ task_id: "YOUR_TASK_ID" }),
});
const payload = await response.json();
const task = payload.data ?? payload;import os
import requests
response = requests.post(
"https://api.wizzx.ai/api/v1/task/status",
headers={
"Authorization": f"Bearer {os.environ['WIZZX_API_KEY']}",
},
json={"task_id": "YOUR_TASK_ID"},
)
payload = response.json()
task = payload.get("data", payload)The fields this endpoint accepts on Wizzx, read from the same schema as the Playground form.
| Parameter | Type | Default | Allowed values | Description |
|---|---|---|---|---|
promptPromptrequired | string | — | — | Describe the image you want to generate |
image_urlsReference Images | url[] ≤ 14 | — | — | Up to 14 reference images for fusion |
aspect_ratioAspect Ratio | string | 1:1 | 1:1 · 4:3 · 3:4 · 16:9 · 9:16 · 3:2 · 2:3 · 21:9 | — |
resolutionResolution | string | 2K | 1K · 2K · 4K | Choose output detail. Resolution does not change the per-image rate. |
batch_sizeNumber of Images | integer | 1 | 1 – 15 | Generate 1 to 15 variations in this request. |
watermarkWatermark | boolean | false | — | — |
seedSeed | integer | — | — | Random seed for reproducibility |
Wizzx API
New accounts get $0.20 in free credits. Pay as you go with no subscription, and failed tasks are refunded.