> ## Documentation Index
> Fetch the complete documentation index at: https://nixai.ru/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Проверка статуса

> Возвращает состояние задачи по `task_id`. Опрос возможен только тем
API-ключом, которым задача была создана. Рекомендуемый интервал опроса —
5–10 секунд. Завершающие статусы: `completed`, `rejected`, `failed`.


Опрашивайте эндпоинт, пока `status` не станет `completed`, `rejected` или `failed`. Рекомендуемый интервал опроса — 5–10 секунд. Генерация обычно занимает несколько минут; длинные ролики в 1080p могут генерироваться дольше.

### Статусы

| Статус | Значение |
| - | - |
| `processing` | Задача выполняется. |
| `completed` | Видео готово, ссылка в `video_url`. |
| `rejected` | Запрос не прошёл проверку параметров или модерацию. Причина в `error` и `message`. Не оплачивается. |
| `failed` | Видео не удалось сгенерировать по внутренней причине, `error: "UnknownError"`. Запрос можно повторить. Не оплачивается. |

Если передать `output_format: "base64"`, поле `video_url` в ответе для завершённой задачи будет содержать строку base64 вместо ссылки.

#### Ответ: в процессе

```json theme={null}
{
  "task_id": "b22c9ae2-0b55-4398-88df-0191aae664f0",
  "status": "processing"
}
```

#### Ответ: готово

```json theme={null}
{
  "task_id": "b22c9ae2-0b55-4398-88df-0191aae664f0",
  "status": "completed",
  "video_url": "https://cdn.nixai.ru/videos/b22c9ae2.mp4"
}
```

#### Ответ: отклонено

```json theme={null}
{
  "task_id": "b22c9ae2-0b55-4398-88df-0191aae664f0",
  "status": "rejected",
  "error": "BadRequest",
  "message": "Reference videos plus output duration must not exceed 30s."
}
```

Задача, которую запрашивают чужим API-ключом, не находится: опрашивать её можно только тем ключом, которым она была создана.

## Ошибки

Ошибки выполнения задачи возвращаются в ответе `/v1/videos/fetch` в полях `error` и `message`.

| `error` | Статус задачи | Причина |
| - | - | - |
| `BadRequest` | `rejected` | Параметры запроса не прошли проверку. Повтор без исправления запроса завершится той же ошибкой. |
| `ContentRejected` | `rejected` | Промпт или материалы отклонены модерацией. |
| `UnknownError` | `failed` | Видео не удалось сгенерировать по внутренней причине. Запрос можно повторить. |

### Сообщения `BadRequest`

| `message` | Что исправить |
| - | - |
| `Prompt is required.` | Передайте непустой `prompt`. |
| `Resolution must be one of 480p, 720p, 1080p.` | Укажите допустимое значение `size`. |
| `Aspect ratio must be one of 16:9, 9:16, 4:3, 3:4, 1:1.` | Укажите допустимое значение `aspect_ratio` или не передавайте его. |
| `Duration must be an integer.` | Передайте `duration` целым числом. |
| `Duration must be between 2s and 30s.` | Укажите `duration` от 2 до 30. |
| `images must be a list of URLs.` | Передайте массив строк, а не одну строку. То же для `videos` и `audios`. |
| `Up to 10 reference images are allowed.` | Сократите число изображений. Для видео и аудио предел — 5. |
| `Total duration of reference videos must not exceed 15s.` | Сократите суммарную длину входных видео. То же для `audios`. |
| `Reference videos plus output duration must not exceed 30s.` | Уменьшите `duration` или длину входных видео. |
| `Duration of reference video #N could not be read.` | Файл №N повреждён или не является медиафайлом. То же для аудио. |
| `Reference video #N: expected video, got audio.` | В `videos` передан файл без видеодорожки. |
| `A reference file could not be read. Check that the URL is publicly accessible and points to a media file.` | Ссылка недоступна или ведёт не на медиафайл. |
| `Timed out reading a reference file. Check that the URL is publicly accessible.` | Сервер с файлом не ответил вовремя. |

### Примеры

#### Проверка статуса

```bash theme={null}
curl https://api.nixai.ru/v1/videos/fetch \
  -H "Authorization: Bearer $NIXAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "wan-3",
    "id": "b22c9ae2-0b55-4398-88df-0191aae664f0"
  }'
```

#### Python: создание и ожидание результата

```python theme={null}
import os
import time

import requests

API = "https://api.nixai.ru/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['NIXAI_API_KEY']}"}

task = requests.post(f"{API}/videos/generations", headers=HEADERS, json={
    "model": "wan-3",
    "prompt": "Котёнок бежит по крыше под луной, неоновые огни города вдали",
    "duration": 5,
    "size": "720p",
}).json()

task_id = task["task_id"]

while True:
    time.sleep(10)
    result = requests.post(f"{API}/videos/fetch", headers=HEADERS, json={
        "model": "wan-3",
        "id": task_id,
    }).json()

    if result["status"] == "completed":
        print(result["video_url"])
        break

    if result["status"] in ("rejected", "failed"):
        raise RuntimeError(f"{result.get('error')}: {result.get('message')}")
```


## API Specification

The full API specification for this endpoint is available in the [documentation index](https://nixai.ru/docs/llms.txt).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.