Содержание15
Адрес и форматы
Все запросы идут на https://api.klinch.cloud. Один ключ работает со всеми моделями и двумя форматами API:
| Формат | Адрес | Для чего |
|---|---|---|
| Anthropic Messages | https://api.klinch.cloud/v1/messages | Anthropic SDK, Claude Code |
| OpenAI Chat Completions | https://api.klinch.cloud/v1/chat/completions | OpenAI SDK, Cursor, боты |
| OpenAI Responses | https://api.klinch.cloud/v1/responses | Codex CLI, новые SDK OpenAI |
Любая модель отвечает в любом формате: можно вызвать gpt-6.1-sol через Anthropic SDK или claude-sonnet-5-5 через OpenAI SDK. В SDK Anthropic указывайте адрес без /v1, в SDK OpenAI с /v1.
Ключ и авторизация
Ключ выглядит как kl_live_… и приходит в чат FunPay сразу после покупки пакета токенов. Его же можно добавить в кабинет klinch.app, где видны баланс, расход и история запросов.
Передавайте ключ в одном из заголовков, оба работают на всех адресах:
Authorization: Bearer kl_live_…(так делает OpenAI SDK)x-api-key: kl_live_…(так делает Anthropic SDK)
Не публикуйте ключ в открытом коде и в браузерных приложениях: по нему списывается баланс. Для отдельных проектов создайте дополнительные ключи с дневным лимитом в кабинете.
Первый запрос
curl https://api.klinch.cloud/v1/messages \
-H "x-api-key: kl_live_…" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'Ответ в формате Anthropic:
{
"id": "msg_01…",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-5-5",
"content": [{"type": "text", "text": "Hello! How can I help?"}],
"stop_reason": "end_turn",
"usage": {"input_tokens": 9, "output_tokens": 12}
}В usage указаны реальные токены запроса. С баланса списывается их количество, умноженное на коэффициент модели (см. модели и цены).
Anthropic Messages API
Поддерживаются поля API Anthropic: system, messages, max_tokens, temperature, tools, tool_choice, thinking, stream, изображения и документы в content, кэширование через cache_control.
Пример со стримингом на Python:
import anthropic
client = anthropic.Anthropic(base_url="https://api.klinch.cloud", api_key="kl_live_…")
with client.messages.stream(
model="claude-sonnet-5-5", max_tokens=1024,
messages=[{"role": "user", "content": "Write a haiku"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)Кэш промпта KLINCH ставит сам, когда это выгодно (длинный системный промпт, инструменты, история диалога). Чтение из кэша стоит в 10 раз дешевле обычного входа. Чтобы отказаться, передайте "cache_control": null в теле запроса.
OpenAI Chat Completions
Подходит для OpenAI SDK, LangChain, LlamaIndex, Cursor и любых клиентов с настраиваемым base_url. Поддерживаются messages, stream, tools, response_format (JSON), temperature, max_tokens.
from openai import OpenAI
client = OpenAI(base_url="https://api.klinch.cloud/v1", api_key="kl_live_…")
r = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{"role": "user", "content": "Hello"}],
)
print(r.choices[0].message.content)Стриминг на Node.js:
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.klinch.cloud/v1", apiKey: "kl_live_…" });
const stream = await client.chat.completions.create({
model: "deepseek-v4-pro",
messages: [{ role: "user", content: "Explain recursion" }],
stream: true,
});
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content || "");OpenAI Responses API
Формат, на котором работают Codex CLI и новые версии SDK OpenAI. Принимает input строкой или списком сообщений, поддерживает stream и инструменты.
curl https://api.klinch.cloud/v1/responses \
-H "Authorization: Bearer kl_live_…" \
-H "content-type: application/json" \
-d '{"model": "gpt-6.1-sol", "input": "Hello"}'Инструменты (function calling)
Инструменты работают в обоих форматах и со всеми моделями. Модель возвращает вызов, вы выполняете функцию и отправляете результат следующим сообщением, как в официальных API.
r = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Weather in Almaty?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
},
}],
)
print(r.choices[0].message.tool_calls)Список моделей
Модели, доступные вашему ключу прямо сейчас, с коэффициентами расхода баланса:
curl https://api.klinch.cloud/v1/models -H "Authorization: Bearer kl_live_…"{
"object": "list",
"data": [
{
"id": "claude-sonnet-5-5",
"object": "model",
"display_name": "Claude Sonnet 5.5",
"owned_by": "anthropic",
"multipliers": {"input": 1, "output": 5, "cache_read": 0.1, "cache_write": 1.25}
}
],
"has_more": false
}Описания и цены всех моделей собраны на странице «Модели и цены».
Подсчёт токенов
Сколько входных токенов займёт запрос, до его отправки. Бесплатно.
curl https://api.klinch.cloud/v1/messages/count_tokens \
-H "x-api-key: kl_live_…" \
-H "content-type: application/json" \
-d '{"model": "claude-sonnet-5-5", "messages": [{"role": "user", "content": "Hello"}]}'Эмбеддинги
POST /v1/embeddings в формате OpenAI. По умолчанию модель bge-m3 (многоязычная, русский тоже, 1024 измерения). Названия моделей OpenAI (text-embedding-3-small и другие) тоже принимаются. Список моделей: GET /v1/embeddings/models.
r = client.embeddings.create(model="bge-m3", input=["first text", "second text"])
print(len(r.data[0].embedding)) # 1024Озвучка текста
POST /v1/audio/speech в формате OpenAI. С моделью tts-1 KLINCH сам подбирает голосовой движок под язык текста, русский тоже. Форматы: mp3, opus, aac, flac, wav, pcm. До 4096 символов за запрос. Модели и голоса: GET /v1/audio/models.
r = client.audio.speech.create(model="tts-1", voice="alloy", input="Привет! Это KLINCH.")
r.write_to_file("hello.mp3")Баланс и расход
Баланс считается в токенах. 1 токен баланса равен одному входному токену Claude Sonnet 5.5, остальные модели списывают больше или меньше по своему коэффициенту.
curl https://api.klinch.cloud/v1/balance -H "Authorization: Bearer kl_live_…"{
"id": 123,
"balance": 1250000,
"unit": "tokens",
"key_prefix": "kl_live_ab12"
}GET /v1/usage?days=30: запросы, токены и расход по дням и моделям.GET /v1/history: последние запросы с токенами и списанием.GET /v1/limits: лимиты использования ключа и когда они обновятся.
Ошибки
Ошибки приходят с HTTP-кодом и JSON-телом. В формате OpenAI тело ошибки повторяет структуру OpenAI.
| Код | Ошибка | Что делать |
|---|---|---|
| 400 | model_not_allowed | Модель не найдена. В ответе есть список allowed. |
| 401 | invalid_token | Проверьте ключ и заголовок. |
| 402 | insufficient_balance | Не хватает токенов на запрос. Пополните баланс. |
| 429 | rate_limit_error | Слишком много запросов с одного адреса. Подождите минуту. |
| 5xx | upstream_error | Временный сбой модели. Повторите запрос или выберите другую модель. |
{"error": "insufficient_balance", "required": 5200, "balance": 310, "unit": "tokens"}Лимиты
До 600 запросов в минуту с одного IP-адреса, этого хватает для Claude Code, агентов и ботов. Ответ длиннее, чем позволяет баланс, KLINCH не обрывает с ошибкой: он уменьшает max_tokens так, чтобы баланс не ушёл в минус.
Работу моделей в реальном времени показывает страница статуса.
Claude Code, Cursor и другие инструменты
Claude Code подключается двумя переменными окружения:
export ANTHROPIC_BASE_URL="https://api.klinch.cloud"
export ANTHROPIC_AUTH_TOKEN="kl_live_…"
claudeПошаговые инструкции для разных инструментов, Windows и macOS есть в кабинете в разделе «Подключение», а также на страницах Claude Code без VPN и Cursor со своим ключом.