Seedream 4.0 API

Unified image generation and editing with up to 14 reference images, batch sets of up to 15, and 1K to 4K output at one flat per-image price.

ByteDanceImage GenerationReleased Sep 9, 2025MalaysiaProprietary Endpoint

About Seedream 4.0

Unified image generation and editing with up to 14 reference images, batch sets of up to 15, and 1K to 4K output at one flat per-image price.

Also known as ByteDance Seedream 4.0

editingbatch generation

Seedream 4.0 specs

Model ID
seedream-4-0
Provider
ByteDance
Category
Image Generation
Released
Sep 9, 2025
Input
TextImage
Output
Image
Region
Malaysia
Endpoints
POST/v1/images/generations
Alternate model IDs
bytedance/seedream-4.0seedream-4.0seedream-4seedream-4-0-250828

Seedream 4.0 API pricing

Live pay-as-you-go rates from the EmpirioLabs catalog. You are billed only for what you use, with no monthly minimum.

Type
Spec
Rate
Standard
per image
$0.060
Compare on the full pricing page

How to call the Seedream 4.0 API

Seedream 4.0 runs through POST /v1/images/generations. The request returns a job_id right away; poll GET /v1/jobs/{job_id} until the job completes and read the output URLs from the result. Or add "sync": true to skip polling: the request stays open and returns the finished OpenAI-style image response directly, so OpenAI SDKs work as-is. Get an API key from the EmpirioLabs dashboard.

cURL: submit the job
curl https://api.empiriolabs.ai/v1/images/generations \
  -H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-4-0",
    "prompt": "Describe what you want Seedream 4.0 to generate."
  }'
cURL: poll for the result
curl https://api.empiriolabs.ai/v1/jobs/JOB_ID \
  -H "Authorization: Bearer $EMPIRIOLABS_API_KEY"
Python
import requests

response = requests.post(
    "https://api.empiriolabs.ai/v1/images/generations",
    headers={"Authorization": "Bearer YOUR_EMPIRIOLABS_API_KEY"},
    json={
        "model": "seedream-4-0",
        "prompt": "Describe what you want Seedream 4.0 to generate.",
    },
)
job = response.json()

# Generation runs as an async job. Poll until it completes.
import time
while True:
    status = requests.get(
        f"https://api.empiriolabs.ai/v1/jobs/{job['job_id']}",
        headers={"Authorization": "Bearer YOUR_EMPIRIOLABS_API_KEY"},
    ).json()
    if status.get("status") in ("completed", "failed"):
        print(status)
        break
    time.sleep(5)
Full Seedream 4.0 API reference

Seedream 4.0 API parameters

Request parameters supported by the Seedream 4.0 API on EmpirioLabs. Defaults apply when a field is omitted.

ParameterTypeDefaultRange / valuesDescription
promptstring--Text prompt. With image attached, becomes an editing instruction. For batch mode, describe each image sequentially.
aspect_ratioenumautoauto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9Auto lets the model choose dimensions within the selected resolution tier. Explicit ratios use the preset size for that tier.
qualityenum2K1K, 2K, 4KOutput resolution tier. Every tier bills at the same flat per-image rate.
prompt_optimization_modeenumstandardstandard, fastStandard prioritizes prompt adherence and image quality. Fast reduces generation latency with slightly lower image quality.
use_custom_sizebooleanfalse-Use custom_width and custom_height instead of preset aspect_ratio and quality.
custom_widthnumber-720 to 6240Pixels. Total area must be in [0.92MP, 16.78MP]; aspect must be in [1:16, 16:1]. Only when use_custom_size=true.
custom_heightnumber-720 to 6240Pixels. Total area must be in [0.92MP, 16.78MP]; aspect must be in [1:16, 16:1]. Only when use_custom_size=true.
imagearray--Up to 14 reference image URLs for editing. Triggers image-edit mode.
imagesarray--Alias for image. Use this for multiple uploaded image references.
batch_enabledbooleanfalse-Generate a cohesive set of related images from a single prompt.
max_imagesnumber41 to 15Batch mode only. Maximum images in the set; the model decides actual count. You are billed only for images returned.
watermarkbooleanfalse-When enabled, the generated image includes an AI-generated provenance watermark. EmpirioLabs does not add a separate watermark.
response_formatenumurlurl, b64_jsonReturn signed image URLs by default, or include base64 image data when b64_json is requested.

Good to know

Text-to-image, single-reference editing, and multi-reference generation from up to 14 input images, plus batch sets of up to 15 related images. Every size bills at the same flat per-image rate, and input reference images are free.

Output

  • 1K, 2K, or 4K tiers, or an explicit size between 0.92MP and 16.78MP total pixels. JPEG output.
  • A fast prompt-optimization mode trades a little quality for lower latency.

Batch mode

  • sequential_image_generation auto generates a cohesive set; you are billed only for images actually returned.

Content safety

  • Generated images pass an automated content-safety check. An image flagged as explicit is not returned. Because the image is generated before the check runs, a flagged generation is still billed.

Seedream 4.0 API: common questions

How much does the Seedream 4.0 API cost?

On EmpirioLabs, Seedream 4.0 is billed pay as you go: Standard $0.060 per image. The live rate card on this page always matches what the API charges.

Which endpoint does Seedream 4.0 use?

Seedream 4.0 is served through POST /v1/images/generations on api.empiriolabs.ai with standard bearer-token authentication.

Can I try Seedream 4.0 in the browser before integrating?

Yes. The EmpirioLabs playground runs Seedream 4.0 in the browser with the same parameters the API exposes, so you can test prompts before writing code.

How do I get a Seedream 4.0 API key?

Create an EmpirioLabs account, then generate a key under API Keys in the dashboard. Billing is pay-as-you-go credits, so you only pay for the requests you make.

Ready to use better endpoints?

Check out our pricing or reach out if you want your own model deployed on our stack.