Разработчикам

API Ineveo

Все модели каталога из вашего кода. Один баланс, те же цены, что в студии.

1 · Авторизация

Создайте ключ в Настройки > API-ключи. Отправляйте его с каждым запросом как Bearer-токен и храните на своём сервере, не в браузере и не в приложении.

curl
curl https://ineveo.com/api/v1/api/catalog/me \
  -H 'Authorization: Bearer YOUR_API_KEY'

2 · Выберите модель

Выберите модель, чтобы увидеть готовый запрос, собранный из её собственных полей. Обязательные поля заполнены, все необязательные настройки берут значения модели по умолчанию.

Выбранная модельineveo/fast-image/text-to-image
Страница модели →
Поля
ИмяТипОбязательноеПо умолчанию
prompttextда-
aspect_ratio1:1 | 2:1 | 1:2 | 3:1 | 1:3 | 21:9 | ...нет1:1

3 · Запустите генерацию

Один вызов рассчитывает цену именно ваших входных данных и списывает её с баланса. Ответ приходит сразу со статусом queued, а генерация идёт в фоне. Передавайте заголовок Idempotency-Key, чтобы повторный запрос никогда не списал деньги дважды.

curl
curl -X POST https://ineveo.com/api/v1/api/catalog/generations \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "modelId": "ineveo/fast-image/text-to-image",
  "inputs": {
    "prompt": "a lighthouse on a cliff at dusk, soft light"
  }
}'

Сначала узнайте цену (необязательно)

Те же входные данные, оценённые без запуска генерации. Ответ в центах.

curl
curl -X POST https://ineveo.com/api/v1/api/catalog/quote \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"modelId":"ineveo/fast-image/text-to-image","inputs":{"prompt":"a lighthouse on a cliff at dusk, soft light"}}'

4 · Опрос и загрузка

Запрашивайте генерацию каждые несколько секунд, пока статус не станет succeeded, failed или refunded. При успехе скачайте файл по contentUrl тем же ключом. Текстовая модель вместо этого возвращает ответ в textOutput.

curl
curl https://ineveo.com/api/v1/api/catalog/generations/GENERATION_ID \
  -H 'Authorization: Bearer YOUR_API_KEY'
curl
curl https://ineveo.com/api/v1/api/catalog/generations/GENERATION_ID/content \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -o result.png

Эндпоинты

Базовый URL: https://ineveo.com/api/v1/api/catalog

GET/meВаш ключ и баланс
GET/modelsВсе модели
GET/models/detail?id=MODEL_IDОдна модель и её поля
POST/quoteЦена для конкретных входных данных
POST/generationsЗапустить генерацию
GET/generationsВаши последние генерации
GET/generations/IDСтатус одной генерации
GET/generations/ID/contentФайл результата
DELETE/generations/IDУдалить генерацию

Цены и баланс

Генерации через API используют тот же баланс, что и студия, и стоят столько же. Все суммы в API указаны в евроцентах: costCents показывает, сколько списано за генерацию, balanceCents показывает остаток.

Ошибки и лимиты

Ошибки приходят в JSON с кодом и сообщением. 401: ключ не передан, неверен или отозван. 400: поле некорректно (в деталях указано какое). 402: недостаточно средств на балансе. 429: слишком много запросов, снизьте темп. Неудавшийся рендер возвращается автоматически. Точные лимиты опубликуем к запуску ключей. 403 с HTML-страницей: запрос остановлен до API, обычно из-за User-Agent. Стандартный Python-urllib блокируется, укажите свой, например User-Agent: my-app/1.0.