МенюСправочник API

Справочник API

API следует формату OpenAI по адресу https://ai.geraikita.com/v1 и формату Anthropic по адресу https://ai.geraikita.com. Все тела запросов и ответов — JSON (UTF-8).

ЭндпоинтНазначение
POST /v1/chat/completionsChat в формате OpenAI (stream и без stream)
POST /v1/messagesMessages в формате Anthropic (stream и без stream)
POST /v1/messages/count_tokensПодсчёт токенов промпта в формате Anthropic — бесплатно
GET /v1/modelsСписок доступных моделей
POST /v1/images/generationsСоздание изображений по текстовому промпту, оплата за изображение — см. Генерация изображений
Сейчас доступны только перечисленные эндпоинты. Другие эндпоинты OpenAI (например, /v1/responses, /v1/embeddings) пока не поддерживаются.

Chat completions (OpenAI)

POSThttps://ai.geraikita.com/v1/chat/completions

Генерирует ответ по списку сообщений. Заголовки: Authorization: Bearer gk-… и Content-Type: application/json.

Тело запроса

ПараметрТипОписание
modelstringОбязательно. Id модели точно как в списке моделей, без префикса.
messagesarrayОбязательно. Упорядоченный массив сообщений; каждое содержит role и content. Минимум одно сообщение.
streambooleantrue, чтобы получать ответ по частям через Server-Sent Events.
max_tokensintegerЛимит токенов ответа. Если баланса не хватает на запрошенное значение, сервер может автоматически его снизить.
temperature, top_p, stop—Передаётся модели как есть. Поддержка и диапазон значений зависят от модели.
tools, tool_choicearray / objectВызов функций (tool calling) в формате OpenAI, передаётся моделям, которые его поддерживают.

Пример запроса

curl https://ai.geraikita.com/v1/chat/completions \
  -H "Authorization: Bearer gk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Привет!"}]
  }'

Пример ответа

200 OK · application/json
{
  "id": "chatcmpl-…",
  "object": "chat.completion",
  "model": "claude-sonnet-5",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "…" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 12, "completion_tokens": 9, "total_tokens": 21 }
}

Объект usage содержит количество токенов, на основе которого выставляется счёт — см. Цены и оплата.

Messages (Anthropic)

POSThttps://ai.geraikita.com/v1/messages

Нативный эндпоинт Anthropic для SDK Anthropic и Claude Code CLI. Base URL в клиенте = https://ai.geraikita.com (без /v1).

Заголовки

ЗаголовокЗначениеОписание
x-api-keygk-…Ваш API-ключ gk- (Authorization: Bearer тоже принимается).
anthropic-version2023-06-01Версия API Anthropic; SDK отправляет автоматически.
content-typeapplication/json—

Тело запроса

ПараметрТипОписание
modelstringОбязательно. Id модели точно как в списке моделей, без префикса.
messagesarrayОбязательно. Массив сообщений в формате Anthropic, минимум одно сообщение.
max_tokensintegerЛимит токенов ответа (обязателен в формате Anthropic).
systemstring / arrayСистемная инструкция (необязательно).
streambooleantrue, чтобы получать ответ по частям через Server-Sent Events.

Пример запроса

curl https://ai.geraikita.com/v1/messages \
  -H "x-api-key: gk-xxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Привет!"}]
  }'

Нужно посчитать токены до отправки? POST https://ai.geraikita.com/v1/messages/count_tokens принимает то же тело и не тарифицируется.

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

GEThttps://ai.geraikita.com/v1/models

Возвращает список id моделей, которые можно передать в поле model. При вызове с ключом, ограниченным allowlist, показываются только разрешённые модели. С заголовком x-api-key или anthropic-version ответ приходит в формате Anthropic.

curl https://ai.geraikita.com/v1/models \
  -H "Authorization: Bearer gk-xxxxxxxx"

Streaming (SSE)

С "stream": true ответ отправляется как text/event-stream. Сервер сразу отправляет заголовки, а затем, пока ждёт, каждые 10 секунд — строку-комментарий keepalive : ka, чтобы соединение не считалось мёртвым. Установите общий timeout приложения не менее 300 секунд.

text/event-stream
data: {"choices":[{"index":0,"delta":{"content":"Ha"}}]}

: ka

data: {"choices":[{"index":0,"delta":{"content":"lo!"}}]}

data: [DONE]
  • Формат OpenAI: каждая часть — строка data: с JSON, содержащим choices[].delta; в конце — data: [DONE].
  • Формат Anthropic: события message_start, content_block_delta, …, message_stop, как в API Anthropic.
  • Игнорируйте строки, начинающиеся с двоеточия (:), — это keepalive, а не данные. Руководства по инструментам — в разделе Настройки агентных инструментов.