akyko

Быстрый старт

akyko - шлюз к моделям, совместимый с OpenAI API: вы меняете базовый URL и ключ, остальной код остаётся прежним.

Базовый URL

https://api.akyko.ru/v1

Пути обычные: /chat/completions, /models. Инструменты, которые говорят на родном протоколе Anthropic, ходят в https://api.akyko.ru/v1/messages - он тоже работает.

Где взять ключ

  1. Зарегистрируйтесь на akyko.ru и подтвердите почту.
  2. Создайте ключ в личном кабинете. Он начинается с sk- и показывается целиком один раз - сохраните его сразу.
  3. Пополните баланс - криптовалютой. Ключ выпускается и на нулевом балансе, запросы начнут выполняться после пополнения.

Ключ передаётся в заголовке Authorization: Bearer sk-.... Что ещё умеет ключ - лимит расхода, белый список моделей, срок действия, список IP - на странице Ключи и подключи.

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

Примеры ниже берут ключ из переменной AKYKO_KEY. Имя модели - любое из каталога Модели, подставляется в поле model как есть.

curl
curl https://api.akyko.ru/v1/chat/completions \
  -H "Authorization: Bearer $AKYKO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5-5",
    "messages": [{"role": "user", "content": "Привет"}]
  }'
Python - openai
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.akyko.ru/v1",
    api_key=os.environ["AKYKO_KEY"],
)

response = client.chat.completions.create(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "Привет"}],
)

print(response.choices[0].message.content)
TypeScript - openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.akyko.ru/v1",
  apiKey: process.env.AKYKO_KEY,
});

const response = await client.chat.completions.create({
  model: "claude-sonnet-5-5",
  messages: [{ role: "user", content: "Привет" }],
});

console.log(response.choices[0].message.content);

Любая библиотека для OpenAI API подойдёт: достаточно переопределить базовый URL. Проверить, что ключ принят, можно без модели - запросом GET /v1/models.

Потоковый ответ

С "stream": true ответ приходит по SSE - серией событий data: с дельтами. SDK разбирают поток сами; подробности и поведение при обрыве - на странице Ошибки и поведение.

curl
curl -N https://api.akyko.ru/v1/chat/completions \
  -H "Authorization: Bearer $AKYKO_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5-5",
    "stream": true,
    "messages": [{"role": "user", "content": "Привет"}]
  }'

Нативный эндпоинт Anthropic

Для инструментов, написанных под Claude, есть /v1/messages с родной схемой Anthropic - перекладывать запросы в формат OpenAI не нужно.

curl
curl https://api.akyko.ru/v1/messages \
  -H "Authorization: Bearer $AKYKO_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Привет"}]
  }'

Claude Code и подобным клиентам хватает двух переменных окружения - хост без /v1, путь клиент добавляет сам:

sh
export ANTHROPIC_BASE_URL="https://api.akyko.ru"
export ANTHROPIC_AUTH_TOKEN="sk-..."

Именно их прописывает установщик вместе с конфигами остальных инструментов - Интеграции.

Дальше