Справочник API
API следует формату OpenAI по адресу https://ai.geraikita.com/v1 и формату Anthropic по адресу https://ai.geraikita.com. Все тела запросов и ответов — JSON (UTF-8).
| Эндпоинт | Назначение |
|---|---|
| POST /v1/chat/completions | Chat в формате OpenAI (stream и без stream) |
| POST /v1/messages | Messages в формате Anthropic (stream и без stream) |
| POST /v1/messages/count_tokens | Подсчёт токенов промпта в формате Anthropic — бесплатно |
| GET /v1/models | Список доступных моделей |
| POST /v1/images/generations | Создание изображений по текстовому промпту, оплата за изображение — см. Генерация изображений |
/v1/responses, /v1/embeddings) пока не поддерживаются.Chat completions (OpenAI)
https://ai.geraikita.com/v1/chat/completionsГенерирует ответ по списку сообщений. Заголовки: Authorization: Bearer gk-… и Content-Type: application/json.
Тело запроса
| Параметр | Тип | Описание |
|---|---|---|
model | string | Обязательно. Id модели точно как в списке моделей, без префикса. |
messages | array | Обязательно. Упорядоченный массив сообщений; каждое содержит role и content. Минимум одно сообщение. |
stream | boolean | true, чтобы получать ответ по частям через Server-Sent Events. |
max_tokens | integer | Лимит токенов ответа. Если баланса не хватает на запрошенное значение, сервер может автоматически его снизить. |
temperature, top_p, stop | — | Передаётся модели как есть. Поддержка и диапазон значений зависят от модели. |
tools, tool_choice | array / 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": "Привет!"}]
}'Пример ответа
{
"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)
https://ai.geraikita.com/v1/messagesНативный эндпоинт Anthropic для SDK Anthropic и Claude Code CLI. Base URL в клиенте = https://ai.geraikita.com (без /v1).
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
| x-api-key | gk-… | Ваш API-ключ gk- (Authorization: Bearer тоже принимается). |
| anthropic-version | 2023-06-01 | Версия API Anthropic; SDK отправляет автоматически. |
| content-type | application/json | — |
Тело запроса
| Параметр | Тип | Описание |
|---|---|---|
model | string | Обязательно. Id модели точно как в списке моделей, без префикса. |
messages | array | Обязательно. Массив сообщений в формате Anthropic, минимум одно сообщение. |
max_tokens | integer | Лимит токенов ответа (обязателен в формате Anthropic). |
system | string / array | Системная инструкция (необязательно). |
stream | boolean | true, чтобы получать ответ по частям через 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 принимает то же тело и не тарифицируется.
Список моделей
https://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 секунд.
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, а не данные. Руководства по инструментам — в разделе Настройки агентных инструментов.