# Seedream 5.0 PRO API

> Seedream 5.0 PRO images from a prompt and reference pictures (up to 10), 1K or 2K quality. It also splits a picture into layers with transparency and edits a PNG with a transparent background keeping the transparency.

Developer: ByteDance
Model key in the API: `seedream`

## Connect in three steps

1. [Get a key](https://api.cyhub.ai/docs/connection.md?lang=en): Create a key in the dashboard after you confirm your email. One key opens every model.
2. [Check the price](https://api.cyhub.ai/docs/generations.md?lang=en): POST /v1/price shows the cost of a run in advance, without charging you.
3. [Run a task and collect the result](https://api.cyhub.ai/docs/tasks.md?lang=en): POST /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.

```bash
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": "5.0_pro",
    "prompt": "Горный хребет на рассвете, туман в долинах",
    "aspect_ratio": "21:9",
    "quality": "2K"
  }
}'

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": "5.0_pro",
        "prompt": "Горный хребет на рассвете, туман в долинах",
        "aspect_ratio": "21:9",
        "quality": "2K",
    },
}

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"])
```

```javascript
const API = "https://api.cyhub.ai/v1";
const HEADERS = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };

const body = {
  "model": "seedream",
  "settings": {
    "mode": "5.0_pro",
    "prompt": "Горный хребет на рассвете, туман в долинах",
    "aspect_ratio": "21:9",
    "quality": "2K"
  }
};

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](https://cyhub.ai/cabinet/keys)

## Price before the run

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

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

```bash
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": "5.0_pro",
    "prompt": "Горный хребет на рассвете, туман в долинах",
    "aspect_ratio": "21:9",
    "quality": "2K"
  }
}'
```

- 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

## <a id="5.0_pro"></a>Seedream 5.0 PRO

> The newest version: 1K or 2K quality, up to 10 references. Every reference after the first one adds a little to the price.

Value of the mode field: `5.0_pro`

Price in this mode from 9 ₽.

### Parameters

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

#### `prompt` (Required)

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

- Type: String
- Minimum characters: 1
- Maximum characters: 5000

#### `image_urls` (Optional)

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

- Type: List (String, uri)
- Maximum items: 10

#### `aspect_ratio` (Optional)

Aspect ratio.

- Type: String
- Allowed values: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `9:16`, `16:9`, `21:9`
- Default: `"9:16"`

#### `quality` (Optional)

Image quality: 1K or 2K. The price depends on it.

- Type: String
- Allowed values: `1K`, `2K`
- Default: `"1K"`

#### `output_format` (Optional)

Result file format.

- Type: String
- Allowed values: `png`, `jpeg`
- Default: `"png"`

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` = `"5.0_pro"`

### 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.

| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
| `image_urls` | Images | jpeg, jpg, png, webp, bmp, tiff, tif, gif | 10 | 30 MB |

[How to send files](https://api.cyhub.ai/docs/files.md?lang=en)

### 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.

Wide image in 2K

```json
{
  "model": "seedream",
  "settings": {
    "mode": "5.0_pro",
    "prompt": "Горный хребет на рассвете, туман в долинах",
    "aspect_ratio": "21:9",
    "quality": "2K"
  }
}
```

A character from a reference

```json
{
  "model": "seedream",
  "settings": {
    "mode": "5.0_pro",
    "prompt": "Этот персонаж на обложке журнала о путешествиях",
    "image_urls": [
      "https://example.com/character.png"
    ],
    "aspect_ratio": "3:4"
  }
}
```

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

[Complete generation example](https://api.cyhub.ai/docs/generations.md?lang=en)

### Output

- One image per run in the chosen format.

| Kind | Formats | How many | Note |
|---|---|---|---|
| `image` | png, jpg | 1 | The format is set by output_format. |

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.png",
        "size": 1843200,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
```

[How to read the result and download files](https://api.cyhub.ai/docs/tasks.md?lang=en#result)

## <a id="layers"></a>Split into layers

> Version 5.0 PRO takes one picture apart: the base without the extracted elements and every noticeable element as its own PNG with transparency. The model decides how many parts come out. The price shown is the ceiling, the charge covers only the files that come back.

Value of the mode field: `layers`

Price in this mode from 55 ₽.

### Parameters

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

#### `image_urls` (Required)

One URL of the picture to split.

- Type: List (String, uri)
- Maximum items: 1

#### `prompt` (Optional)

What to take out, in words, for example "the cat and the caption on top". A part can also be pointed at with a frame <bbox>x1 y1 x2 y2</bbox>: the top left and bottom right corners in fractions of the picture from 0 to 1000. Without a description the model finds every noticeable element itself.

- Type: String
- Maximum characters: 5000

#### `quality` (Optional)

Size of the base and the layers. 1K and 1.5K cost the same, 1.5K gives larger files. 2K costs more.

- Type: String
- Allowed values: `1K`, `1.5K`, `2K`
- Default: `"1.5K"`

#### `output_format` (Optional)

Format of the base. Layers are always PNG.

- Type: String
- Allowed values: `png`, `jpeg`
- Default: `"png"`

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` = `"5.0_pro"`, `layer_decomposition` = `true`

### Input

- One JPEG or PNG picture up to 30 MB, with an area from 512×512 to 6000×6000 pixels and one side at most 16 times longer than the other.

| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
| `image_urls` | Images | jpeg, jpg, png | 1 | 30 MB |

[How to send files](https://api.cyhub.ai/docs/files.md?lang=en)

### 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.

Split the whole picture

```json
{
  "model": "seedream",
  "settings": {
    "mode": "layers",
    "image_urls": [
      "https://example.com/poster.png"
    ]
  }
}
```

Take out the named elements

```json
{
  "model": "seedream",
  "settings": {
    "mode": "layers",
    "image_urls": [
      "https://example.com/poster.png"
    ],
    "prompt": "Кот и надпись сверху",
    "quality": "2K"
  }
}
```

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

[Complete generation example](https://api.cyhub.ai/docs/generations.md?lang=en)

### Output

- The base as an image and a ZIP archive: the base, every layer as its own PNG with transparency, the frame assembled from the layers and a list of layers named by the model.
- There are from one to sixteen layers.

| Kind | Formats | How many | Note |
|---|---|---|---|
| `image` | png, jpg | 1 | The base; the format is set by output_format. |
| `document` | zip | 1 | An archive: the base, every layer as its own PNG, the frame assembled from the layers and the list of layers. |

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.png",
        "size": 1843200,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      },
      {
        "index": 1,
        "kind": "document",
        "filename": "result.zip",
        "size": 2097152,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/1"
      }
    ]
  }
}
```

[How to read the result and download files](https://api.cyhub.ai/docs/tasks.md?lang=en#result)

## <a id="keep_transparency"></a>Edit keeping transparency

> Version 5.0 PRO edits a PNG picture with a transparent background and keeps the transparency. An ordinary photo cannot be made transparent this way: splitting into layers is for that.

Value of the mode field: `keep_transparency`

Price in this mode from 9 ₽.

### Parameters

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

#### `prompt` (Required)

What to change in the picture.

- Type: String
- Minimum characters: 1
- Maximum characters: 5000

#### `image_urls` (Required)

One URL of a PNG that already has transparent areas.

- Type: List (String, uri)
- Maximum items: 1

#### `aspect_ratio` (Optional)

Aspect ratio.

- Type: String
- Allowed values: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `9:16`, `16:9`, `21:9`
- Default: `"9:16"`

#### `quality` (Optional)

Image quality: 1K or 2K. The price depends on it.

- Type: String
- Allowed values: `1K`, `2K`
- Default: `"1K"`

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` = `"5.0_pro"`, `keep_transparency` = `true`, `output_format` = `"png"`

### Input

- One PNG picture up to 30 MB that already has transparent areas.
- 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.

| Field | Accepts | Formats | Files | File size up to |
|---|---|---|---|---|
| `image_urls` | Images | png | 1 | 30 MB |

[How to send files](https://api.cyhub.ai/docs/files.md?lang=en)

### 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.

Recolor a logo without a background

```json
{
  "model": "seedream",
  "settings": {
    "mode": "keep_transparency",
    "prompt": "Сделай логотип синим, форму не меняй",
    "image_urls": [
      "https://example.com/logo.png"
    ],
    "aspect_ratio": "1:1"
  }
}
```

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

[Complete generation example](https://api.cyhub.ai/docs/generations.md?lang=en)

### Output

- One PNG image with a transparent background.

| Kind | Formats | How many | Note |
|---|---|---|---|
| `image` | png | 1 |  |

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.png",
        "size": 1843200,
        "caption": "",
        "download_path": "/v1/tasks/7c9e6679-7425-40de-944b-e07fc1f90ae7/artifacts/0"
      }
    ]
  }
}
```

[How to read the result and download files](https://api.cyhub.ai/docs/tasks.md?lang=en#result)

## See also

- [Seedream 5.0 PRO: features and prices](https://api.cyhub.ai/models/seedream-5-pro)
- Other versions: [Seedream 5.0 API](https://api.cyhub.ai/en/models/seedream-5/api.md), [Seedream 4.5 API](https://api.cyhub.ai/en/models/seedream-4-5/api.md)
- Similar models: [GPT Image 2.5 API](https://api.cyhub.ai/en/models/gpt-image-2-5/api.md), [Nano Banana Pro API](https://api.cyhub.ai/en/models/nano-banana-pro/api.md), [Nano Banana 2 Lite API](https://api.cyhub.ai/en/models/nano-banana-2-lite/api.md), [Midjourney 8.2 API](https://api.cyhub.ai/en/models/midjourney/api.md), [Grok Imagine 2.0 API](https://api.cyhub.ai/en/models/grok-imagine-2/api.md), [Recraft API](https://api.cyhub.ai/en/models/recraft/api.md)
- [API documentation](https://api.cyhub.ai/docs.md?lang=en)
- [API errors and how to handle them](https://api.cyhub.ai/docs/errors.md?lang=en)
