Методы API

API задач генерации

GET /open/v1/tasks/{id} возвращает статус, прогресс, ссылки на результаты и причину ошибки; GET /open/v1/tasks — список задач по статусу и типу. Советы по опросу.

На этой странице

Получение задачи

http
GET /open/v1/tasks/{id}

Возвращает текущее состояние задачи. Метод используется и для изображений, и для видео; каждый запрос учитывается в лимите 60 запросов в минуту.

curl https://api.zroimg.com/open/v1/tasks/TASK_ID \
  -H "Authorization: Bearer zk-xxxxxxxxxxxxxxxxxxxxxxxx"

Ответ

json
{
  "id": "GT2026102716412174278429",
  "object": "generation.task",
  "status": "succeeded",
  "model": "gpt-image-2",
  "type": "image",
  "mode": "text_to_image",
  "prompt": "A red fox sitting in a snowy pine forest at dawn, soft light, 35mm photo",
  "cost_points": 15,
  "created_at": 1793090482,
  "finished_at": 1793090513,
  "error": null,
  "progress": null,
  "data": [
    {
      "url": "https://api.zroimg.com/open/v1/files/36?exp=1793178000&sig=...",
      "type": "image",
      "width": 1254,
      "height": 1254,
      "expires_at": 1793178000
    }
  ]
}

Объект задачи

ПолеТипОписание
idstringID задачи
objectstringВсегда generation.task
statusstringpending, processing, succeeded или failed
modelstringID модели
typestringimage или video
modestringФактически использованный режим генерации
promptstringОтправленный промпт
cost_pointsintegerБаллы, списанные при отправке; для неудавшихся задач возвращаются автоматически
created_atintegerВремя создания, Unix-время (в секундах)
finished_atinteger | nullВремя успешного или неуспешного завершения; null, пока задача не завершена
errorobject | nullТолько при ошибке — { "message": "..." }
progressobject | nullВо время выполнения — { "stage": "...", "percent": ... }, после завершения — null
dataarrayЗаполняется только при успехе, иначе пустой массив

Типичные значения progress.stage — queued, running, retrying; также это может быть название этапа внешней модели. percent может быть null. Используйте эти поля только для отображения.

Каждый элемент data:

ПолеОписание
urlПодписанный адрес для скачивания файла результата, авторизация не нужна
typeimage или video
width, heightРазмер в пикселях; возвращается, только если известен (у видео обычно отсутствует)
expires_atВремя истечения адреса скачивания, Unix-время (в секундах)

Рекомендации по опросу

  • Запрашивайте статус каждые 3–5 секунд; изображения обычно готовы за 30–90 секунд, видео — за несколько минут.
  • Прекращайте опрос, только когда status равен succeeded или failed.
  • При ответе 429 подождите время из Retry-After и продолжайте.
  • Задайте общий тайм-аут опроса (например, 10 минут для изображений и 30 минут для видео); после тайм-аута задача продолжает выполняться на сервере, и её можно проверить позже.

Скачивание результатов

data[].url — временная подписанная ссылка, API-ключ не нужен, скачивать можно напрямую:

bash
curl -L -o result.png "https://api.zroimg.com/open/v1/files/36?exp=1793178000&sig=..."
  • Ссылка действует около 24 часов, точное время — в expires_at. После истечения срока повторный вызов GET /tasks/{id} вернёт новую ссылку.
  • Для истёкшей или изменённой ссылки возвращается 403 invalid_signature; если файл удалён — 404 file_not_found.
  • Поддерживаются запросы Range (видео можно докачивать и перематывать при просмотре); если добавить к адресу &download=1, файл скачается как вложение.

Результаты, которые нужно хранить долго, скачивайте в своё хранилище и не показывайте эти ссылки напрямую конечным пользователям.

Неудавшиеся задачи

Если status равен failed, причина указана в error.message, а баллы в размере cost_points уже автоматически возвращены на аккаунт — никаких действий не требуется. Можно изменить параметры и отправить задачу заново.

Список задач

http
GET /open/v1/tasks?limit=20&page=1&status=succeeded&type=image

Возвращает задачи текущего аккаунта, включая созданные на сайте, в порядке от новых к старым по времени создания.

ПараметрТипОписание
limitintegerКоличество на странице, 1–50, по умолчанию 20
pageintegerНомер страницы, начиная с 1, по умолчанию 1
statusstringФильтр по статусу: pending, processing, succeeded, failed
typestringФильтр по типу: image, video
json
{
  "object": "list",
  "data": [
    { "id": "GT2026102716412174278429", "object": "generation.task", "status": "succeeded", "...": "..." }
  ],
  "page": 1,
  "limit": 20,
  "total": 16,
  "has_more": false
}

Каждый элемент data — полный объект задачи; total — общее число задач, подходящих под условия. Если has_more равно true, увеличьте page на 1, чтобы получить следующую страницу.

curl "https://api.zroimg.com/open/v1/tasks?limit=20&page=1&status=succeeded&type=image" \
  -H "Authorization: Bearer zk-xxxxxxxxxxxxxxxxxxxxxxxx"