Общая документация Public API · API-ключ можно создать в настройках аккаунта
Seedream 5.0 Pro создаёт изображения по текстовому заданию и редактирует уже готовые картинки по одному или нескольким референсам. Через API удобно собирать продуктовые карточки, рекламные креативы, обложки, варианты дизайна, правки конкретных областей и разложение изображения на отдельные слои.
Основные сценарии:
prompt;image_urls;layer_decomposition, который принимает одно изображение и возвращает результат со слоями.Каждый вызов создаёт асинхронную операцию. API сразу возвращает id и стартовый статус, а готовый результат нужно получить отдельной проверкой статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id и стартовый статус.Режим выбирается параметром generation_mode:
normal - генерация с нуля или редактирование по референсам;layer_decomposition - разложение одного изображения на базовое изображение и слои.В режиме normal нужен prompt. Изображения в image_urls необязательны: если их нет, модель создаёт картинку только по тексту.
В режиме layer_decomposition нужен один layer_image_url. layer_prompt можно передать, если нужно уточнить, какие элементы выделить в слои. Если layer_prompt не передан, модель сама определяет основные элементы.
{
"tool": "seedream-5-pro",
"input": {
"generation_mode": "normal",
"...": "..."
}
}
tool - slug нейросети, всегда "seedream-5-pro".input - параметры конкретного запуска.input, без дополнительного вложенного объекта input.input.generation_mode и сценария.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
generation_mode | enum | Да | Режим запуска. Варианты: normal (обычная генерация или редактирование), layer_decomposition (разложение одного изображения на слои). |
prompt | string | Да | Текстовое задание для режима normal: что создать или как изменить изображение. Если нужно указать область правки, добавьте координаты прямо в текст, например <bbox>120 180 640 760</bbox> или <point>500 420</point>. От 3 до 5000 символов. |
layer_prompt | string | Нет | Необязательное уточнение для режима layer_decomposition: какие объекты, текст, персонажей или фон нужно выделить в слои. Можно также указать координаты в тексте. Максимум 5000 символов. |
image_urls | string[] (url) | Нет | Массив внешних URL изображений для режима normal. Если поле не передано или массив пустой, выполняется генерация с нуля. До 10 изображений, каждый файл до 30 МБ. Разрешены только http/https ссылки. Допустимые расширения: .jpg, .jpeg, .png, .webp, .bmp, .tif, .tiff, .gif. |
layer_image_url | string (url) | Да | URL исходного изображения для режима layer_decomposition. В этом режиме нужно передать ровно одно изображение. До 30 МБ. Разрешены только http/https ссылки. Допустимые расширения: .jpg, .jpeg, .png. |
resolution | enum | Да | Разрешение результата. Варианты: 1K, 1.5K, 2K. 2K стоит дороже и подходит, когда важны детали. |
size | enum | Да | Соотношение сторон результата в режиме normal. Варианты: auto, 1:1, 4:3, , , , , , . Для используйте или не передавайте поле, если вам достаточно значения по умолчанию. |
Подходит для создания новой картинки только по описанию.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedream-5-pro",
"input": {
"generation_mode": "normal",
"prompt": "Вертикальная обложка для статьи о путешествии по Байкалу: лед, мягкий рассвет, человек в красной куртке на переднем плане, реалистичная фотография",
"resolution": "1.5K",
"size": "9:16",
"output_format": "jpeg"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'seedream-5-pro',
input: {
generation_mode: 'normal',
prompt:
'Вертикальная обложка для статьи о путешествии по Байкалу: лед, мягкий рассвет, человек в красной куртке на переднем плане, реалистичная фотография',
resolution: '1.5K',
size: '9:16',
output_format: 'jpeg',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'seedream-5-pro',
'input': {
'generation_mode': 'normal',
'prompt': 'Вертикальная обложка для статьи о путешествии по Байкалу: лед, мягкий рассвет, человек в красной куртке на переднем плане, реалистичная фотография',
'resolution': '1.5K',
'size': '9:16',
'output_format': 'jpeg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Используйте image_urls, когда нужно сохранить объект, персонажа, упаковку или стиль из исходников.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedream-5-pro",
"input": {
"generation_mode": "normal",
"prompt": "Создай рекламный баннер 16:9: сохрани форму бутылки и этикетку с первого изображения, фон сделай как на втором изображении, добавь капли воды и мягкий студийный свет",
"image_urls": [
"https://cdn.example.com/source-product-1.png",
"https://cdn.example.com/source-background-1.jpg"
],
"resolution": "2K",
"size": "16:9",
"output_format": "jpeg"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'seedream-5-pro',
input: {
generation_mode: 'normal',
prompt:
'Создай рекламный баннер 16:9: сохрани форму бутылки и этикетку с первого изображения, фон сделай как на втором изображении, добавь капли воды и мягкий студийный свет',
image_urls: [
'https://cdn.example.com/source-product-1.png',
'https://cdn.example.com/source-background-1.jpg',
],
resolution: '2K',
size: '16:9',
output_format: 'jpeg',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'seedream-5-pro',
'input': {
'generation_mode': 'normal',
'prompt': 'Создай рекламный баннер 16:9: сохрани форму бутылки и этикетку с первого изображения, фон сделай как на втором изображении, добавь капли воды и мягкий студийный свет',
'image_urls': [
'https://cdn.example.com/source-product-1.png',
'https://cdn.example.com/source-background-1.jpg',
],
'resolution': '2K',
'size': '16:9',
'output_format': 'jpeg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Прозрачный фон доступен только для одного входного изображения, output_format = "png" и background = "transparent".
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedream-5-pro",
"input": {
"generation_mode": "normal",
"prompt": "Оставь только кроссовок, аккуратно убери фон, сохрани материал подошвы, шнурки и логотип без искажений",
"image_urls": [
"https://cdn.example.com/source-sneaker-1.png"
],
"resolution": "1.5K",
"size": "auto",
"output_format": "png",
"background": "transparent"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'seedream-5-pro',
input: {
generation_mode: 'normal',
prompt:
'Оставь только кроссовок, аккуратно убери фон, сохрани материал подошвы, шнурки и логотип без искажений',
image_urls: ['https://cdn.example.com/source-sneaker-1.png'],
resolution: '1.5K',
size: 'auto',
output_format: 'png',
background: 'transparent',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'seedream-5-pro',
'input': {
'generation_mode': 'normal',
'prompt': 'Оставь только кроссовок, аккуратно убери фон, сохрани материал подошвы, шнурки и логотип без искажений',
'image_urls': ['https://cdn.example.com/source-sneaker-1.png'],
'resolution': '1.5K',
'size': 'auto',
'output_format': 'png',
'background': 'transparent',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
В Public API нет отдельного поля для визуального редактора. Если нужно изменить конкретную область, добавьте координаты прямо в prompt. Координаты удобно передавать в нормализованном пространстве 0..1000.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedream-5-pro",
"input": {
"generation_mode": "normal",
"prompt": "На исходном изображении замени объект в области <bbox>120 180 640 760</bbox> на красную настольную лампу. Остальную сцену, стол и освещение не меняй.",
"image_urls": [
"https://cdn.example.com/source-room-1.jpg"
],
"resolution": "1.5K",
"size": "auto",
"output_format": "jpeg"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'seedream-5-pro',
input: {
generation_mode: 'normal',
prompt:
'На исходном изображении замени объект в области <bbox>120 180 640 760</bbox> на красную настольную лампу. Остальную сцену, стол и освещение не меняй.',
image_urls: ['https://cdn.example.com/source-room-1.jpg'],
resolution: '1.5K',
size: 'auto',
output_format: 'jpeg',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'seedream-5-pro',
'input': {
'generation_mode': 'normal',
'prompt': 'На исходном изображении замени объект в области <bbox>120 180 640 760</bbox> на красную настольную лампу. Остальную сцену, стол и освещение не меняй.',
'image_urls': ['https://cdn.example.com/source-room-1.jpg'],
'resolution': '1.5K',
'size': 'auto',
'output_format': 'jpeg',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Используйте layer_decomposition, когда нужно получить изображение и отдельные слои объектов. Для этого режима нужен один layer_image_url в формате JPG, JPEG или PNG.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "seedream-5-pro",
"input": {
"generation_mode": "layer_decomposition",
"layer_image_url": "https://cdn.example.com/source-poster-1.png",
"layer_prompt": "Раздели постер на фон, персонажа, крупный заголовок и декоративные элементы. Текст в области <bbox>90 80 910 260</bbox> вынеси отдельным слоем.",
"resolution": "1.5K",
"size": "auto",
"output_format": "png"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'seedream-5-pro',
input: {
generation_mode: 'layer_decomposition',
layer_image_url: 'https://cdn.example.com/source-poster-1.png',
layer_prompt:
'Раздели постер на фон, персонажа, крупный заголовок и декоративные элементы. Текст в области <bbox>90 80 910 260</bbox> вынеси отдельным слоем.',
resolution: '1.5K',
size: 'auto',
output_format: 'png',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'seedream-5-pro',
'input': {
'generation_mode': 'layer_decomposition',
'layer_image_url': 'https://cdn.example.com/source-poster-1.png',
'layer_prompt': 'Раздели постер на фон, персонажа, крупный заголовок и декоративные элементы. Текст в области <bbox>90 80 910 260</bbox> вынеси отдельным слоем.',
'resolution': '1.5K',
'size': 'auto',
'output_format': 'png',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "seedream-5-pro",
"cost": 5,
"balance_after": 495,
"created_at": "2026-03-13T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "seedream-5-pro",
"cost": 5,
"created_at": "2026-03-13T12:00:00Z",
"completed_at": "2026-03-13T12:00:24Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/seedream-5-pro/image-1.png"
]
},
"error_message": null
}
{
"id": "op_uuid-456",
"status": "completed",
"tool": "seedream-5-pro",
"cost": 5,
"created_at": "2026-03-13T12:10:00Z",
"completed_at": "2026-03-13T12:10:31Z",
"result": {
"type": "image",
"urls": [
"https://storage.bratuha.ru/results/seedream-5-pro/base.png",
"https://storage.bratuha.ru/results/seedream-5-pro/layer-1.png",
"https://storage.bratuha.ru/results/seedream-5-pro/layer-2.png"
]
},
"error_message": null
}
{
"id": "op_uuid-789",
"status": "failed",
"tool": "seedream-5-pro",
"cost": 5,
"created_at": "2026-03-13T12:20:00Z",
"completed_at": "2026-03-13T12:20:18Z",
"result": null,
"error_message": "Не удалось выполнить операцию"
}
Проверяйте операцию по id, который вернулся в ответе на создание. Этот id нужно сохранить у себя, потому что готовый результат приходит не в первом ответе, а после завершения операции.
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
const response = await fetch(
'https://bratuha.ru/api/v1/operations/op_uuid-123',
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
},
)
const operation = await response.json()
console.log(operation)
Seedream 5.0 Pro возвращает изображения. В result приходит объект:
type: "image" - тип результата;urls - массив ссылок на готовые изображения.В обычном режиме обычно возвращается одна ссылка. В режиме layer_decomposition может вернуться несколько ссылок: итоговое или базовое изображение и отдельные слои. Количество ссылок зависит от исходного изображения и того, какие элементы удалось выделить.
Цена зависит от resolution. Количество референсов, соотношение сторон, формат jpeg/png, прозрачный фон и режим разложения на слои не добавляют отдельной доплаты.
resolution | Цена за операцию |
|---|---|
1K | 5 ₽ |
1.5K | 5 ₽ |
2K | 10 ₽ |
Примеры:
resolution = "1K" - операция стоит 5 ₽;resolution = "1.5K" - операция стоит 5 ₽;resolution = "2K" - операция стоит 10 ₽.Итоговая цена списывается при создании операции и возвращается в поле cost.
POST /api/v1/operations не идемпотентен: повторный запрос создаёт новую операцию.queued, затем проверяете статус по id.http/https URL. localhost, loopback и private IP не принимаются.image_urls используйте .jpg, .jpeg, .png, .webp, .bmp, .tif, .tiff или .gif. До 10 изображений, каждое до 30 МБ.layer_image_url используйте .jpg, .jpeg или .png. Нужен ровно один файл до 30 МБ.HEIC/HEIF, которые могут поддерживаться при загрузке через форму сайта, не относятся к Public API по внешнему URL.layer_decomposition передавайте size = "auto" или не передавайте size, если достаточно значения по умолчанию.background = "transparent" работает только вместе с output_format = "png" и ровно одним изображением в image_urls.input.input и не отправляйте параметры с внутренним префиксом input..3:416:99:163:22:321:9layer_decompositionautooutput_format | enum | Да | Формат результата. Варианты: jpeg, png. Для прозрачного фона нужен png. |
background | enum | Нет | Настройка фона для PNG в режиме normal. Варианты: opaque (непрозрачный), transparent (прозрачный). transparent доступен только при output_format = "png" и ровно одном изображении в image_urls. |
use_image_selection | boolean | Нет | Для обычных HTTP-запросов чаще всего не нужен. Визуального редактора координат в API нет, поэтому координаты передавайте текстом в prompt или layer_prompt. |