API v1

API Документация

REST API для доступа к 65+ нейросетям. SSE-стриминг, подписка, JWT авторизация.

Getting Started

Base URL для всех запросов:

url
https://stoneai.ru

Все запросы используют JSON. Ответы чата — Server-Sent Events (SSE). Авторизация через JWT токен в заголовке Authorization: Bearer <token>.

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

  1. Зарегистрируйтесь: POST /api/auth/register
  2. Получите JWT токен из ответа
  3. Отправьте сообщение: POST /api/chat

Авторизация

Регистрация нового пользователя:

curl
curl -X POST https://stoneai.ru/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "mypassword"}'

Ответ содержит JWT токен:

json
{
  "status": "ok",
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": {
    "id": 42,
    "email": "user@example.com",
    "balance_usd": 0.0
  }
}

Логин:

curl
curl -X POST https://stoneai.ru/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "password": "mypassword"}'

Также поддерживается OAuth: POST /api/auth/google и POST /api/auth/yandex.

POST /api/chat

Стриминг ответа от AI-модели через SSE.

ПараметрТипОписание
model_idstringID модели (см. /api/models). По умолчанию: gpt-4o-mini
messagesarrayМассив сообщений [{role, content}]
system_promptstring?Системный промпт (только для платных пользователей)

Пример с curl:

curl
curl -N -X POST https://stoneai.ru/api/chat \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "model_id": "gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Привет! Что такое AI?"}
    ]
  }'

Пример на Python:

python
import httpx

token = "YOUR_JWT_TOKEN"
url = "https://stoneai.ru/api/chat"

with httpx.stream("POST", url,
    headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
    json={
        "model_id": "claude-haiku-4.5",
        "messages": [{"role": "user", "content": "Напиши хайку про AI"}]
    }
) as response:
    for line in response.iter_lines():
        if line.startswith("data: ") and line != "data: [DONE]":
            print(line[6:])

SSE-ответ содержит чанки контента, затем usage и billing:

json
data: {"choices": [{"delta": {"content": "Привет"}}]}
data: {"choices": [{"delta": {"content": "! AI — это..."}}]}
data: {"usage": {"tokens_in": 15, "tokens_out": 82}}
data: {"billing": {"tokens_in": 15, "tokens_out": 82, "plan": "max", "requests_left": 1842}}
data: [DONE]

GET /api/models

Список всех доступных моделей с метаданными и ценами.

curl
curl https://stoneai.ru/api/models
# Фильтры:
curl "https://stoneai.ru/api/models?tier=lite"        # только бесплатные
curl "https://stoneai.ru/api/models?company=OpenAI"   # по провайдеру
curl "https://stoneai.ru/api/models?category=image"   # по категории

Ответ:

json
{
  "models": [
    {
      "id": "gpt-4o-mini",
      "name": "GPT-4o mini",
      "company": "OpenAI",
      "tier": "lite",
      "category": "chat",
      "price_weighted": 2.50,
      "price_input": 0.90,
      "price_output": 3.60,
      "context_length": "128K"
    },
    ...
  ]
}
ФильтрЗначенияОписание
tierlite | premiumlite = бесплатные (5 моделей), premium = платные
companyOpenAI, Anthropic, Google...15 провайдеров
categorychat | image | reason | search | codeТип модели

POST /api/chat/upload

Загрузка файлов (изображения, PDF) для использования в чате.

curl
curl -X POST https://stoneai.ru/api/chat/upload \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "file=@document.pdf"

Ответ:

json
{
  "file_id": "a1b2c3d4",
  "file_name": "document.pdf",
  "file_type": "pdf",
  "mime_type": "application/pdf",
  "size": 245000,
  "content": "Извлечённый текст из PDF..."
}

Для изображений content — base64 data URL. Для PDF — извлечённый текст. Максимум 10MB.

Биллинг

Stone AI: Pay-per-Use (баланс кабинета для инструментов, без подписки) или подписки Start (990₽/мес), Pro (1 690₽/мес), Elite (3 990₽/мес). Лимиты запросов зависят от тарифа. Баланс кабинета можно перенести в подписку.

API доступен на тарифе Elite. Дорогие модели тратят больше единиц лимита (см. ниже).

МодельКатегорияВес запроса
GPT-4o mini, Gemini Flash, DeepSeek V3Fast (Free)×1
Mistral LargeFast×3
GPT-5.1, Claude Sonnet 4.5, Grok 3Premium×2
Claude Opus 4.5Opus (Pro+)×5
Nano Banana ProImage×5
GPT-5 ImageImage×3
ПрочиеЛюбая×1

Видео считается отдельной системой видео-поинтов: дешёвое видео = 1 поинт, премиум (1080P / 10 сек) = 2-4 поинта.

Лимиты

ТарифFast/деньPremium/недOpus/недКартинкиВидео-поинты/мес
Pay-per-Use102/день2 пробных2 пробных (lifetime)
Start (990₽)203/день60/мес13 + триалы
Pro (1 690₽)5028735/нед33
Elite (3 990₽)150841470/нед80

Лимиты учитывают вес моделей. Один Claude Opus = 5 единиц premium. Один nano-banana-pro = 5 картинок.

ПараметрЗначение
MAX_TOKENS_LITE4096 (макс. output для бесплатных)
MAX_TOKENS_PAID8192 (макс. output для платных)
Pro file upload10MB
Rate limitЛимитируется тарифом подписки

Коды ошибок

КодОписаниеРешение
401Unauthorized — невалидный или отсутствующий токенПроверьте Authorization header
402Payment Required — недостаточно прав для premium моделиВыберите подходящий тариф на /pricing
429Too Many Requests — лимит запросов исчерпанПодождите до завтра или выберите более высокий тариф
400Bad Request — неверные параметрыПроверьте model_id и messages
503Service Unavailable — сервис оплаты временно недоступенПопробуйте позже

Ошибки возвращаются в формате:

json
{
  "detail": {
    "error": "Лимит запросов исчерпан. Выберите более высокий тариф.",
    "plan": "free",
    "tier": "premium",
    "used_today": 15,
    "limit": 15,
    "upgrade_url": "/pricing"
  }
}