Опрос статуса асинхронной генерации. Видео, музыка и некоторые модели изображений работают асинхронно — они сразу возвращают ID генерации, и вы опрашиваете до завершения.
Целочисленный ID, возвращённый при POST /api/v2/generate.
Запрос
curl https://neuralbox.top/api/v2/generate/18502 \
-H "Authorization: Bearer nb_ВАШ_КЛЮЧ"
Ответы
В процессе:
{
"id": 18502,
"status": "pending",
"model_slug": "kling-v2.1",
"result_url": null,
"tokens_spent": 0
}
Завершено:
{
"id": 18502,
"status": "completed",
"model_slug": "kling-v2.1",
"result_url": "https://storage.neuralbox.top/generations/18502.mp4",
"tokens_spent": 44,
"processing_ms": 67420
}
Ошибка (токены не списываются):
{
"id": 18503,
"status": "failed",
"error": "Provider error: content policy violation",
"tokens_spent": 0
}
Паттерн опроса
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://neuralbox.top/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']}")
Токены списываются только при status: completed. При ошибке генерации баланс не изменяется.
Примерное время ожидания
| Модель | Время |
|---|
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 сек |