
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.
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
seedream-4-0/v1/images/generationsbytedance/seedream-4.0seedream-4.0seedream-4seedream-4-0-250828Live pay-as-you-go rates from the EmpirioLabs catalog. You are billed only for what you use, with no monthly minimum.
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 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 https://api.empiriolabs.ai/v1/jobs/JOB_ID \
-H "Authorization: Bearer $EMPIRIOLABS_API_KEY"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)Request parameters supported by the Seedream 4.0 API on EmpirioLabs. Defaults apply when a field is omitted.
| Parameter | Type | Default | Range / values | Description |
|---|---|---|---|---|
| prompt | string | - | - | Text prompt. With image attached, becomes an editing instruction. For batch mode, describe each image sequentially. |
| aspect_ratio | enum | auto | auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9 | Auto lets the model choose dimensions within the selected resolution tier. Explicit ratios use the preset size for that tier. |
| quality | enum | 2K | 1K, 2K, 4K | Output resolution tier. Every tier bills at the same flat per-image rate. |
| prompt_optimization_mode | enum | standard | standard, fast | Standard prioritizes prompt adherence and image quality. Fast reduces generation latency with slightly lower image quality. |
| use_custom_size | boolean | false | - | Use custom_width and custom_height instead of preset aspect_ratio and quality. |
| custom_width | number | - | 720 to 6240 | Pixels. Total area must be in [0.92MP, 16.78MP]; aspect must be in [1:16, 16:1]. Only when use_custom_size=true. |
| custom_height | number | - | 720 to 6240 | Pixels. Total area must be in [0.92MP, 16.78MP]; aspect must be in [1:16, 16:1]. Only when use_custom_size=true. |
| image | array | - | - | Up to 14 reference image URLs for editing. Triggers image-edit mode. |
| images | array | - | - | Alias for image. Use this for multiple uploaded image references. |
| batch_enabled | boolean | false | - | Generate a cohesive set of related images from a single prompt. |
| max_images | number | 4 | 1 to 15 | Batch mode only. Maximum images in the set; the model decides actual count. You are billed only for images returned. |
| watermark | boolean | false | - | When enabled, the generated image includes an AI-generated provenance watermark. EmpirioLabs does not add a separate watermark. |
| response_format | enum | url | url, b64_json | Return signed image URLs by default, or include base64 image data when b64_json is requested. |
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.
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.
Seedream 4.0 is served through POST /v1/images/generations on api.empiriolabs.ai with standard bearer-token authentication.
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.
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.
Check out our pricing or reach out if you want your own model deployed on our stack.