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

# Статус генерации

> Проверить статус асинхронной генерации

Опрос статуса асинхронной генерации. Видео, музыка и некоторые модели изображений работают асинхронно — они сразу возвращают ID генерации, и вы опрашиваете до завершения.

<ParamField path="generation_id" type="integer" required>
  Целочисленный ID, возвращённый при `POST /api/v2/generate`.
</ParamField>

## Запрос

```bash theme={null}
curl https://elumenta.ru/api/v2/generate/18502 \
  -H "Authorization: Bearer nb_ВАШ_КЛЮЧ"
```

## Ответы

**В процессе:**

```json theme={null}
{
  "id": 18502,
  "status": "pending",
  "model_slug": "kling-v2.1",
  "result_url": null,
  "tokens_spent": 0
}
```

**Завершено:**

```json theme={null}
{
  "id": 18502,
  "status": "completed",
  "model_slug": "kling-v2.1",
  "result_url": "https://storage.elumenta.ru/generations/18502.mp4",
  "tokens_spent": 44,
  "processing_ms": 67420
}
```

**Ошибка (токены не списываются):**

```json theme={null}
{
  "id": 18503,
  "status": "failed",
  "error": "Provider error: content policy violation",
  "tokens_spent": 0
}
```

## Паттерн опроса

```python theme={null}
import requests, time

def ждать_результат(gen_id: int, api_key: str, interval: int = 5) -> dict:
    headers = {"Authorization": f"Bearer {api_key}"}
    while True:
        res = requests.get(
            f"https://elumenta.ru/api/v2/generate/{gen_id}",
            headers=headers
        ).json()
        if res["status"] in ("completed", "failed"):
            return res
        time.sleep(interval)

result = ждать_результат(18502, "nb_ВАШ_КЛЮЧ")
if result["status"] == "completed":
    print(f"Готово: {result['result_url']}")
else:
    print(f"Ошибка: {result['error']}")
```

<Tip>
  Токены списываются только при `status: completed`. При ошибке генерации баланс не изменяется.
</Tip>

## Примерное время ожидания

| Модель           | Время      |
| ---------------- | ---------- |
| `luma-flash2`    | 20–35 сек  |
| `kling-v2.1`     | 45–90 сек  |
| `kling-v2.1-pro` | 60–90 сек  |
| `luma-ray2`      | 60–120 сек |
| `mj-video-480p`  | 60–120 сек |
| `mj-video-720p`  | 90–180 сек |
