Seedream 5.0 Pro
ByteDance Doubao Seedream 5.0 Pro — flagship async image generation at 1K and 2K with text-to-image, multi-reference image-to-image, and reliable text rendering.
ByteDance's flagship Doubao Seedream image model on reAPI. 1K and 2K
resolution tiers, text-to-image, single and multi-reference
image-to-image (up to 10 reference images), and dependable text
rendering for posters, covers, and ad creative. Async-first: submit
returns a task_id; poll until ready. See current pricing on the
model page.
Quick example
curl https://reapi.ai/api/v1/images/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedream-5-0-pro",
"prompt": "a scarlet macaw on a mossy branch, cinematic god rays, magazine cover titled WILD BEAUTY",
"aspect_ratio": "16:9",
"quality": "high"
}'import requests
resp = requests.post(
"https://reapi.ai/api/v1/images/generations",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"model": "doubao-seedream-5-0-pro",
"prompt": "a scarlet macaw on a mossy branch, cinematic god rays",
"aspect_ratio": "16:9",
"quality": "high",
},
timeout=30,
)
print(resp.json())const r = await fetch("https://reapi.ai/api/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "doubao-seedream-5-0-pro",
prompt: "a scarlet macaw on a mossy branch, cinematic god rays",
aspect_ratio: "16:9",
quality: "high",
}),
});
console.log(await r.json());package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
body, _ := json.Marshal(map[string]any{
"model": "doubao-seedream-5-0-pro",
"prompt": "a scarlet macaw on a mossy branch, cinematic god rays",
"aspect_ratio": "16:9",
"quality": "high",
})
req, _ := http.NewRequest("POST",
"https://reapi.ai/api/v1/images/generations", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}Submit response
{
"id": "task_018f5a3a1b6e7d9f8c2b4d6e8f0a2c4e",
"model": "doubao-seedream-5-0-pro",
"status": "processing",
"created_at": 1735000000
}Poll GET /api/v1/tasks/{id} (see the Tasks reference) until
status === "completed". The completed payload's output.image_urls holds the
generated image URL, valid for 72 hours. Mirror to your own storage if you
need it longer.
Authentication
Every call needs a Bearer token. Generate keys at reapi.ai/settings/apikeys.
Authorization: Bearer YOUR_API_KEYKeys carry the active workspace's billing scope — there is no separate project header.
Endpoint
POST /api/v1/images/generations
GET /api/v1/tasks/{id}Submission is async. The POST returns immediately with a task_id; the task
endpoint returns the same envelope until completion. Polling does not consume
credits.
Request body
model — required
string. Must be doubao-seedream-5-0-pro exactly.
prompt — string, required
Up to 4,000 characters. Free-form text describing the image. Detailed prompts that name the subject, composition, lighting, and style consistently produce better results. Seedream 5.0 Pro renders in-image text well — put headline or logo copy directly in the prompt.
aspect_ratio — string, required
Output aspect ratio. Accepted values:
1:14:33:416:99:162:33:2
quality — string, required
Output resolution tier:
basic— 1K outputhigh— 2K output
Seedream 5.0 Pro does not expose a 4K tier. Generated images do not include a visible watermark by default.
image_urls — array, optional
Reference images for image-to-image (1 image) or multi-reference fusion (up to
10 images). Public HTTP(S) URLs only — base64 / data: URIs are
rejected at the gateway.
Upload to your own R2 / S3 / OSS / equivalent first, then pass the public URL.
layer_decomposition — boolean, optional
Defaults to false. When true, the model splits your reference image into a
base image plus up to 16 independently editable layers. Each layer is a PNG
with a real alpha channel, and the response carries per-layer metadata:
z_index— stacking order;0is the base image,1..nare the layersbounding_box— the layer'sabsoluteandnormalizedpositionname/description— what the model identified in that layer
Requires exactly one image in image_urls; zero or multiple are rejected.
Cannot be combined with background: "transparent" — layers are already
returned as transparent PNGs. Partial success is not supported: if any layer
fails, the whole request fails. If your prompt asks for more layers than the
model can produce, some layer content may be dropped rather than the request
failing.
Billing is per image actually returned — see Pricing.
background — string, optional
Controls the alpha channel of the output. Defaults to opaque.
opaque— a normal solid-background imagetransparent— a PNG with a real alpha channel
transparent requires exactly one image in image_urls and the source
image must itself carry an alpha channel; text-to-image requests are rejected
upstream. It also cannot be combined with layer_decomposition. opaque
carries no such restriction.
content_filter — boolean, optional
Controls the final-image content check and defaults to true. Direct API
requests may pass false to skip this additional check. The hosted Playground
always keeps it enabled.
When enabled, a flagged image is hidden and the task returns a content-policy error. Because the upstream generation already completed, that generation is still charged. Avoid submitting restricted-content prompts when using the Playground.
There is no n parameter. An ordinary request returns exactly one image;
send multiple requests when you need several variations. The one exception is
layer_decomposition: true, which returns the base image plus its layers in a
single call. Group-image, web-search, and streaming options are not available
on this model.
Pricing
Seedream 5.0 Pro charges the official per-output-image rate, banded by
quality — the high/2K band costs more than basic/1K. For reference-image
requests, the first input image is included and each additional input image
(2nd through 10th) adds the official ¥0.02 reference surcharge (converted
at the configured 6.8 RMB/USD rate). Provider failures and requests rejected
before an image is generated are refunded. An image blocked by the final output
check is still charged because generation already completed.
credits = ceil((output_price_usd + additional_reference_price_usd) × 1000)where 1 credit = $0.001. The exact per-image credit cost surfaces on the
model page and reflects the current
rate. There is no per-token or subscription component.
Layer decomposition
Because the model decides how many layers to produce, a
layer_decomposition: true request is charged for the images you actually
receive:
credits = (1 + layers_returned) × per_image_credits_at_your_quality_tierEvery returned image — the base image and each layer — is charged at the
quality tier you requested. basic bills each of them at the 1K rate,
high at the 2K rate. Reference-image surcharges apply to the base image
only; layers are outputs, not additional inputs.
At submission time we reserve the worst case — the base image plus the maximum 16 layers — and refund the difference the moment the task settles, so you are never charged for layers the model did not return. A failed request is refunded in full.
If cost matters more than resolution, send quality: "basic". Layer
decomposition on a 1K base produces the same layer structure at roughly half
the per-image price.
Response
The poll envelope returns the image URL in output.image_urls:
{
"id": "task_019dfd44b7fd74168541552a3260a623",
"model": "doubao-seedream-5-0-pro",
"status": "completed",
"output": {
"image_urls": [
"https://cdn.reapi.ai/...jpg"
]
}
}URLs are valid for 72 hours. Mirror to your own storage for longer retention.
Errors
Failures use the standard envelope { error: { code, message, request_id } }.
See the errors catalog for the full code list. Common cases:
- Invalid parameters (bad
aspect_ratio/quality, oversizeimage_urls) →4xxinvalid-input. - A prompt or reference rejected before generation → content-policy error; the task is refunded.
- A generated image blocked by the enabled output check → content-policy error
(
80006); the image is hidden and the completed generation remains charged.
Tips
- Choose
aspect_ratioexplicitly instead of relying on ratio wording in the prompt. - Multi-reference fusion keeps a character consistent — pass the same face / wardrobe references across a series.
- Lean on Seedream 5.0 Pro's text rendering for posters, covers, and UI mockups; spell the exact words you want in quotes inside the prompt.
Related
- Seedream 5.0 Lite — the lean, lower-cost tier
- Tasks reference
- Errors catalog