Qwen Image 2.1
Создавайте или редактируйте изображение в 1K или 2K по тексту и с использованием до 10 референсных изображений. При необходимости результат можно получить в PNG или WebP с прозрачным фоном.
- Асинхронная обработка: запрос создания быстро возвращает ID задачи. Изображение будет доступно после её успешного завершения.
- Одна задача создаёт одно изображение. Для нескольких изображений создайте несколько задач.
- Генерация по тексту либо редактирование и объединение до 10 референсных изображений по общедоступным HTTPS-ссылкам.
- Для прозрачного фона задайте
background: "transparent"иoutput_formatсо значениемpngилиwebp. JPEG не поддерживает прозрачность. - Переписывание промпта (
enhance_prompt) по умолчанию включено для генерации по тексту и выключено для редактирования, если вы не указали иначе. - Цена за изображение зависит от
resolution— 1K или 2K. Задача, завершившаяся ошибкой, не оплачивается.
Открывает модель в API Explorer. Введите свой API-ключ BeatAPI, чтобы создать задачу. Это настоящий запрос: его стоимость спишется с вашего баланса.
Адрес API и авторизация
POST https://api.beatapi.io/v1/images/tasks
Authorization
string
Обязательно
Передавайте API-ключ BeatAPI как Bearer <BEATAPI_API_KEY>. Создать ключ можно в панели управления. Храните ключи на сервере, а не в коде браузерного или мобильного приложения.
Передавайте тело запроса в JSON с заголовком Content-Type: application/json. Idempotency-Key необязателен. Для каждого логического запроса используйте уникальное значение длиной не более 255 символов и повторно используйте его только для отправки точно такого же тела. В течение 24 часов повтор с тем же ключом и телом возвращает первый ответ с заголовком Idempotent-Replayed: true. Тот же ключ с другим телом возвращает 409 idempotency_conflict. Ответы, отличные от 2xx, не сохраняются, поэтому повтор после 400 или 402 выполняется заново.
Как выполняется запрос
Создайте задачу
Отправьте перечисленные ниже параметры методом POST на указанный адрес. Ответ 201 означает, что задача принята, а её стоимость зарезервирована на балансе. Обработка идёт в фоновом режиме. Сохраните data.id.
Дождитесь завершения
Вызывайте GET /v1/tasks/{task_id}, выдерживая между вызовами data.poll_after_seconds (5 с для изображений, 8 с для видео), пока status не станет succeeded или failed. Можно также настроить вебхук для событий task.succeeded и task.failed. Сохраняйте опрос как резервный способ проверки: задача, остановленная по тайм-ауту обработки, не отправляет событие.
Сохраните результат
При succeeded скачайте файлы по всем ссылкам data.output.media[].url и сохраните нужные результаты у себя. BeatAPI не гарантирует срок доступности этих ссылок. При failed прочитайте data.error_code и data.error_message: зарезервированная сумма возвращена на баланс, а data.retryable показывает, может ли повтор того же запроса завершиться успешно.
Режимы ввода
Параметры запроса
model
string
Обязательно
Модель, которую нужно вызвать.
Значение: qwen-image-2.1
Если значение неверно
- Поле отсутствует:
"model" is required - Неизвестный ID модели:
"model" qwen-image-9 is not catalogued - На этот адрес API отправлена видеомодель:
"model" seedance-2.5 is served by POST /v1/videos/tasks, not this endpoint
prompt
string
Обязательно
Что нарисовать либо изменить в референсных изображениях. Лучше писать обычным языком: объект, стиль, освещение, композиция и текст, который должен появиться на изображении.
Длина: 1–5000 символов
- Длина измеряется в символах. Иероглиф CJK считается одним символом.
- При передаче
imagesукажите назначение каждого изображения и то, что должно остаться без изменений. - При включённом
enhance_promptмодель переписывает промпт перед генерацией.
Если значение неверно
- Поле отсутствует:
"prompt" is required - Пустое значение или превышена допустимая длина:
"prompt" has an unsupported length - Значение не является строкой:
"prompt" must be a string
images
string[]
Необязательно
Референсные изображения для редактирования или объединения. Это поле переключает запрос с генерации по тексту на редактирование изображений.
Число элементов: 1–10
Каждый элемент — общедоступная ссылка https://. Если файл находится на вашем устройстве, сначала загрузите его через POST /v1/files, затем передайте полученный data.url.
- Каждая ссылка должна возвращать сам файл PNG, JPEG или WebP по общедоступному HTTPS, не более 50 MB. До создания задачи шлюз скачивает первые байты по каждой ссылке.
- Ссылки на веб-страницы, страницы входа, просроченные подписанные ссылки или серверы с защитой от прямого скачивания отклоняются, поскольку не возвращают изображение.
- Индексы в сообщениях об ошибках начинаются с 0:
images[0]— первая ссылка.
Если значение неверно
- Превышено максимальное число элементов:
"images" accepts at most 10 items - Пустой массив:
"images" requires at least 1 item - Ссылка не начинается с https://:
"images[0]" must be a public HTTPS URL - Закрытый или небезопасный адрес:
"images[0]" must be a publicly reachable HTTPS image URL - Сервер возвращает ошибку 4xx:
"images[0]" could not be downloaded: the URL returned HTTP 404 - Ссылка возвращает не PNG, JPEG или WebP:
"images[0]" is not a PNG, JPEG or WebP image: the URL returned text/html - Размер больше 50 MB:
"images[2]" is 63.4 MB; images must be 50 MB or smaller
Пример
aspect_ratio
string
НеобязательноПо умолчанию: auto
Соотношение ширины и высоты изображения.
Допустимые значения: auto, 1:1, 4:3, 3:4, 3:2, 2:3, 16:9, 9:16, 21:9, 9:21
По умолчанию: auto
- По умолчанию используется
auto. Сimagesрезультат сохраняет пропорции первого изображения; безimagesзначениеautoсоздаёт1:1. - Чтобы зафиксировать пропорции при редактировании, задайте нужное соотношение сторон вместо
auto.
Если значение неверно
- Значение отсутствует в списке допустимых:
"aspect_ratio" must be one of: [auto 1:1 4:3 3:4 3:2 2:3 16:9 9:16 21:9 9:21]
resolution
string
НеобязательноПо умолчанию: 1K
Класс размера изображения. 2K создаёт большее изображение и стоит дороже 1K.
Допустимые значения: 1K, 2K
По умолчанию: 1K
- У модели доступны только 1K и 2K; 4K отклоняется. Выберите класс в этом поле: упоминание размера в промпте не меняет тарифный класс.
- Используйте заглавную K:
2kотклоняется.
Если значение неверно
- Недопустимое значение, например
4K:"resolution" must be one of: [1K 2K]
background
string
НеобязательноПо умолчанию: opaque
Нужен ли непрозрачный или прозрачный фон.
Допустимые значения: opaque, transparent
По умолчанию: opaque
- По умолчанию —
opaque.transparentвозвращает изображение с альфа-каналом, поэтому требуетoutput_formatсо значениемpngилиwebp. - Если передать
transparentбезoutput_format, используется стандартныйpng, и запрос принимается.
Если значение неверно
- Недопустимое значение, например
auto:"background" must be one of: [opaque transparent] transparentвместе сoutput_format: "jpeg":Qwen Image 2.1 needs output_format png or webp for a transparent background
enhance_prompt
boolean
Необязательно
Позволяет модели переписать промпт перед генерацией.
- Если поле не задано, оно включено для генерации по тексту и выключено при передаче
images: при переписывании может потеряться указание, что нужно сохранить при редактировании. - Передайте
trueилиfalse, чтобы явно переопределить значение по умолчанию.
Если значение неверно
- Значение не является логическим, например строка
"true":"enhance_prompt" must be a boolean
output_format
string
НеобязательноПо умолчанию: png
Формат файла результата.
Допустимые значения: png, webp, jpeg
По умолчанию: png
- BeatAPI конвертирует только между PNG и JPEG. Если модель возвращает другой из этих двух форматов, изображение обычно преобразуется перед сохранением; прозрачные области в JPEG становятся белыми. При ошибке конвертации файл сохраняется как получен. Конвертация в WebP или из него не выполняется.
- Фактический сохранённый тип всегда указан в
output.media[].mime_type. Проверяйте его при запросеwebp. - Пишите
jpeg, а неjpg.
Если значение неверно
- Недопустимое значение, например
jpg:"output_format" must be one of: [png webp jpeg]
seed
integer
Необязательно
Целое число, передаваемое модели как seed генератора случайных чисел. Для случайного seed не задавайте поле.
Диапазон: 0–2147483647
- BeatAPI не гарантирует одинаковый результат при одинаковых seed и промпте.
Если значение неверно
- Число нецелое, отрицательное или больше 2147483647:
"seed" is outside its supported range
Перед созданием задачи шлюз также проверяет следующие сочетания параметров:
aspect_ratio: autoсохраняет пропорции первого изображения; без изображений создаётся 1:1.enhance_promptпереписывает промпт перед генерацией. Без изображений по умолчанию включён, с изображениями — выключен: при редактировании переписывание может потерять указание, что сохранить.background: transparentтребуетoutput_formatсо значениемpngилиwebp.
Ограничения входных материалов
До создания задачи шлюз проверяет каждый входной материал. Если ограничение нарушено, возвращается 400 bad_request с указанием материала. Средства не списываются.
- Референсные изображения: PNG, JPEG или WebP с определением формата по содержимому, а не имени файла или
Content-Type; до 50 MB каждый (десятичные мегабайты; проверяется, если сервер сообщает размер), от 1 до 10 ссылок. GIF, HEIC и SVG отклоняются. - Для этой модели ограничения числа пикселей и соотношения сторон не проверяются.
- Если сервер не ответил вовремя, ссылка не отклоняется при создании. Если скачать её не удастся и позже, задача завершится ошибкой с возвратом средств.
- Файл находится на вашем устройстве? Загрузите его через
POST /v1/filesи передайте полученныйdata.url.
Параметры, которые модель не принимает
API изображений знает несколько полей других моделей. Здесь они не игнорируются, а отклоняются, чтобы вы не платили за настройку без эффекта:
quality,size→field "quality" is not supported by model qwen-image-2.1(с именем переданного поля).- Любое другое неизвестное поле, например
n→unknown field: n. Поляnнет: одна задача создаёт одно изображение.
Если неверных полей несколько, сообщение указывает только одно. Исправьте его и повторите запрос.
Прозрачные изображения
Передайте "background": "transparent" и output_format со значением png или webp. У JPEG нет альфа-канала, поэтому transparent вместе с jpeg отклоняется при создании, до резервирования средств. Одного упоминания прозрачного фона в промпте недостаточно для установки background.
BeatAPI не конвертирует в WebP или из него. Фактический формат проверяйте в output.media[].mime_type завершённой задачи.
Примеры запросов
Изображение по тексту
Изображение в 1K по промпту со значениями по умолчанию: aspect_ratio со значением auto даёт 1:1, переписывание промпта включено.
Редактирование одного изображения
Для редактирования переписывание по умолчанию выключено, поэтому указание сохранить бутылку передаётся без изменений. auto сохраняет пропорции референса.
Прозрачный WebP
Отдельный объект на прозрачном фоне, в 2K.
Воспроизводимый запрос
Фиксированный seed с выключенным переписыванием промпта для сравнения небольших изменений текста.
Ответы
Создание задачи (201)
Объект задачи. Поле output равно null, пока задача не завершится успешно. Поля с пометкой «во время выполнения» исчезают после завершения задачи.
Успешно завершённая задача
GET /v1/tasks/{task_id} возвращает HTTP 200 со status: "succeeded" и результатом в data.output.
Поля результата
Задача, завершившаяся ошибкой
Если задача завершилась ошибкой, GET /v1/tasks/{task_id} всё равно возвращает HTTP 200: сведения об ошибке находятся в теле ответа. Зарезервированная сумма возвращается полностью, поэтому списания нет.
Полный пример
Создайте задачу, дождитесь её завершения с интервалом опроса, указанным сервером, и выведите ссылки на результаты. Задайте BEATAPI_API_KEY в переменной окружения и установите requests.
Оплата
- Одна задача создаёт одно изображение с ценой по
resolution, см. таблицу ниже. В прайс-листе отдельная строка для каждого разрешения, без доплаты за референсные изображения, прозрачность или переписывание промпта. - Стоимость резервируется при создании задачи на балансе и в лимите ключа, если он установлен. Запрос, отклонённый до создания задачи, не оплачивается.
- При успешном завершении резерв списывается. При ошибке возвращается полностью:
credits_refundedравноcredits_reserved, аcredits_chargedиcredits_settledравны 0.
Текущие базовые цены совпадают с указанными на странице цен. Если для аккаунта согласована скидка, стоимость будет ниже. Фактически списанная сумма всегда указана в data.usage задачи.
Частые ошибки
Краткий справочник HTTP-ошибок
Ошибки до создания задачи возвращаются с HTTP-статусом, отличным от 2xx, без списания средств. Обрабатывайте error.code или error.retryable; причина указана в message. Полный список и правила повторов приведены в разделе ошибок.
Аутентификация
Передавайте API-ключ в виде Authorization: Bearer <BEATAPI_API_KEY>.
Заголовки
Передавайте тело запроса в JSON с заголовком Content-Type: application/json. Idempotency-Key необязателен. Для каждого логического запроса используйте уникальное значение длиной не более 255 символов и повторно используйте его только для отправки точно такого же тела. В течение 24 часов повтор с тем же ключом и телом возвращает первый ответ с заголовком Idempotent-Replayed: true. Тот же ключ с другим телом возвращает 409 idempotency_conflict. Ответы, отличные от 2xx, не сохраняются, поэтому повтор после 400 или 402 выполняется заново.
Запрос
Модель, которую нужно вызвать.
Значение: qwen-image-2.1
Если значение неверно
- Поле отсутствует:
"model" is required - Неизвестный ID модели:
"model" qwen-image-9 is not catalogued - На этот адрес API отправлена видеомодель:
"model" seedance-2.5 is served by POST /v1/videos/tasks, not this endpoint
Что нарисовать либо изменить в референсных изображениях. Лучше писать обычным языком: объект, стиль, освещение, композиция и текст, который должен появиться на изображении.
Длина: 1–5000 символов
- Длина измеряется в символах. Иероглиф CJK считается одним символом.
- При передаче
imagesукажите назначение каждого изображения и то, что должно остаться без изменений. - При включённом
enhance_promptмодель переписывает промпт перед генерацией.
Если значение неверно
- Поле отсутствует:
"prompt" is required - Пустое значение или превышена допустимая длина:
"prompt" has an unsupported length - Значение не является строкой:
"prompt" must be a string
Соотношение ширины и высоты изображения.
Допустимые значения: auto, 1:1, 4:3, 3:4, 3:2, 2:3, 16:9, 9:16, 21:9, 9:21
По умолчанию: auto
- По умолчанию используется
auto. Сimagesрезультат сохраняет пропорции первого изображения; безimagesзначениеautoсоздаёт1:1. - Чтобы зафиксировать пропорции при редактировании, задайте нужное соотношение сторон вместо
auto.
Если значение неверно
- Значение отсутствует в списке допустимых:
"aspect_ratio" must be one of: [auto 1:1 4:3 3:4 3:2 2:3 16:9 9:16 21:9 9:21]
Нужен ли непрозрачный или прозрачный фон.
Допустимые значения: opaque, transparent
По умолчанию: opaque
- По умолчанию —
opaque.transparentвозвращает изображение с альфа-каналом, поэтому требуетoutput_formatсо значениемpngилиwebp. - Если передать
transparentбезoutput_format, используется стандартныйpng, и запрос принимается.
Если значение неверно
- Недопустимое значение, например
auto:"background" must be one of: [opaque transparent] transparentвместе сoutput_format: "jpeg":Qwen Image 2.1 needs output_format png or webp for a transparent background
Позволяет модели переписать промпт перед генерацией.
- Если поле не задано, оно включено для генерации по тексту и выключено при передаче
images: при переписывании может потеряться указание, что нужно сохранить при редактировании. - Передайте
trueилиfalse, чтобы явно переопределить значение по умолчанию.
Если значение неверно
- Значение не является логическим, например строка
"true":"enhance_prompt" must be a boolean
Референсные изображения для редактирования или объединения. Это поле переключает запрос с генерации по тексту на редактирование изображений.
Число элементов: 1–10
Каждый элемент — общедоступная ссылка https://. Если файл находится на вашем устройстве, сначала загрузите его через POST /v1/files, затем передайте полученный data.url.
- Каждая ссылка должна возвращать сам файл PNG, JPEG или WebP по общедоступному HTTPS, не более 50 MB. До создания задачи шлюз скачивает первые байты по каждой ссылке.
- Ссылки на веб-страницы, страницы входа, просроченные подписанные ссылки или серверы с защитой от прямого скачивания отклоняются, поскольку не возвращают изображение.
- Индексы в сообщениях об ошибках начинаются с 0:
images[0]— первая ссылка.
Если значение неверно
- Превышено максимальное число элементов:
"images" accepts at most 10 items - Пустой массив:
"images" requires at least 1 item - Ссылка не начинается с https://:
"images[0]" must be a public HTTPS URL - Закрытый или небезопасный адрес:
"images[0]" must be a publicly reachable HTTPS image URL - Сервер возвращает ошибку 4xx:
"images[0]" could not be downloaded: the URL returned HTTP 404 - Ссылка возвращает не PNG, JPEG или WebP:
"images[0]" is not a PNG, JPEG or WebP image: the URL returned text/html - Размер больше 50 MB:
"images[2]" is 63.4 MB; images must be 50 MB or smaller
Пример
"images": [
"https://cdn.beatapi.io/samples/smart-bottle.png"
]
Формат файла результата.
Допустимые значения: png, webp, jpeg
По умолчанию: png
- BeatAPI конвертирует только между PNG и JPEG. Если модель возвращает другой из этих двух форматов, изображение обычно преобразуется перед сохранением; прозрачные области в JPEG становятся белыми. При ошибке конвертации файл сохраняется как получен. Конвертация в WebP или из него не выполняется.
- Фактический сохранённый тип всегда указан в
output.media[].mime_type. Проверяйте его при запросеwebp. - Пишите
jpeg, а неjpg.
Если значение неверно
- Недопустимое значение, например
jpg:"output_format" must be one of: [png webp jpeg]
Класс размера изображения. 2K создаёт большее изображение и стоит дороже 1K.
Допустимые значения: 1K, 2K
По умолчанию: 1K
- У модели доступны только 1K и 2K; 4K отклоняется. Выберите класс в этом поле: упоминание размера в промпте не меняет тарифный класс.
- Используйте заглавную K:
2kотклоняется.
Если значение неверно
- Недопустимое значение, например
4K:"resolution" must be one of: [1K 2K]
Целое число, передаваемое модели как seed генератора случайных чисел. Для случайного seed не задавайте поле.
Диапазон: 0–2147483647
- BeatAPI не гарантирует одинаковый результат при одинаковых seed и промпте.
Если значение неверно
- Число нецелое, отрицательное или больше 2147483647:
"seed" is outside its supported range
Ответ
Объект задачи. Поле output равно null, пока задача не завершится успешно. Поля с пометкой «во время выполнения» исчезают после завершения задачи.

