Seedream 5.0 Pro, or Doubao Seedream 5.0 Pro in ByteDance's own naming, launched in July 2026. It writes text straight into the picture, which is exactly what posters, covers and ad banners need. It can also work from one or up to ten reference images, so your product and your brand palette end up in the result.
What you can make
- Event posters, book covers and album art with a title on them.
- Brand key visuals built from product shots and style references.
- The same cover in several shapes from one prompt.
- Ad variants where only the headline changes.
Settings that matter
- Text: put each string in quotes, then say where it sits and what it looks like, for example "headline 'OPEN AIR CINEMA' at the bottom, condensed white letters".
- Resolution:
resolutionset to1K,1.5Kor2K. - Aspect ratio: 1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2 or 21:9. Exact pixel sizes are not accepted in Kadraris yet.
- References: up to 10. Give each a job, like "image 1 is the bottle, image 2 sets the colors".
- Prompt: up to 32,000 characters, so a busy poster can have every text block spelled out.
- Output: one image per request. ByteDance's layer decomposition mode is not exposed.
Starter prompt
Jazz festival poster, 2:3. Top: "RIVERSIDE JAZZ" in tall gold art deco letters. Center: saxophone silhouette against a deep blue night river. Bottom: "August 22-24" in small white typeReplace the quoted texts and the central image; keep the top-center-bottom order so the layout stays clear.
Questions
What does Seedream 5.0 Pro cost?
from $0.0783 per image. If the request fails you pay nothing, and that also covers an image stopped by the producer's final content check: the whole hold comes back even though the render ran.
Pro or Seedream 5.0 Flash?
Pro is for poster-quality pictures with lettering. Seedream 5.0 Flash has one price across sizes and the same limit of 10 references.
How does it compare with other image models?
Look at Seedream 5.0 Pro vs Nano Banana Pro and Seedream 5.0 Pro vs GPT Image 2.5.
Seedream 5.0 Pro in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-pro",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "seedream-5.0-pro",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "seedream-5.0-pro",
"input": {
"prompt": "Packshot of a white linen sneaker on a concrete block, hard midday sun, crisp shadow, 85mm",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
prompt * | string | ≤ 32000 chars | |
aspect_ratio | string | 1:1 4:3 3:4 16:9 9:16 2:3 3:2 21:9 | 1:1 |
resolution | string | 1K 1.5K 2K | 1K |
image_urls | array | max 10 |
Fetch this list as JSON with GET /v1/models/seedream-5.0-pro.



























