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 ставить сам, коли це вигідно (довгий системний промпт, інструменти, історія діалогу). Читання з кешу коштує вдесятеро дешевше за звичайний вхід. Щоб відмовитися, передайте "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 і Cursor зі своїм ключем.

Один ключ і один баланс на Claude, GPT, Gemini та інші моделі

Claude, GPT, Gemini, DeepSeek і Grok у 10 разів дешевше за офіційні ціни. Без підписки та VPN.