CyHUB
РусскийGet an API key

Seedream 4.5 API

Seedream 4.5 images from a prompt and reference pictures (up to 14), 2K or 4K quality. The previous version, the result is always JPEG.

Developer: ByteDanceModel key in the API: seedream

For AI assistants:Download .mdAll documentation .mdOpen as text

Connect in three steps

  1. Get a keyCreate a key in the dashboard after you confirm your email. One key opens every model.
  2. Check the pricePOST /v1/price shows the cost of a run in advance, without charging you.
  3. Run a task and collect the resultPOST /v1/tasks starts a task, GET /v1/tasks/{id} shows its status and files.

Ready-to-use code

Replace YOUR_API_KEY with your key. The code starts a task and waits for the result. In cURL, repeat the second request with the id from the first response instead of TASK_ID until status becomes succeeded.

cURL
curl -X POST "https://api.cyhub.ai/v1/tasks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream",
  "settings": {
    "mode": "4.5",
    "prompt": "Маяк на скале в шторм, кинематографичный свет",
    "aspect_ratio": "16:9",
    "quality": "4K"
  }
}'

curl "https://api.cyhub.ai/v1/tasks/TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
import time

import requests

API = "https://api.cyhub.ai/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

body = {
    "model": "seedream",
    "settings": {
        "mode": "4.5",
        "prompt": "Маяк на скале в шторм, кинематографичный свет",
        "aspect_ratio": "16:9",
        "quality": "4K",
    },
}

response = requests.post(f"{API}/tasks", json=body, headers=HEADERS, timeout=60)
response.raise_for_status()
task = response.json()
while task["status"] in ("queued", "running"):
    time.sleep(5)
    task = requests.get(f"{API}/tasks/{task['id']}", headers=HEADERS, timeout=30).json()
print(task["status"], task["result"])
Node.js
const API = "https://api.cyhub.ai/v1";
const HEADERS = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };

const body = {
  "model": "seedream",
  "settings": {
    "mode": "4.5",
    "prompt": "Маяк на скале в шторм, кинематографичный свет",
    "aspect_ratio": "16:9",
    "quality": "4K"
  }
};

async function main() {
  let response = await fetch(`${API}/tasks`, { method: "POST", headers: HEADERS, body: JSON.stringify(body) });
  if (!response.ok) throw new Error(await response.text());
  let task = await response.json();
  while (task.status === "queued" || task.status === "running") {
    await new Promise((resolve) => setTimeout(resolve, 5000));
    response = await fetch(`${API}/tasks/${task.id}`, { headers: HEADERS });
    task = await response.json();
  }
  console.log(task.status, task.result);
}

main();
Get a key

Price before the run

Prices as of 15.10.2026: from 8 ₽. POST /v1/price shows the exact price of your settings.

ModePrice
Seedream 4.5from 8 ₽

Send the same settings to POST /v1/price: the response shows the price of the run without charging you.

cURL
curl -X POST "https://api.cyhub.ai/v1/price" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream",
  "settings": {
    "mode": "4.5",
    "prompt": "Маяк на скале в шторм, кинематографичный свет",
    "aspect_ratio": "16:9",
    "quality": "4K"
  }
}'
  • amount_minor: the price of the run in minor units (kopecks for rubles)
  • currency: the wallet currency
  • available_minor: how much your balance has for new tasks right now

Seedream 4.5

The previous version: 2K or 4K quality, up to 14 references. The result is always JPEG.

Value of the mode field: 4.5

Price in this mode from 8 ₽.

Parameters

Model parameters go inside settings. Omitted optional fields take their default values.

promptRequired

What to draw, or what to do with the reference images.

Type: StringMinimum characters: 1Maximum characters: 5000
image_urlsOptional

Reference image URLs, up to 14. Without them the image is drawn from the prompt alone.

Type: List (String, uri)Maximum items: 14
aspect_ratioOptional

Aspect ratio.

Type: StringAllowed values: 1:12:33:23:44:39:1616:921:9Default: "9:16"
qualityOptional

Image quality: 2K or 4K.

Type: StringAllowed values: 2K4KDefault: "2K"

Parameters not listed here are not accepted: the response is 422 unknown_setting.

The API sets these settings itself, do not send them: model_version = "4.5" output_format = "jpeg"

Input

  • References are URLs of JPEG, PNG, WebP, BMP, TIFF or GIF images, up to 30 MB each.
  • Each picture has both sides longer than 14 pixels, an area of at most 6000×6000 pixels, and one side at most 16 times longer than the other.
FieldAcceptsFormatsFilesFile size up to
image_urlsImagesjpeg, jpg, png, webp, bmp, tiff, tif, gif1430 MB
How to send files

Request example

Send this JSON to POST /v1/tasks with your API key. To check the price first, send the same JSON to POST /v1/price.

An image in 4K

JSON
{
  "model": "seedream",
  "settings": {
    "mode": "4.5",
    "prompt": "Маяк на скале в шторм, кинематографичный свет",
    "aspect_ratio": "16:9",
    "quality": "4K"
  }
}

The price is calculated when the task is accepted, currency RUB.

Complete generation example

Output

  • One JPEG image per run.
KindFormatsHow manyNote
imagejpg1

A finished task as GET /v1/tasks/{id} returns it (some fields left out). The caption may sit on the task or on a single file and may be empty; the model picks the file name.

JSON
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "succeeded",
  "finished_at": "2026-10-01T12:03:41+00:00",
  "result": {
    "caption": "Caption of the result: the model and its settings",
    "texts": [],
    "files_expire_at": "2026-10-08T12:03:41+00:00",
    "files_expired": false,
    "artifacts": [
      {
        "index": 0,
        "kind": "image",
        "filename": "image.jpg",
        "size": 1843200,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
How to read the result and download files

See also

Try Seedream 4.5 through the API

One key opens every CyHUB model. Payment in rubles, and you see the price before the run.

Get an API key