api.klinch.cloud

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

KLINCH понимает форматы API Anthropic и OpenAI. Меняете адрес и ключ, а код, SDK и инструменты остаются прежними.

Содержание15

Адрес и форматы

Все запросы идут на https://api.klinch.cloud. Один ключ работает со всеми моделями и двумя форматами API:

ФорматАдресДля чего
Anthropic Messageshttps://api.klinch.cloud/v1/messagesAnthropic SDK, Claude Code
OpenAI Chat Completionshttps://api.klinch.cloud/v1/chat/completionsOpenAI SDK, Cursor, боты
OpenAI Responseshttps://api.klinch.cloud/v1/responsesCodex 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)

Не публикуйте ключ в открытом коде и в браузерных приложениях: по нему списывается баланс. Для отдельных проектов создайте дополнительные ключи с дневным лимитом в кабинете.

Первый запрос

Terminal
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:

JSON
{
  "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:

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.

Python
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:

Python
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 и инструменты.

Terminal
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.

Code
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)

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

Модели, доступные вашему ключу прямо сейчас, с коэффициентами расхода баланса:

Terminal
curl https://api.klinch.cloud/v1/models -H "Authorization: Bearer kl_live_…"
JSON
{
  "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
}

Описания и цены всех моделей собраны на странице «Модели и цены».

Подсчёт токенов

Сколько входных токенов займёт запрос, до его отправки. Бесплатно.

Terminal
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.

Code
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.

Code
r = client.audio.speech.create(model="tts-1", voice="alloy", input="Привет! Это KLINCH.")
r.write_to_file("hello.mp3")

Баланс и расход

Баланс считается в токенах. 1 токен баланса равен одному входному токену Claude Sonnet 5.5, остальные модели списывают больше или меньше по своему коэффициенту.

Terminal
curl https://api.klinch.cloud/v1/balance -H "Authorization: Bearer kl_live_…"
JSON
{
  "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.

КодОшибкаЧто делать
400model_not_allowedМодель не найдена. В ответе есть список allowed.
401invalid_tokenПроверьте ключ и заголовок.
402insufficient_balanceНе хватает токенов на запрос. Пополните баланс.
429rate_limit_errorСлишком много запросов с одного адреса. Подождите минуту.
5xxupstream_errorВременный сбой модели. Повторите запрос или выберите другую модель.
JSON
{"error": "insufficient_balance", "required": 5200, "balance": 310, "unit": "tokens"}

Лимиты

До 600 запросов в минуту с одного IP-адреса, этого хватает для Claude Code, агентов и ботов. Ответ длиннее, чем позволяет баланс, KLINCH не обрывает с ошибкой: он уменьшает max_tokens так, чтобы баланс не ушёл в минус.

Работу моделей в реальном времени показывает страница статуса.

Claude Code, Cursor и другие инструменты

Claude Code подключается двумя переменными окружения:

Terminal
export ANTHROPIC_BASE_URL="https://api.klinch.cloud"
export ANTHROPIC_AUTH_TOKEN="kl_live_…"
claude

Пошаговые инструкции для разных инструментов, Windows и macOS есть в кабинете в разделе «Подключение», а также на страницах Claude Code без VPN и Cursor со своим ключом.

Один ключ, один баланс, все топовые модели

Claude, GPT, Gemini, DeepSeek и Grok в 10 раз дешевле официальных цен. Без подписки и VPN.