Справочник API
Результат генерации
GET /v1/requests/{request_id} — забрать готовый результат со ссылками на изображение, видео или аудио; пока задача выполняется, API отвечает 202.
Заберите готовый результат генерации со ссылками на медиа. Пока задача в очереди или выполняется, запрос отвечает кодом 202 — повторите его позже.
Песочница
Для проб — тестовый ключ
В форму ниже вставляйте ключ clipia_test_…: он не списывает кредиты и не вызывает модели, а ответ приходит в том же формате. Форма запоминает ключ в этом браузере, поэтому боевой clipia_live_… — серверный секрет — в неё не вводите. Подробнее — «Тестовый режим».
АвторизацияBearer <токен>API-ключ в заголовке Authorization со схемой Bearer — основной
способ. Сгенерированные клиенты добавляют префикс Bearer сами, а в
плейграунде поле уже содержит его: допишите ключ после него. Плейграунд
запоминает ключ в этом браузере, поэтому для проб берите тестовый:
Authorization: Bearer <CLIPIA_API_KEY>Тот же ключ принимается и со схемой Key (Authorization: Key <ключ>,
слово Key — в любом регистре), и в отдельном заголовке X-Api-Key
(схема apiKeyHeader) — выбирайте удобную форму, сервер различает их сам.
Ключ создаётся в консоли разработчика (clipia.ai/developer, вкладка
«API-ключи») и показывается один раз. Формат: clipia_live_… (боевой), clipia_test_… (песочница).
Sandbox / тестовый режим. Ключ с префиксом clipia_test_… работает в
песочнице: submit не списывает кредиты и не запускает реальную
генерацию — он мгновенно возвращает status: COMPLETED с детерминированным
mock-результатом (фиксированный sample-ассет на media.clipia.ai). Поле
cost показывает расчётную стоимость, но она не списывается. Вебхуки
приходят тем же подписанным механизмом (HMAC-SHA256). Режим предназначен
для отладки интеграции до подключения боевого ключа.
request_id*stringИдентификатор запроса генерации, полученный при submit.
uuidТерминальный результат. Для COMPLETED содержит output;
для FAILED — санитизированный error.
application/json- response
request_id*stringИдентификатор запроса генерации.
uuidstatus*GenerationStatusСтатус генерации в очереди. CANCELED — терминальный: генерацию можно отменить вне публичного API (например, из веб-интерфейса Clipia); cancel-эндпоинта в публичном API нет, но status может вернуть CANCELED, поэтому клиент обязан считать его финальным.
"IN_QUEUE""IN_PROGRESS""COMPLETED""FAILED""CANCELED"model*stringSlug модели, выполнившей генерацию.
output*Результат генерации. Для изображений — images: [{ url, original_url? }]
(url — оптимизированный WebP для показа; original_url — полноразмерный
оригинал PNG/JPG для скачивания, когда доступен); для видео —
video: { url, original_url?, thumbnail_url? }
(thumbnail_url — статичный кадр-обложка от провайдера, доступен не
для всех моделей); для аудио (TTS, музыка) — audio: { url, format? } и
audios: [{ url, format? }]. Музыкальные модели отдают несколько вариантов
трека за один запрос: audios содержит их все, audio — первый из них
(первый элемент audios совпадает с audio). Все медиа-URL
ведут на CDN media.clipia.ai.
Полей width, height и duration в ответе нет: размеры и
длительность читайте из самого файла. original_url и thumbnail_url
заполняются не всегда — считайте их опциональными.
cost*numberСтоимость генерации в кредитах. Пока запрос в работе — резерв; после завершения — фактически списанное. При FAILED и CANCELED резерв возвращается, поле равно 0.
created_at*stringВремя создания запроса (ISO 8601).
date-timecompleted_at?stringВремя завершения генерации (ISO 8601).
date-timeerror?Информация об ошибке (только при status = FAILED). Санитизирована.
warnings?array<>Предупреждения о ходе исполнения запроса: сервер отступил от параметров
input, чтобы запрос завершился. Сейчас причина одна — audio_dropped
(ролик создаётся без звука). Поле присутствует, только когда есть о чём
предупредить, и не приходит при FAILED и CANCELED. На приёме запроса
эти предупреждения ещё неизвестны, поэтому в ответе на создание их нет.
items <= 20curl -X GET "https://example.com/v1/requests/764cabcf-b745-4b3e-ae38-1200304cf45b"{ "request_id": "764cabcf-b745-4b3e-ae38-1200304cf45b", "status": "COMPLETED", "model": "nano-banana-2", "output": { "images": [ { "url": "https://media.clipia.ai/works/8f3a1c7e.webp", "original_url": "https://media.clipia.ai/works/8f3a1c7e.png" } ] }, "cost": 12, "created_at": "2026-06-01T12:00:00Z", "completed_at": "2026-06-01T12:00:18Z"}GET /v1/requests/:id возвращает результат с полем output и кодом 200, когда статус терминальный (COMPLETED, FAILED или CANCELED). Все ссылки ведут на CDN media.clipia.ai. Отдельное право ключа не требуется.
/v1/requests/:idЗапрос
Свойство
Тип
curl https://api.clipia.ai/v1/requests/764cabcf-b745-4b3e-ae38-1200304cf45b \
-H "Authorization: Bearer $CLIPIA_KEY"Изображение
{
"request_id": "764cabcf-b745-4b3e-ae38-1200304cf45b",
"status": "COMPLETED",
"model": "nano-banana-2",
"output": {
"images": [
{
"url": "https://media.clipia.ai/....webp",
"original_url": "https://media.clipia.ai/....png"
}
]
},
"cost": 12,
"created_at": "2026-10-09T12:00:00Z",
"completed_at": "2026-10-09T12:00:18Z"
}output.images — массив. url — оптимизированная копия в WebP для показа, original_url — исходный файл полного качества. original_url есть только у первого изображения в массиве.
Видео
{
"request_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"status": "COMPLETED",
"model": "seedance-2-fast-i2v",
"output": {
"video": {
"url": "https://media.clipia.ai/....mp4",
"original_url": "https://media.clipia.ai/....mp4",
"thumbnail_url": "https://media.clipia.ai/....webp"
}
},
"cost": 40,
"created_at": "2026-10-09T12:00:00Z",
"completed_at": "2026-10-09T12:00:42Z"
}output.video — объект с url. Поля original_url и thumbnail_url (кадр-превью) могут отсутствовать.
Аудио
{
"output": {
"audio": { "url": "https://media.clipia.ai/....mp3", "format": "mp3" },
"audios": [
{ "url": "https://media.clipia.ai/....mp3", "format": "mp3" },
{ "url": "https://media.clipia.ai/...-2.mp3", "format": "mp3" }
]
}
}output.audio — первый трек, output.audios — все варианты: музыкальные модели отдают несколько треков за один запуск, у озвучки вариант один. Первый элемент audios совпадает с audio. Поле format — формат файла по расширению ссылки (mp3, wav); его может не быть.
Размеров и длительности в ответе нет
В ответе нет полей width, height и duration — ни в боевом, ни в тестовом режиме. Если они нужны, прочитайте их из самого файла.
Поля ответа
Свойство
Тип
Предупреждения
Если звук был включён, но звуковая дорожка не прошла проверку безопасности модели, сервер один раз повторяет генерацию без звука. Запрос завершается COMPLETED, а ответ дополнительно содержит массив warnings:
{
"status": "COMPLETED",
"output": { "video": { "url": "https://media.clipia.ai/....mp4" } },
"warnings": [
{
"code": "audio_dropped",
"parameter": "generate_audio",
"message": "The audio track did not pass the model's safety check, so the video is generated without sound. The price of the request is unchanged."
}
]
}Стоимость запроса при этом не меняется. Поля warnings нет, когда предупреждать не о чем, а также у FAILED и CANCELED. Тот же массив приходит в ответе 202 и в статусе запроса, пока ролик без звука ещё создаётся. Сейчас это единственная причина; незнакомый code читайте как «параметр не применён».
Коды ошибки генерации
При status: "FAILED" объект error несёт код из закрытого словаря — по нему клиент решает, повторять ли запрос. Сообщение error.message на английском: готовая фраза о причине, если сервер её опознал, иначе нейтральный текст по коду, обычно Generation failed. Please retry or contact support.; имён внутренних систем в нём нет. Кредиты за FAILED возвращаются всегда.
error.code | Смысл | Повтор |
|---|---|---|
generation_failed | общая ошибка генерации, значение по умолчанию | можно |
content_moderated | запрос отклонён модерацией контента | с тем же вводом бесполезен |
invalid_input | ввод не принят моделью: размер, формат, параметры | исправьте запрос |
model_unavailable | модель временно недоступна | позже |
timeout | генерация не уложилась во время | можно |
rate_limited | модель перегружена | с паузой |
insufficient_credits | не хватило кредитов на момент списания | после пополнения |
result_unavailable | результат получен, но не сохранён или недоступен | можно |
empty_result | модель вернула пустой результат | можно или измените запрос |
canceled | отменено пользователем или системой | — |
Тот же словарь использует вебхук об ошибке. Список может пополняться: незнакомый код обрабатывайте как generation_failed.
Коды ответа
| HTTP | Когда | Тело |
|---|---|---|
200 | COMPLETED | результат с output |
200 | FAILED | error: { code, message }, code из словаря выше, по умолчанию generation_failed; cost: 0 |
200 | CANCELED | терминальный ответ, output обычно пустой, cost: 0 |
202 | IN_QUEUE / IN_PROGRESS | { request_id, status } — повторите позже |
400 | некорректный идентификатор | message: invalid_request_id |
404 | запроса нет | code: not_found, message: request_not_found |
202 — это нормально
202 приходит, только пока задача не завершена. FAILED и CANCELED — финальные ответы с кодом 200. При FAILED зарезервированные кредиты возвращаются полностью. В error.code чаще всего generation_failed (коды строчные, в snake_case), error.message на английском: готовая фраза о причине, если сервер её опознал, иначе нейтральный текст по коду; внутренних деталей в нём нет. Ветвите логику по status и error.code, а не по тексту сообщения.
Статус запроса
GET /v1/requests/{request_id}/status — лёгкий опрос статуса и прогресса генерации по request_id; отдельное право ключа для него не требуется.
Каталог моделей
GET /v1/models — список моделей Clipia для изображений, видео и аудио с точными slug, схемой параметров и ценой, включая slug с косой чертой.