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

Всё, что нужно для работы с Ocelotiq API.

Обзор

Ocelotiq — это платформа, предоставляющая единый OpenAI-совместимый API для доступа к различным AI-моделям: GPT-4o, Claude, Gemini, Llama и другим.

Вам не нужно заводить аккаунты у каждого провайдера — достаточно одного API-ключа Ocelotiq.

Base URL
https://ai.ocelotiq.ru/v1
Формат
application/json

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

  1. Зарегистрируйтесь и подтвердите email.
  2. Перейдите в API-ключи и создайте ключ. Скопируйте его — он показывается один раз.
  3. Убедитесь, что на балансе есть средства (раздел Личный кабинет).
  4. Отправьте первый запрос:
Python — OpenAI SDK
from openai import OpenAI

client = OpenAI(
    base_url="https://ai.ocelotiq.ru/v1",
    api_key="ocelotiq_ваш_ключ",
)

response = client.chat.completions.create(
    model="openai/gpt-4o-mini",
    messages=[{"role": "user", "content": "Привет!"}],
)

print(response.choices[0].message.content)
cURL
curl https://ai.ocelotiq.ru/v1/chat/completions \
  -H "Authorization: Bearer ocelotiq_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Привет!"}
    ]
  }'
Node.js — OpenAI SDK
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://ai.ocelotiq.ru/v1",
  apiKey: "ocelotiq_ваш_ключ",
});

const response = await client.chat.completions.create({
  model: "openai/gpt-4o-mini",
  messages: [{ role: "user", content: "Привет!" }],
});

console.log(response.choices[0].message.content);

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

Все запросы к AI API (ai.ocelotiq.ru) авторизуются через пользовательский API-ключ в заголовке:

Authorization: Bearer ocelotiq_ваш_ключ

API-ключи создаются в личном кабинете. Вы можете создать несколько ключей для разных проектов.

Важно: полный API-ключ показывается только один раз при создании. Сохраните его в надёжное место. Если ключ утерян — отзовите старый и создайте новый.

Chat Completions

POST/v1/chat/completions

Основной эндпоинт для генерации текста. Полностью совместим с форматом OpenAI Chat Completions API.

Параметры запроса

ПараметрТипОписание
modelstringSlug модели, например openai/gpt-4o-mini
messagesarrayМассив сообщений с полями role и content
streambooleanВключить стриминг ответа (SSE). По умолчанию false
temperaturenumberТемпература генерации (0–2). Необязательный
max_tokensnumberМаксимум токенов в ответе. Необязательный
top_pnumberNucleus sampling. Необязательный

Роли сообщений

  • system — системная инструкция для модели
  • user — сообщение пользователя
  • assistant — предыдущий ответ модели (для контекста)
Пример запроса
{
  "model": "openai/gpt-4o-mini",
  "messages": [
    {
      "role": "system",
      "content": "Ты полезный ассистент."
    },
    {
      "role": "user",
      "content": "Объясни что такое API"
    }
  ],
  "temperature": 0.7
}
Пример ответа
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1741540000,
  "model": "openai/gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "API (Application Programming Interface) — это..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 24,
    "completion_tokens": 156,
    "total_tokens": 180
  }
}

Стриминг

Передайте "stream": true в запросе, чтобы получать ответ по частям через Server-Sent Events (SSE).

Формат полностью совместим с OpenAI — каждый чанк приходит как data: {...}, а конец потока обозначается data: [DONE].

