Bytedance Seedream V4 Sequential

Bytedance Seedream V4 Sequential

Playground

Try it on WaveSpeedAI!

Seedream 4.0 by creates 4K images with editing, character/object consistency and sequential multi-image generation. Ready-to-use REST API, best performance, no coldstarts, affordable pricing.

Features

What is it?

Seedream v4 sequential is ’s SOTA image model that use for sequential/group generation in one pipeline—built for cross-image consistency and rapid iteration.

Why choose Seedream?

  • All-in-one, multi-modal: T2I, edit, and multi-image sets without switching models.
  • Five strengths: precise instruction editing, high feature retention, deep understanding, ultra-fast inference, ultra-high-res output.
  • Speed: as little as ~1.8 s for a 2K image (T2I).
  • Powerful edits: add/remove objects, attribute & style changes, structural ops (e.g., face swap), texture/brush/frame edits.
  • Sequential consistency: maintains identity, palette, and layout across a set/series.

Designed for

  • Commercial design — Posters, apparel, packaging, e-commerce visuals; fast varianting and brand-safe edits.
  • Entertainment IP — Anime/film characters; style-consistent key art, poses, and look dev.
  • Art creation — High-res illustration, stylistic explorations, and series with coherent aesthetics.
  • Architecture — Concept renders, façade studies, material/lighting variations across sets.
  • Brand content — Campaign assets and social creatives with locked palette, logo, and identity.

How to use

  1. Write prompt: action + object + target feature. For sets add “a series of N images” and style locks.
  2. Set the parameter: size, max_images.

Price

  • $0.027 per image.
  • Total price = max_images * $0.027

Prompt Examples

  • Instruction edit: Replace [A] with [B]; keep [lighting/style]; preserve [logo/identity].
  • T2I coherent: A [subject] in [scene/time/weather], [camera/lens], [lighting], [style]; key props [X]; composition [framing].
  • Sequential set: Generate a series of [N] images of [subject/brand] in [scenario]; keep consistent [palette/logo/identity]; vary [poses/angles/backgrounds].

Note

Please set the max_image first, and then input how many images you want to generate in prompt! Such as:

  • max_image = 4.
  • Prompt: I want to generate 4 images… + (your prompt)
Aspect RatioExact (W×H)Exact PixelsRounded (W×H, ÷64)Rounded Pixels
1:11448 × 14482,096,7041408 × 14081,982,464
3:21773 × 11822,095,6861728 × 11521,990,656
4:31672 × 12542,096,6881664 × 12162,023,424
16:91936 × 10892,108,3041920 × 10882,088,960
21:92212 × 9482,096,9762176 × 9602,088,960
1:11024 × 10241,048,5761024 × 10241,048,576
3:21254 × 8361,048,3441216 × 8321,011,712
4:31182 × 8871,048,4341152 × 8961,032,192
16:91365 × 7681,048,3201344 × 7681,032,192
21:91564 × 6701,047,8801536 × 640983,040
1:1323 × 323104,329320 × 320102,400
3:2397 × 264104,808384 × 25698,304
4:3374 × 280104,720448 × 320143,360
16:9432 × 243104,976448 × 256114,688
21:9495 × 212104,940576 × 256147,456

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "size": "2048*2048",
  "max_images": 1
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/bytedance/seedream-v4/sequential" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.
sizestringNo2048*2048512 ~ 8192The size of the generated media, supporting up to 4K resolution for images. If you need to match the size of an existing image, you must explicitly specify the dimensions, as automatic resizing to match the image is not supported.
max_imagesintegerNo11 ~ 15The maximum number of images that can be generated (up to 15). This value must align with the number of images specified in the prompt above.
enable_base64_outputbooleanNofalse-If set to `true`, the prediction's `output` strings are returned as **naked base64** (no `data:<mime>;base64,` prefix). When `false` (default), outputs are returned as URLs pointing to our CDN.
enable_sync_modebooleanNofalse-If set to `true`, the request attempts to wait for the generated result and return outputs in the same response. If the result is not ready within the sync wait window, the API can return a timeout body while the task continues processing. This option is only available via the API and is supported only by some models.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.