Генерации
Создание задач генерации и проверка статуса
Базовый адрес — https://api.iskragen.ru. Общие правила — в обзоре справочника.
GET /v1/generations/
Список генераций. Возвращает свои генерации от новых к старым с фильтрами status, modelId через запятую, q длиной 1–200 символов и from / to; курсорная пагинация принимает limit от 1 до 100, по умолчанию 20, а cursor равен ISO 8601 createdAt последнего элемента, nextCursor: null означает конец списка. Требуется API-ключ; действует общий лимит 60 запросов в минуту, превышение возвращает 429 RATE_LIMIT_ERROR с retryAfter, а отсутствие ключа — 401 AUTHENTICATION_ERROR.
Авторизация: заголовок Authorization: Bearer <ключ> — API-ключ, выданный в личном кабинете (isk_live_<prefix>_<secret>).
Параметры
| Параметр | Где | Тип | Обязательный | Описание и ограничения |
|---|---|---|---|---|
limit | query | integer | нет | ≥ 1; ≤ 100; по умолчанию 20 |
cursor | query | string | нет | — |
status | query | string | нет | значения: PENDING, PROCESSING, SUCCEEDED, FAILED |
modelId | query | string | нет | Один или несколько идентификаторов моделей через запятую — modelSlug (рекомендуется) или прежний идентификатор; длина ≤ 2000 |
q | query | string | нет | длина ≥ 1; длина ≤ 200 |
mediaType | query | string | нет | значения: IMAGE, VIDEO, AUDIO |
from | query | string | нет | формат date-time |
to | query | string | нет | формат date-time |
Пример вызова
curl -X GET "https://api.iskragen.ru/v1/generations/" \
-H "Authorization: Bearer $ISKRAGEN_API_KEY"
Структура ответа 200
Поля и типы из схемы ответа, это не пример: значения зависят от запроса. Корень — object.
| Поле | Тип | Обязательное | Описание и ограничения |
|---|---|---|---|
items | object[] | да | — |
items[].chargeStatus | string | null | да | — |
items[].costRub | number | да | — |
items[].createdAt | string | да | — |
items[].errorCode | string | null | да | — |
items[].errorMessage | string | null | да | — |
items[].finishedAt | string | null | да | — |
items[].id | string | да | — |
items[].mediaPriceRub | number | null | да | — |
items[].mediaType | string | да | — |
items[].modelId | string | да | Устарело: внутренний идентификатор. Используйте modelSlug. |
items[].modelName | string | да | — |
items[].modelSlug | string | нет | Всегда присутствует в ответе; публичный идентификатор модели |
items[].outputUrls | string[] | да | — |
items[].prompt | string | да | — |
items[].recoveredAfterRefund | boolean | нет | true — результат получен после возврата средств, списания нет |
items[].startedAt | string | null | да | — |
items[].status | string | да | — |
nextCursor | string | null | да | — |
Пример ответа
Пример ответа сервера; значения синтетические.
{
"items": [
{
"chargeStatus": null,
"costRub": 10,
"createdAt": "2026-09-18T09:14:03.512Z",
"errorCode": null,
"errorMessage": null,
"finishedAt": null,
"id": "01a0b3cb-5978-7c41-9e2a-5d8f13b0a7c6",
"mediaPriceRub": null,
"mediaType": "IMAGE",
"modelId": "internal-nano-banana-2",
"modelName": "Google - Nano Banana 2",
"modelSlug": "nano-banana-2",
"outputUrls": [],
"prompt": "Демонстрационный пример: бумажный кораблик на спокойной воде, акварель",
"startedAt": "2026-09-18T09:14:04.020Z",
"status": "PROCESSING"
},
{
"chargeStatus": null,
"costRub": 10,
"createdAt": "2026-09-18T09:12:41.087Z",
"errorCode": null,
"errorMessage": null,
"finishedAt": "2026-09-18T09:12:58.214Z",
"id": "01a0b3ca-177f-7a93-8b5e-2c61f4d09e18",
"mediaPriceRub": null,
"mediaType": "IMAGE",
"modelId": "internal-nano-banana-2",
"modelName": "Google - Nano Banana 2",
"modelSlug": "nano-banana-2",
"outputUrls": [
"https://files.example.com/generations/01a0b3ca-177f-7a93-8b5e-2c61f4d09e18/output_0.png"
],
"prompt": "Демонстрационный пример: стеклянная банка с полевыми цветами на подоконнике",
"startedAt": "2026-09-18T09:12:41.630Z",
"status": "SUCCEEDED"
}
],
"nextCursor": "2026-09-18T09:12:41.087Z"
}
Коды ошибок
401 AUTHENTICATION_ERROR— ключ отсутствует, невалиден или отозван.429 RATE_LIMIT_ERROR— превышен лимит запросов либо число одновременных генераций (по умолчанию 5).
POST /v1/generations/
Создать генерацию. Возвращает 202 и задачу с id, status, costRub, а не результат; при резервировании стоимость списывается с баланса в момент создания задачи, до постановки в очередь, при нехватке возвращается 402 INSUFFICIENT_BALANCE с required и available, а при провале генерации сумма возвращается на баланс автоматически. Результат получают опросом GET /v1/generations/{id} или вебхуком generation.completed / generation.failed; Idempotency-Key длиной 1–64 символа приоритетнее одноимённого поля тела, повтор и одновременные запросы с одним ключом возвращают ту же задачу. prompt — обычно до 10 000 символов, у отдельных моделей до 30 000; точный предел модели — в promptMaxChars каталога, допускается не более 5 одновременных задач и до 10 внешних референсов суммарно до 200 МБ; доступ: Требуется API-ключ, действует общий лимит 60 запросов в минуту, превышение возвращает 429 RATE_LIMIT_ERROR с retryAfter, а отсутствие ключа — 401 AUTHENTICATION_ERROR.
Авторизация: заголовок Authorization: Bearer <ключ> — API-ключ, выданный в личном кабинете (isk_live_<prefix>_<secret>).
Параметры
| Параметр | Где | Тип | Обязательный | Описание и ограничения |
|---|---|---|---|---|
idempotency-key | header | string | нет | длина ≥ 1; длина ≤ 64 |
Тело запроса (application/json)
| Поле | Тип | Обязательное | Описание и ограничения |
|---|---|---|---|
durationSec | integer | нет | ≥ 1; ≤ 600 |
height | integer | нет | ≥ 256; ≤ 4096 |
idempotencyKey | string | нет | длина ≥ 1; длина ≤ 64 |
modelSlug | string | да | длина ≥ 1 |
negativePrompt | string | нет | длина ≤ 2000 |
params | object | нет | произвольные ключи |
prompt | string | да | длина ≥ 1; длина ≤ 30000 |
seed | integer | нет | ≥ 0 |
width | integer | нет | ≥ 256; ≤ 4096 |
Пример вызова
curl -X POST "https://api.iskragen.ru/v1/generations/" \
-H "Authorization: Bearer $ISKRAGEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"modelSlug":"<modelSlug>","prompt":"<prompt>"}'
Структура ответа 202
Поля и типы из схемы ответа, это не пример: значения зависят от запроса. Корень — object.
| Поле | Тип | Обязательное | Описание и ограничения |
|---|---|---|---|
costRub | number | да | — |
id | string | да | — |
status | string | да | — |
Пример ответа
Пример ответа сервера; значения синтетические.
{
"costRub": 10,
"id": "01a0b3cb-5978-7c41-9e2a-5d8f13b0a7c6",
"status": "PENDING"
}
Коды ошибок
401 AUTHENTICATION_ERROR— ключ отсутствует, невалиден или отозван.402 INSUFFICIENT_BALANCE— баланс ниже стоимости запроса.429 RATE_LIMIT_ERROR— превышен лимит запросов либо число одновременных генераций (по умолчанию 5).
GET /v1/generations/models
Модели из моей истории. Возвращает без пагинации модели, по которым у аккаунта есть генерации, и их счётчики для фильтра списка. Требуется API-ключ; действует общий лимит 60 запросов в минуту, превышение возвращает 429 RATE_LIMIT_ERROR с retryAfter, а отсутствие ключа — 401 AUTHENTICATION_ERROR.
Авторизация: заголовок Authorization: Bearer <ключ> — API-ключ, выданный в личном кабинете (isk_live_<prefix>_<secret>).
Пример вызова
curl -X GET "https://api.iskragen.ru/v1/generations/models" \
-H "Authorization: Bearer $ISKRAGEN_API_KEY"
Структура ответа 200
Поля и типы из схемы ответа, это не пример: значения зависят от запроса. Корень — object.
| Поле | Тип | Обязательное | Описание и ограничения |
|---|---|---|---|
models | object[] | да | — |
models[].count | integer | да | — |
models[].id | string | да | Устарело: внутренний идентификатор. Используйте slug. |
models[].name | string | да | — |
models[].slug | string | нет | Всегда присутствует в ответе; публичный идентификатор модели |
Коды ошибок
401 AUTHENTICATION_ERROR— ключ отсутствует, невалиден или отозван.429 RATE_LIMIT_ERROR— превышен лимит запросов либо число одновременных генераций (по умолчанию 5).
GET /v1/generations/{id}
Получить генерацию. Возвращает генерацию для опроса статуса и параметры для повтора; возможные статусы: PENDING, PROCESSING, SUCCEEDED, FAILED, REFUNDED, CANCELLED, ENQUEUE_FAILED, а чужой id возвращает 404. Требуется API-ключ; действует общий лимит 60 запросов в минуту, превышение возвращает 429 RATE_LIMIT_ERROR с retryAfter, а отсутствие ключа — 401 AUTHENTICATION_ERROR.
Авторизация: заголовок Authorization: Bearer <ключ> — API-ключ, выданный в личном кабинете (isk_live_<prefix>_<secret>).
Параметры
| Параметр | Где | Тип | Обязательный | Описание и ограничения |
|---|---|---|---|---|
id | path | string | да | формат uuid |
Пример вызова
curl -X GET "https://api.iskragen.ru/v1/generations/<id>" \
-H "Authorization: Bearer $ISKRAGEN_API_KEY"
Структура ответа 200
Поля и типы из схемы ответа, это не пример: значения зависят от запроса. Корень — object.
| Поле | Тип | Обязательное | Описание и ограничения |
|---|---|---|---|
chargeStatus | string | null | да | — |
costRub | number | да | — |
createdAt | string | да | — |
durationSec | integer | null | да | — |
errorCode | string | null | да | — |
errorMessage | string | null | да | — |
finishedAt | string | null | да | — |
height | integer | null | да | — |
id | string | да | — |
mediaPriceRub | number | null | да | — |
mediaType | string | да | — |
modelId | string | да | Устарело: внутренний идентификатор. Используйте modelSlug. |
modelName | string | да | — |
modelSlug | string | да | — |
negativePrompt | string | null | да | — |
outputUrls | string[] | да | — |
params | object | да | произвольные ключи |
prompt | string | да | — |
recoveredAfterRefund | boolean | нет | true — результат получен после возврата средств, списания нет |
seed | integer | null | да | — |
startedAt | string | null | да | — |
status | string | да | — |
userId | string | да | — |
width | integer | null | да | — |
Коды ошибок
401 AUTHENTICATION_ERROR— ключ отсутствует, невалиден или отозван.404— Ресурс не существует или принадлежит другому пользователю429 RATE_LIMIT_ERROR— превышен лимит запросов либо число одновременных генераций (по умолчанию 5).
GET /v1/generations/{id}/download
Скачать результат. Отдаёт файл потоком с Content-Disposition: attachment и Cache-Control: private, no-store, а не ссылку или редирект; index от 0–15 выбирает файл при нескольких результатах. Отсутствующий файл возвращает 404, недоступное хранилище — 502 OUTPUT_FETCH_FAILED. Требуется API-ключ; действует общий лимит 60 запросов в минуту, превышение возвращает 429 RATE_LIMIT_ERROR с retryAfter, а отсутствие ключа — 401 AUTHENTICATION_ERROR.
Авторизация: заголовок Authorization: Bearer <ключ> — API-ключ, выданный в личном кабинете (isk_live_<prefix>_<secret>).
Параметры
| Параметр | Где | Тип | Обязательный | Описание и ограничения |
|---|---|---|---|---|
index | query | integer | нет | ≥ 0; ≤ 15; по умолчанию 0 |
id | path | string | да | формат uuid |
Пример вызова
curl -X GET "https://api.iskragen.ru/v1/generations/<id>/download" \
-H "Authorization: Bearer $ISKRAGEN_API_KEY"
Структура ответа 200
Схема не описывает JSON-тело ответа; что приходит в ответе — в описании метода выше.
Коды ошибок
401 AUTHENTICATION_ERROR— ключ отсутствует, невалиден или отозван.404— Ресурс не существует или принадлежит другому пользователю429 RATE_LIMIT_ERROR— превышен лимит запросов либо число одновременных генераций (по умолчанию 5).502 OUTPUT_FETCH_FAILED— файл результата не удалось получить из хранилища.