ggaisha
API reference

Docs

OpenAI-совместимый API, фиксированная цена, прозрачный ledger. Базовый URL: https://api.example.com (локально — http://127.0.0.1:8000, текущая beta — https://sandy-shark-0509.a.tuna.free).

Аутентификация

Три типа токенов:

ТокенКтоЗаголовок
sk_...покупательAuthorization: Bearer sk_...
prov_...поставщикAuthorization: Bearer prov_...
admin tokenадминX-Admin-Token: ...

Для браузерной панели используйте POST /v1/auth/session — он ставит HttpOnly-cookie.

Пополнение

В production включите MARKET_PAYMENT_PROVIDER=yookassa или stripe. Для ЮKassa укажите shopId, секретный ключ и webhook:

https://api.example.com/v1/payments/yookassa/webhook

В локальном режиме доступен POST /v1/buyer/topup (mock) и POST /v1/payments/mock/intent + /confirm.

Быстрый старт

# 1. Регистрация покупателя
curl -s -X POST http://127.0.0.1:8000/v1/buyer/register \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com"}'

# 2. Пополнение (local mock)
curl -s -X POST http://127.0.0.1:8000/v1/buyer/topup \
  -H 'Authorization: Bearer sk_...' \
  -H 'Content-Type: application/json' \
  -d '{"amount_usd":5}'

# 3. Запрос
curl -s -X POST http://127.0.0.1:8000/v1/chat/completions \
  -H 'Authorization: Bearer sk_...' \
  -H 'Content-Type: application/json' \
  -d '{
    "model":"qwen2.5-0.5b",
    "messages":[{"role":"user","content":"Say hello"}],
    "max_tokens":32,
    "stream":false
  }'

Ключевые эндпоинты

МетодПутьЧто делает
POST/v1/auth/sessionсоздать браузерную сессию по токену
GET/v1/auth/meтекущая роль и субъект
POST/v1/auth/logoutвыйти
POST/v1/buyer/registerрегистрация покупателя
POST/v1/buyer/topupmock-пополнение
GET/v1/buyer/balanceбаланс
GET/v1/buyer/usageusage records
GET/v1/buyer/invoiceинвойс
GET/v1/modelsпубличный каталог и цены
POST/v1/chat/completionsOpenAI-совместимый chat
POST/v1/seller/registerрегистрация поставщика
POST/v1/seller/offersсоздать/обновить оффер
GET/v1/seller/earningspayable / holdback
POST/v1/seller/payouts/requestзапросить выплату
GET/v1/admin/statsGMV, margin, counts
GET/v1/admin/ledgerledger entries
POST/v1/admin/healthcheckпрогнать healthcheck

Ошибки

КодHTTPКогда
price_ceiling_exceeded422retail выше max_price
max_cost_too_low422max_cost_usd не покрывает даже input
insufficient_balance402не хватает баланса на reserve
no_capacity503нет healthy-провайдера
rate_limit_exceeded429превышен RPM
idempotency_conflict422тот же ключ с другим телом
invalid_api_key401ключ неверный или отозван

Streaming

При stream: true ответ идёт как SSE:

data: {"choices":[{"delta":{"content":"Hello"}}]}
data: {"choices":[{"delta":{"content":"!"}}]}
data: [DONE]

Брокер фиксирует первый содержательный чанк как точку commit: после него failover уже не делается.

Цена и биллинг

Скачать OpenAPI JSON