Разработчикам
Одно API для изображений, видео, озвучки и музыки
REST-интерфейс к моделям FLUX, Kling, Sora, Suno, ElevenLabs и другим: общая схема запроса, единый баланс в рублях, российский домен без VPN и прокси.
Создайте ключ
В личном кабинете «API-ключи» — значение показывается один раз. Все запросы авторизуются заголовком Authorization: Bearer <ключ>.
Отправьте генерацию
Один эндпоинт POST /v1/generations обслуживает все типы медиа: тип и набор параметров определяет выбранная модель.
Заберите результат
Опрашивайте GET /v1/generations/:id или подпишитесь на webhooks — для видео и музыки это надёжнее polling'а.
Запрос на генерацию
Ответ приходит сразу — 202 Accepted с идентификатором задачи; стоимость резервируется на балансе в этот же момент и возвращается, если генерация окончательно не удалась.
curl -X POST https://api.iskragen.ru/v1/generations \
-H "Authorization: Bearer $ISKRAGEN_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-42" \
-d '{
"modelSlug": "gpt-image-2-text-to-image",
"prompt": "Кот-космонавт на фоне Сатурна, фотореализм",
"params": { "aspect_ratio": "1:1", "resolution": "1K" }
}'{
"id": "0192f0c4-8a1e-7b3d-9f21-2c5e6a4b7d90",
"status": "PENDING",
"costRub": 6
}Статус задачи
Когда status становится SUCCEEDED, ссылки на файлы приходят в outputUrls.
curl https://api.iskragen.ru/v1/generations/0192f0c4-8a1e-7b3d-9f21-2c5e6a4b7d90 \
-H "Authorization: Bearer $ISKRAGEN_API_KEY"TypeScript
Тот же сценарий целиком: постановка задачи с ключом идемпотентности и ожидание результата.
const API_URL = "https://api.iskragen.ru/v1";
const headers = {
Authorization: `Bearer ${process.env.ISKRAGEN_API_KEY}`,
"Content-Type": "application/json",
};
// 1. Ставим задачу в очередь — ответ 202, стоимость уже зарезервирована.
const created = await fetch(`${API_URL}/generations`, {
method: "POST",
headers: { ...headers, "Idempotency-Key": crypto.randomUUID() },
body: JSON.stringify({
modelSlug: "gpt-image-2-text-to-image",
prompt: "Кот-космонавт на фоне Сатурна, фотореализм",
params: { aspect_ratio: "1:1", resolution: "1K" },
}),
});
const { id } = (await created.json()) as { id: string; costRub: number };
// 2. Опрашиваем статус, пока задача не завершится.
let generation;
do {
await new Promise((resolve) => setTimeout(resolve, 3000));
const polled = await fetch(`${API_URL}/generations/${id}`, { headers });
generation = (await polled.json()) as { status: string; outputUrls: string[] };
} while (generation.status === "PENDING" || generation.status === "PROCESSING");
console.log(generation.outputUrls);Документация
Готовы попробовать?
Ключ создаётся в личном кабинете за минуту, оплата — по факту генерации. Цены по типам медиа собраны на странице «Цены».
Получить API-ключ