Seedream Pro
ByteDance's top image model: accurate text on pictures, up to 2K, up to 10 of your photos.
Good for: posters, products, characters, photo edits
How to get a better result
"A ginger cat on a windowsill, rain outside, watercolor".
"Soft sunset", "neon light", "cozy, warm tones".
Refine the description and press "Another version" — every result is new.
Pass this model in the request seedream-pro
1. Create a task POST /api/v1/jobs/createTask
curl -X POST https://mixmedia.tech/api/v1/jobs/createTask \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-123" \
-d '{
"model": "seedream-pro",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "A cyberpunk city at night, neon lights reflecting on wet streets",
"image_urls": [],
"aspect_ratio": "auto",
"resolution": "1.5K",
"output_format": "jpeg"
}
}'import time, requests
API = "https://mixmedia.tech/api/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
task = requests.post(f"{API}/jobs/createTask", headers=HEADERS, json={
"model": "seedream-pro",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "A cyberpunk city at night, neon lights reflecting on wet streets",
"image_urls": [],
"aspect_ratio": "auto",
"resolution": "1.5K",
"output_format": "jpeg"
}
}).json()
task_id = task["data"]["taskId"]
while True:
info = requests.get(f"{API}/jobs/recordInfo", headers=HEADERS, params={"taskId": task_id}).json()["data"]
if info["state"] in ("success", "fail"):
break
time.sleep(4)
print(info["state"], info.get("resultJson") or info.get("failMsg"))const API = "https://mixmedia.tech/api/v1";
const headers = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };
const { data } = await fetch(`${API}/jobs/createTask`, {
method: "POST", headers,
body: JSON.stringify({
"model": "seedream-pro",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "A cyberpunk city at night, neon lights reflecting on wet streets",
"image_urls": [],
"aspect_ratio": "auto",
"resolution": "1.5K",
"output_format": "jpeg"
}
}),
}).then((r) => r.json());
let info;
do {
await new Promise((r) => setTimeout(r, 4000));
info = (await fetch(`${API}/jobs/recordInfo?taskId=${data.taskId}`, { headers }).then((r) => r.json())).data;
} while (!["success", "fail"].includes(info.state));
console.log(info.state, info.resultJson ?? info.failMsg);Response: data.taskId. callBackUrl and Idempotency-Key are optional.
2. Status and result GET /api/v1/jobs/recordInfo
curl "https://mixmedia.tech/api/v1/jobs/recordInfo?taskId=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
data.state: waiting, queuing, generating, success, fail. On success data.resultJson is a JSON string with resultUrls.
3. Upload a file POST /api/v1/files/upload
curl -X POST https://mixmedia.tech/api/v1/files/upload \
-H "Authorization: Bearer YOUR_API_KEY" -F "file=@photo.jpg"
The response has data.url. Pass that URL in the file field. Any public https URL works too.
About the model
Seedream Pro is ByteDance's flagship image model. 1K, 1.5K and 2K pictures from a description or your photos (up to 10). Strong text on images and character consistency.
1.5K costs the same as 1K and usually looks better. 2K costs more.


