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