Source: https://ailoot.ai/docs/ru/api/video-music/
Canonical: https://ailoot.ai/docs/ru/api/video-music/
Language: ru

[API](https://ailoot.ai/docs/ru/) 

# Видео и музыка

[Markdown](https://ailoot.ai/docs/ru/api/video-music/index.md)

Генерация роликов и музыки: запрос создаёт задачу, результат забирается по её идентификатору.

POST`https://api.ailoot.ai/v1/videos`

Видео и музыка

```bash
# Keep the Request ID: support uses it to find your request.
# Create the job once; the loop below only reads its status.
curl --fail-with-body --max-time 120 -D video-create-headers-v1.txt \
  https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"grok-imagine-video-1.5","prompt":"a calm lake","seconds":"8","size":"1280x720"}' \
  -o video-create-v1.json || exit 1
VIDEO_ID=$(jq -er '.id // .request_id' video-create-v1.json) || exit 1
VIDEO_STATUS=""
# This loop reads the original job only. It never resends the creation request.
for ATTEMPT in $(seq 1 60); do
  curl --fail-with-body --max-time 30 \
    "https://api.ailoot.ai/v1/videos/$VIDEO_ID" \
    -H "Authorization: Bearer $AILOOT_API_KEY" \
    -o video-status-v1.json || exit 1
  VIDEO_STATUS=$(jq -r '.status // empty' video-status-v1.json)
  # result_pending_check: true (status stays in_progress): the result is being checked. Stop; never create the job again.
  if jq -e '.result_pending_check == true' video-status-v1.json >/dev/null; then
    cat video-status-v1.json
    echo "The result is being checked. Do not create the job again: check GET /v1/videos/$VIDEO_ID later or contact support with the Request ID." >&2
    exit 1
  fi
  case "$VIDEO_STATUS" in
    done|completed) break ;;
    queued|in_progress|pending|processing) sleep 5 ;;
    # failed or any other status: show it and stop. Never create the job again.
    *) cat video-status-v1.json; exit 1 ;;
  esac
done
case "$VIDEO_STATUS" in
  done|completed) ;;
  *) echo "The job is not finished yet (status: ${VIDEO_STATUS:-none}). Check it later: GET /v1/videos/$VIDEO_ID" >&2; exit 1 ;;
esac
curl --fail-with-body --max-time 120 -L --max-redirs 3 \
  "https://api.ailoot.ai/v1/videos/$VIDEO_ID/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video-v1.mp4
# After a create timeout, check the Request ID in your usage history before running this script again.
```

```bash
curl https://api.ailoot.ai/v1/music/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "google/lyria", "prompt": "Спокойное фортепиано и виолончель, без вокала"}' 
```

Ответ · сокращено

```json
// Идентификатор задачи — в поле id или request_id
{ "id": "…", … }

// Формат зависит от модели: берите идентификатор
// из ответа на создание как есть.
```

## Авторизация

| Параметр | Тип | Обязательность | Описание |
| --- | --- | --- | --- |
| `Authorization` | header | обязательный | Ключ в виде `Bearer sk-…`. Также подойдут заголовки `x-api-key` или `x-goog-api-key`. |

## Видео: тело запроса

| Параметр | Тип | Обязательность | Описание |
| --- | --- | --- | --- |
| `model` | string | обязательный | Модель видео: `google/omni-1.1-flash`, `grok-imagine-video`, `happyhorse-1.1-t2v`, `MiniMax-Hailuo-2.3`, `grok-imagine-video-1.5`, `happyhorse-1.1-r2v`, `grok-imagine-video-1.5-preview`, `happyhorse-1.1-i2v`. |
| `prompt` | string | обязательный | Описание ролика. |
| `duration / seconds` | integer / string | необязательный | Зависит от семейства: Grok 1–15 секунд, MiniMax 6/10 при 768P или 6 при 1080P, HappyHorse 3–15; Google Omni 4/6/8/10. Не переносите поле одного семейства в другое. |
| `resolution / size` | string | необязательный | Grok: 480p/720p/1080p (1080p у video-1.5), либо size 1280x720/720x1280/1920x1080/1080x1920. MiniMax: 768P/1080P. HappyHorse: 480P/720P/1080P. Google Omni: 360p/720p. |
| `image / first_frame_image / image_urls` | string / array | необязательный | Поля исходных изображений зависят от семейства и режима. MiniMax Fast требует first\_frame\_image. HappyHorse t2v — без images, i2v — ровно одно изображение без ratio, r2v — 1–9 изображений. |

Ответ содержит идентификатор задачи (поле `id` или `request_id`). Используйте его как есть, без разбора: формат зависит от модели. Статус и готовый файл:

GET`https://api.ailoot.ai/v1/videos/{id}`

GET`https://api.ailoot.ai/v1/videos/{id}/content`

Те же адреса работают и с префиксом `/v1/videos/generations/{id}`. Статус готовой задачи и набор полей ответа зависят от модели — ориентируйтесь на поле статуса и забирайте файл через `/content`.

## Создание → статус → загрузка

Сохраните ответ создания и его Request ID. Для MiniMax/HappyHorse готовность — `status: completed`, ответ содержит `content_url`, `data[]` и usage. Для Grok — `status: done` с `video.url`. Google Omni возвращает 202 queued, затем in\_progress с Retry-After, completed либо partial/content\_revoked. Не считайте любой 200 готовым видео. Если в ответе статуса есть `result_pending_check: true` (`status` при этом `in_progress`), результат уточняется. Не создавайте задание заново — проверьте его позже через GET /v1/videos/{id} или напишите в поддержку с Request ID.

`/content` может вернуть MP4 напрямую или redirect на подписанный файл. Если ответ содержит несколько результатов в `data[]`, сохраните каждый: оплачиваются все доставленные результаты. Отменить или удалить видеозадачу через API нельзя. Удаление готового файла закрывает доступ к нему, но не отменяет генерацию.

Оплата — за секунды готового видео в выбранном разрешении или за ролик, как указано в каталоге. Полная стоимость резервируется при создании задачи.

## Музыка

POST`https://api.ailoot.ai/v1/music/generations`

| Параметр | Тип | Обязательность | Описание |
| --- | --- | --- | --- |
| `model` | string | обязательный | `google/lyria`, `google/lyria-3-clip-preview`. |
| `prompt` | string | обязательный | Описание трека: жанр, инструменты, настроение. |

В ответе `data[]` — ссылки на готовые клипы. За один запрос модель может вернуть несколько клипов; оплачивается каждый доставленный.

Не отправляйте запрос на видео или музыку повторно, если соединение оборвалось: задача могла уже начаться. Сначала проверьте статус по идентификатору или напишите в поддержку с Request ID.

Остались вопросы? Пришлите Request ID и описание — поможем разобраться.[Написать в поддержку](mailto:support@ailoot.ai)

## Ailoot · Компания и портфель её проектов





Ailoot опирается на накопленный опыт работы, большую клиентскую базу, стабильный сервис и постоянный контроль KPI.





Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.





Этот опыт Ailoot использует для API-доступа к нейросетям в продуктах клиентов, агентах, приложениях и автоматизациях.
