Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Hubris Images API
version: 1.0.0
description: 'OpenAI-совместимый API российского LLM-агрегатора. Все цены в рублях.
Версии и вывод из эксплуатации (deprecation policy): несовместимые изменения — только в новой версии префикса (`/v2`); об отключении эндпоинта или поля предупреждаем не меньше чем за 90 дней заголовками `Deprecation` (RFC 9745) и `Sunset` (RFC 8594), записью в журнале изменений и письмом. Подробно: https://hubris.pw/docs/api/versioning'
servers:
- url: https://api.hubris.pw
description: Production
tags:
- name: Images
paths:
/v1/images/generations:
post:
operationId: createImage
tags:
- Images
summary: Сгенерировать изображение
description: 'OpenAI Images API-совместимая генерация картинок по текстовому описанию. Картинки приходят в base64 (`b64_json`).
Модели с генерацией изображений: `GET /v1/models?output_modalities=image`. Провайдер-специфичные поля (`aspect_ratio`, `resolution`, `seed`, `input_references`) передаются как есть. Списание — по итоговой стоимости картинок.'
security:
- bearerAuth: []
- oauth2:
- chat:write
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImageGenerationRequest'
responses:
'200':
description: 'Сгенерированные изображения: `{ created, data: [{ b64_json }] }`'
'400':
description: Невалидный запрос
'402':
description: Недостаточно средств
'404':
description: Модель не найдена
'502':
description: Ошибка провайдера / не удалось определить стоимость
'503':
description: Курс валют недоступен
components:
schemas:
ImageGenerationRequest:
type: object
properties:
model:
type: string
minLength: 1
example: black-forest-labs/flux.2-pro
prompt:
type: string
minLength: 1
example: a red cube on a plain white background
n:
type: integer
minimum: 1
maximum: 10
description: Сколько изображений (клиппится по лимиту модели).
example: 1
size:
type: string
description: Размер, напр. "1024x1024" или тир "2K".
example: 1024x1024
response_format:
type: string
enum:
- b64_json
- url
description: MVP всегда отдаёт b64_json.
required:
- model
- prompt
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: sk-gw-...
description: API-ключ в формате `sk-gw-` + 32 hex. Создаётся в дашборде на /keys. Обычный ключ даёт все права, ключ только для чтения не может тратить баланс.
oauth2:
type: oauth2
description: 'OAuth-токен приложения с ограниченными правами. Регистрация клиента — `POST /oauth/clients` (RFC 7591), PKCE S256 обязателен. Метаданные: `/.well-known/oauth-authorization-server`, `/.well-known/oauth-protected-resource`.'
flows:
authorizationCode:
authorizationUrl: https://api.hubris.pw/oauth/authorize
tokenUrl: https://api.hubris.pw/oauth/token
refreshUrl: https://api.hubris.pw/oauth/token
scopes:
chat:write: 'Запросы к моделям от имени пользователя (списывают баланс): чат, Responses, Messages, эмбеддинги, реранкеры, модели решений, изображения, распознавание и озвучка речи, расшифровка видео; коннекторы Битрикс24.'
models:read: Видеть цепочки резервных моделей пользователя в `GET /v1/models`.
balance:read: Видеть остаток баланса пользователя.
videos:write: Создавать видео от имени пользователя (`POST /v1/videos`, резервирует и списывает баланс).
videos:read: Узнавать статус и скачивать видео пользователя (`GET /v1/videos/{id}`, `GET /v1/videos/{id}/content`).
offline_access: Выдать refresh-токен, чтобы подключение жило 90 дней без повторного входа.