API генерации
Как отправить запрос на генерацию, получить прогресс и финальный результат. Кнопка выше скопирует полный markdown-reference — вставь в Cursor / Claude / ChatGPT, и AI-агент сам подключит наше API к твоему проекту.
Аутентификация
Серверные интеграции используют API-ключ — создаётся в /keys (префикс na_live_…). Заголовок Authorization: Bearer na_live_… или x-api-key: na_live_….
curl https://api.neuroartist.ru/me/balance \
-H "Authorization: Bearer na_live_YOUR_KEY"Генерация
Два режима: queue (async, рекомендуется) и run (sync, только для быстрых моделей). Оба принимают одинаковый input-payload — отличается модель доставки результата.
{modelId} — идентификатор из каталога, например nano-banana-pro.
Queue (async)
Ставит задачу в очередь и сразу возвращает {request_id, status_url, progress_url}. Баланс списывается атомарно до отправки к провайдеру; при ошибке — автоматический возврат.
curl -X POST https://api.neuroartist.ru/queue/nano-banana-pro \
-H "Authorization: Bearer na_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "котик в шляпе, фотореализм, 4K"}'Polling-вариант: возвращает {status: "IN_QUEUE" | "IN_PROGRESS" | "COMPLETED" | "FAILED"}.
SSE-стрим — real-time lifecycle. События: queued, in_progress, uploading_assets, reconciling, completed, failed. Лимит — 5 одновременных стримов на пользователя (overflow → 429 с Retry-After).
curl -N https://api.neuroartist.ru/queue/nano-banana-pro/requests/REQ_ID/progress/stream \
-H "Authorization: Bearer na_live_YOUR_KEY" \
-H "Accept: text/event-stream"Финальный результат — payload с URL артефактов (уже после re-hosting в S3). Доступен после status=COMPLETED.
Отменяет in-flight задачу. Неиспользованные кредиты возвращаются.
Run (sync)
Блокирующий вариант: ждёт завершения и возвращает готовый payload. Для быстрых моделей (несколько секунд). Для видео-генерации — только queue-mode.
Коды ошибок
Все ошибки — JSON {error: string, message: string}. Ключевые коды, релевантные генерации:
| HTTP | error | Причина |
|---|---|---|
| 401 | unauthorized | Нет/невалидный ключ |
| 402 | insufficient_balance | Недостаточно кредитов для генерации |
| 404 | not_found | Модель или request_id не найден |
| 429 | rate_limit_exceeded | Лимит ключа или SSE-слотов (Retry-After) |
| 503 | provider_error | Circuit breaker провайдера — повтор через Retry-After |