Python — стриминг
stream = client.chat.completions.create(
    model="openai/gpt-4o-mini",
    messages=[{"role": "user", "content": "Расскажи историю"}],
    stream=True,
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
Пример SSE-чанка
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Привет"}}]}

data: [DONE]

Поиск в интернете

Некоторые модели поддерживают режим онлайн-поиска — модель автоматически ищет актуальную информацию в интернете перед генерацией ответа.

Как включить

Добавьте суффикс :online к названию модели в параметре model.

Обычный режим: openai/gpt-4o-mini

С поиском: openai/gpt-4o-mini:online

Когда использовать

  • Вопросы о текущих событиях, новостях, погоде
  • Запросы, требующие актуальных данных (цены, курсы, статистика)
  • Поиск информации, которая могла появиться после обучения модели
Обратите внимание: при использовании :online стоимость запроса может быть выше, так как модель дополнительно выполняет поиск в интернете.
Python — поиск в интернете
response = client.chat.completions.create(
    model="openai/gpt-4o-mini:online",
    messages=[{"role": "user", "content": "Какие новости сегодня?"}],
)

print(response.choices[0].message.content)
cURL — поиск в интернете
curl https://ai.ocelotiq.ru/v1/chat/completions \
  -H "Authorization: Bearer ocelotiq_ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini:online",
    "messages": [
      {"role": "user", "content": "Какой курс доллара сейчас?"}
    ]
  }'

Список моделей

GET/v1/models

Возвращает список доступных моделей в формате OpenAI. Не требует аутентификации.

Актуальный каталог моделей с ценами смотрите на странице Модели.

Пример ответа
{
  "object": "list",
  "data": [
    {
      "id": "openai/gpt-4o-mini",
      "object": "model",
      "created": 1741540000,
      "owned_by": "ocelotiq"
    }
  ]
}

Responses API

POST/v1/responses

Совместимый subset OpenAI Responses API. Позволяет использовать SDK, которые работают через /v1/responses вместо /v1/chat/completions.

Поддерживаемые параметры

  • model — slug модели
  • input — строка, объект сообщения или массив
  • instructions — системная инструкция
  • temperature, top_p, max_output_tokens
Ограничения: стриминг (stream: true), previous_response_id, инструменты и reasoning пока не поддержаны в этом эндпоинте.
Python — Responses API
response = client.responses.create(
    model="openai/gpt-4o-mini",
    input="Что такое машинное обучение?",
)

print(response.output_text)

Ошибки

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

{ "error": "описание ошибки" }
КодОписание
400Невалидный JSON, неизвестная модель или некорректные параметры
401Отсутствует или неверный API-ключ
402Недостаточно средств на балансе
403Email не подтверждён
502Нет доступных upstream-ключей — все провайдеры недоступны

Биллинг и цены

Баланс и все расчёты ведутся в копейках (1 рубль = 100 копеек).

Как считается стоимость

  • Текстовые модели — цена за 1 000 000 токенов, отдельно для входных (prompt) и выходных (completion) токенов. Актуальные цены для каждой модели показаны на странице Модели.
  • Модели генерации изображений — фиксированная цена за одну картинку.

Пример расчёта

Модель: openai/gpt-4o-mini

Ввод: 1 500 коп. / 1M токенов, Вывод: 6 000 коп. / 1M токенов

Запрос: 5 000 входных + 2 000 выходных токенов

Стоимость: (5000 / 1M × 1500) + (2000 / 1M × 6000) = 7.5 + 12 = 19.5 коп. ≈ 20 коп.

Отслеживание расходов

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

SDK и клиенты

Ocelotiq совместим с любым OpenAI-совместимым SDK или HTTP-клиентом. Достаточно заменить base_url на https://ai.ocelotiq.ru/v1.

Py

Python — openai

pip install openai
JS

Node.js — openai

npm install openai
LC

LangChain

ChatOpenAI(openai_api_base="https://ai.ocelotiq.ru/v1", ...)
cU

cURL / HTTP

Любой HTTP-клиент с JSON-запросами

Лимиты

  • Максимальное количество API-ключей на аккаунт не ограничено.
  • Запросы ограничены вашим балансом — пока есть средства, можно делать запросы.
  • Максимальный размер тела запроса зависит от модели и её контекстного окна.
  • При возникновении ошибки 502 — все upstream-провайдеры временно недоступны, повторите запрос через несколько секунд.
Автоматический failover: если текущий upstream-ключ провайдера возвращает ошибку (429, 5xx), Ocelotiq автоматически переключается на следующий доступный ключ. Для вас это происходит прозрачно.

Остались вопросы? Пишите на admin@ocelotiq.ru