Генерации
Создание задач генерации и проверка статуса
Базовый адрес — 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-ключ, выданный в личном кабинете (iskr_live_<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[].errorDetails | object | нет | — |
items[].errorDetails.reasons | object[] | нет | элементов ≥ 1; элементов ≤ 6 |
items[].errorDetails.reasons[].action | string | да | значения: replace_lyrics |
items[].errorDetails.reasons[].reason | string | да | значения: lyrics_copyright |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: use_auto_aspect_ratio |
items[].errorDetails.reasons[].reason | string | да | значения: frame_aspect_ratio_adaptive |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: revise_copyrighted_content |
items[].errorDetails.reasons[].reason | string | да | значения: copyright_restriction |
items[].errorDetails.reasons[].stage | string | да | значения: unknown |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: remove_artist_from_tags |
items[].errorDetails.reasons[].artist | string | нет | шаблон ^[A-Za-z][A-Za-z0-9]*(?:[ -][A-Za-z0-9]+)*$; длина ≥ 1; длина ≤ 48 |
items[].errorDetails.reasons[].reason | string | да | значения: artist_in_tags |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: disable_web_search_or_use_text_to_video |
items[].errorDetails.reasons[].reason | string | да | значения: web_search_requires_text_to_video |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: replace_reference_video |
items[].errorDetails.reasons[].actualSeconds | number | нет | ≥ 0; ≤ 3600 |
items[].errorDetails.reasons[].maxSeconds | number | да | значения: 30 |
items[].errorDetails.reasons[].minSeconds | number | да | значения: 2, 4 |
items[].errorDetails.reasons[].reason | string | да | значения: reference_video_duration |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: replace_voice_audio |
items[].errorDetails.reasons[].maxSeconds | number | да | значения: 30 |
items[].errorDetails.reasons[].minSeconds | number | да | значения: 5 |
items[].errorDetails.reasons[].reason | string | да | значения: voice_audio_duration |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: replace_voice_audio |
items[].errorDetails.reasons[].reason | string | да | значения: voice_audio_no_speech |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: replace_audio_file |
items[].errorDetails.reasons[].reason | string | да | значения: audio_catalog_match |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: enable_reference_duration |
items[].errorDetails.reasons[].reason | string | да | значения: video_editing_duration |
items[].errorDetails.reasons[].stage | string | да | значения: input |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.reasons[].action | string | да | значения: revise_materials |
items[].errorDetails.reasons[].media | string | да | значения: image, video, material |
items[].errorDetails.reasons[].reason | string | да | значения: safety_restriction |
items[].errorDetails.reasons[].stage | string | да | значения: input, output, unknown |
items[].errorDetails.reasons[].transient | boolean | да | значения: false |
items[].errorDetails.version | number | нет | значения: 1 |
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 | да | — |
items[].sunoWav | object | нет | — |
items[].sunoWav.finalRub | string | нет | шаблон ^(0|[1-9][0-9]{0,12})\.[0-9]{2}$ |
items[].sunoWav.refundConfirmed | boolean | нет | — |
items[].sunoWav.refundRub | string | нет | шаблон ^(0|[1-9][0-9]{0,12})\.[0-9]{2}$ |
items[].sunoWav.reservedRub | string | нет | шаблон ^(0|[1-9][0-9]{0,12})\.[0-9]{2}$ |
items[].sunoWav.stage | string | нет | значения: GENERATING_MUSIC, PREPARING_WAV, FINALIZING, COMPLETED |
items[].sunoWav.tracks | object[] | нет | элементов ≤ 2 |
items[].sunoWav.tracks[].durationSec | number | нет | — |
items[].sunoWav.tracks[].mp3 | object | да | — |
items[].sunoWav.tracks[].mp3.mime | string | да | значения: audio/mpeg |
items[].sunoWav.tracks[].mp3.url | string | да | — |
items[].sunoWav.tracks[].trackId | string | да | — |
items[].sunoWav.tracks[].wav | object | да | — |
items[].sunoWav.tracks[].wav.bitDepth | integer | нет | ≥ 1 |
items[].sunoWav.tracks[].wav.errorCode | string | нет | — |
items[].sunoWav.tracks[].wav.fileSize | integer | нет | ≥ 1 |
items[].sunoWav.tracks[].wav.mime | string | нет | значения: audio/wav |
items[].sunoWav.tracks[].wav.sampleRate | integer | нет | ≥ 1 |
items[].sunoWav.tracks[].wav.state | string | да | значения: pending, processing, ready, failed |
items[].sunoWav.tracks[].wav.url | string | нет | — |
items[].sunoWav.wavStatus | string | нет | значения: pending, completed, partial, failed |
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— нет действующего API-ключа или сессии кабинета: ключ отсутствует, невалиден или отозван, сессия истекла.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 символа приоритетнее одноимённого поля тела, повтор и одновременные запросы с одним ключом возвращают ту же задачу, кроме отказов до поиска по ключу (401, 400, 403, 404, 429, 503); полное правило — в справочнике генераций. prompt обязателен для обычных моделей; Gemini 3.8 TTS принимает params.speakers и params.dialogue_turns без prompt, лимит Iskra — суммарно 4000 символов реплик. prompt — обычно до 10 000 символов, у отдельных моделей до 30 000; точный предел модели — в promptMaxChars каталога, допускается не более 5 одновременных задач и до 10 внешних референсов суммарно до 200 МБ; доступ: Требуется API-ключ или сессия кабинета, действует общий лимит 60 запросов в минуту, превышение возвращает 429 RATE_LIMIT_ERROR с retryAfter, а отсутствие авторизации — 401 AUTHENTICATION_ERROR. 403 ACCOUNT_SUSPENDED — генерации приостановлены; 403 TELEGRAM_REQUIRED — требуется привязка Telegram на странице «Уведомления».
Авторизация: заголовок Authorization: Bearer <ключ> — API-ключ, выданный в личном кабинете (iskr_live_<secret>).
Параметры
| Параметр | Где | Тип | Обязательный | Описание и ограничения |
|---|---|---|---|---|
idempotency-key | header | string | нет | длина ≥ 1; длина ≤ 64 |
Тело запроса (application/json)
| Поле | Тип | Обязательное | Описание и ограничения |
|---|---|---|---|
durationSec | integer | нет | ≥ 1; ≤ 600 |
expectedCostRub | string | нет | шаблон ^(0|[1-9][0-9]{0,12})\.[0-9]{2}$ |
height | integer | нет | ≥ 256; ≤ 4096 |
idempotencyKey | string | нет | длина ≥ 1; длина ≤ 64 |
modelSlug | string | да | длина ≥ 1 |
negativePrompt | string | нет | длина ≤ 2000 |
params | object | нет | произвольные ключи |
pricingVersion | string | нет | длина ≥ 1; длина ≤ 128 |
prompt | string | нет | длина ≤ 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":"nano-banana-2","prompt":"Кот-космонавт, студийное освещение"}'
Структура ответа 202
Поля и типы из схемы ответа, это не пример: значения зависят от запроса. Корень — object.
| Поле | Тип | Обязательное | Описание и ограничения |
|---|---|---|---|
costRub | number | да | — |
id | string | да | — |
status | string | да | — |
Пример ответа
Пример ответа сервера; значения синтетические.
{
"costRub": 10,
"id": "01a0b3cb-5978-7c41-9e2a-5d8f13b0a7c6",
"status": "PENDING"
}
Коды ошибок
401 AUTHENTICATION_ERROR— нет действующего API-ключа или сессии кабинета: ключ отсутствует, невалиден или отозван, сессия истекла.402 INSUFFICIENT_BALANCE— баланс ниже стоимости запроса.403 ACCOUNT_SUSPENDED— Авторизация пройдена, но нет прав на ресурс403 TELEGRAM_REQUIRED— Авторизация пройдена, но нет прав на ресурс429 RATE_LIMIT_ERROR— превышен лимит запросов либо число одновременных генераций (по умолчанию 5).
GET /v1/generations/models
Модели из моей истории. Возвращает без пагинации модели, по которым у аккаунта есть генерации, и их счётчики для фильтра списка. Требуется API-ключ или сессия кабинета; действует общий лимит 60 запросов в минуту, превышение возвращает 429 RATE_LIMIT_ERROR с retryAfter, а отсутствие авторизации — 401 AUTHENTICATION_ERROR.
Авторизация: заголовок Authorization: Bearer <ключ> — API-ключ, выданный в личном кабинете (iskr_live_<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— нет действующего API-ключа или сессии кабинета: ключ отсутствует, невалиден или отозван, сессия истекла.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-ключ, выданный в личном кабинете (iskr_live_<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 | да | — |
errorDetails | object | нет | — |
errorDetails.reasons | object[] | нет | элементов ≥ 1; элементов ≤ 6 |
errorDetails.reasons[].action | string | да | значения: replace_lyrics |
errorDetails.reasons[].reason | string | да | значения: lyrics_copyright |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: use_auto_aspect_ratio |
errorDetails.reasons[].reason | string | да | значения: frame_aspect_ratio_adaptive |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: revise_copyrighted_content |
errorDetails.reasons[].reason | string | да | значения: copyright_restriction |
errorDetails.reasons[].stage | string | да | значения: unknown |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: remove_artist_from_tags |
errorDetails.reasons[].artist | string | нет | шаблон ^[A-Za-z][A-Za-z0-9]*(?:[ -][A-Za-z0-9]+)*$; длина ≥ 1; длина ≤ 48 |
errorDetails.reasons[].reason | string | да | значения: artist_in_tags |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: disable_web_search_or_use_text_to_video |
errorDetails.reasons[].reason | string | да | значения: web_search_requires_text_to_video |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: replace_reference_video |
errorDetails.reasons[].actualSeconds | number | нет | ≥ 0; ≤ 3600 |
errorDetails.reasons[].maxSeconds | number | да | значения: 30 |
errorDetails.reasons[].minSeconds | number | да | значения: 2, 4 |
errorDetails.reasons[].reason | string | да | значения: reference_video_duration |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: replace_voice_audio |
errorDetails.reasons[].maxSeconds | number | да | значения: 30 |
errorDetails.reasons[].minSeconds | number | да | значения: 5 |
errorDetails.reasons[].reason | string | да | значения: voice_audio_duration |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: replace_voice_audio |
errorDetails.reasons[].reason | string | да | значения: voice_audio_no_speech |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: replace_audio_file |
errorDetails.reasons[].reason | string | да | значения: audio_catalog_match |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: enable_reference_duration |
errorDetails.reasons[].reason | string | да | значения: video_editing_duration |
errorDetails.reasons[].stage | string | да | значения: input |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.reasons[].action | string | да | значения: revise_materials |
errorDetails.reasons[].media | string | да | значения: image, video, material |
errorDetails.reasons[].reason | string | да | значения: safety_restriction |
errorDetails.reasons[].stage | string | да | значения: input, output, unknown |
errorDetails.reasons[].transient | boolean | да | значения: false |
errorDetails.version | number | нет | значения: 1 |
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 | да | — |
sunoWav | object | нет | — |
sunoWav.finalRub | string | нет | шаблон ^(0|[1-9][0-9]{0,12})\.[0-9]{2}$ |
sunoWav.refundConfirmed | boolean | нет | — |
sunoWav.refundRub | string | нет | шаблон ^(0|[1-9][0-9]{0,12})\.[0-9]{2}$ |
sunoWav.reservedRub | string | нет | шаблон ^(0|[1-9][0-9]{0,12})\.[0-9]{2}$ |
sunoWav.stage | string | нет | значения: GENERATING_MUSIC, PREPARING_WAV, FINALIZING, COMPLETED |
sunoWav.tracks | object[] | нет | элементов ≤ 2 |
sunoWav.tracks[].durationSec | number | нет | — |
sunoWav.tracks[].mp3 | object | да | — |
sunoWav.tracks[].mp3.mime | string | да | значения: audio/mpeg |
sunoWav.tracks[].mp3.url | string | да | — |
sunoWav.tracks[].trackId | string | да | — |
sunoWav.tracks[].wav | object | да | — |
sunoWav.tracks[].wav.bitDepth | integer | нет | ≥ 1 |
sunoWav.tracks[].wav.errorCode | string | нет | — |
sunoWav.tracks[].wav.fileSize | integer | нет | ≥ 1 |
sunoWav.tracks[].wav.mime | string | нет | значения: audio/wav |
sunoWav.tracks[].wav.sampleRate | integer | нет | ≥ 1 |
sunoWav.tracks[].wav.state | string | да | значения: pending, processing, ready, failed |
sunoWav.tracks[].wav.url | string | нет | — |
sunoWav.wavStatus | string | нет | значения: pending, completed, partial, failed |
userId | string | да | — |
width | integer | null | да | — |
Коды ошибок
401 AUTHENTICATION_ERROR— нет действующего API-ключа или сессии кабинета: ключ отсутствует, невалиден или отозван, сессия истекла.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-ключ, выданный в личном кабинете (iskr_live_<secret>).
Параметры
| Параметр | Где | Тип | Обязательный | Описание и ограничения |
|---|---|---|---|---|
index | query | integer | нет | ≥ 0; ≤ 15; по умолчанию 0 |
trackId | query | string | нет | формат uuid |
format | query | string | нет | значения: mp3, wav |
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— нет действующего API-ключа или сессии кабинета: ключ отсутствует, невалиден или отозван, сессия истекла.404— Ресурс не существует или принадлежит другому пользователю429 RATE_LIMIT_ERROR— превышен лимит запросов либо число одновременных генераций (по умолчанию 5).502 OUTPUT_FETCH_FAILED— файл результата не удалось получить из хранилища.