Перейти к содержимому

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)

POST/queue/{modelId}

Ставит задачу в очередь и сразу возвращает {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"}'
GET/queue/{modelId}/requests/{requestId}/status

Polling-вариант: возвращает {status: "IN_QUEUE" | "IN_PROGRESS" | "COMPLETED" | "FAILED"}.

GET/queue/{modelId}/requests/{requestId}/progress/stream

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"
GET/queue/{modelId}/requests/{requestId}

Финальный результат — payload с URL артефактов (уже после re-hosting в S3). Доступен после status=COMPLETED.

PUT/queue/{modelId}/requests/{requestId}/cancel

Отменяет in-flight задачу. Неиспользованные кредиты возвращаются.

Run (sync)

POST/run/{modelId}

Блокирующий вариант: ждёт завершения и возвращает готовый payload. Для быстрых моделей (несколько секунд). Для видео-генерации — только queue-mode.

Коды ошибок

Все ошибки — JSON {error: string, message: string}. Ключевые коды, релевантные генерации:

HTTPerrorПричина
401unauthorizedНет/невалидный ключ
402insufficient_balanceНедостаточно кредитов для генерации
404not_foundМодель или request_id не найден
429rate_limit_exceededЛимит ключа или SSE-слотов (Retry-After)
503provider_errorCircuit breaker провайдера — повтор через Retry-After