Anthropic совместимый API

TokenCode совместим с протоколом Anthropic Messages API. Вы можете напрямую использовать Anthropic SDK или любой клиент, совместимый с протоколом Claude.

Base URL

text
https://tokencode.dev

Аутентификация

Все эндпоинты требуют аутентификации:

  • Bearer Token: Authorization: Bearer <your-api-key>
  • x-api-key заголовок: x-api-key: <your-api-key>

Messages

Совместимый с Anthropic Claude эндпоинт Messages. Поддерживает модели Claude, а также другие модели через конвертацию протоколов.

bash
curl https://tokencode.dev/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Объясните квантовые вычисления"}
    ]
  }'

Параметры запроса:

Параметр Тип Обязательный Описание
model string Да ID модели (например, claude-sonnet-4-6)
messages array Да Массив объектов сообщений
max_tokens integer Да Максимальное количество генерируемых Token
stream boolean Нет Включить ли потоковый ответ
temperature number Нет Температура сэмплирования (0-1)
top_p number Нет Вероятность ядерного сэмплирования
top_k integer Нет Сэмплирование Top-K
stop_sequences array Нет Стоп-последовательности
system string/array Нет Системный промпт
tools array Нет Определения инструментов
tool_choice object Нет Стратегия вызова инструментов

Пример ответа:

json
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Квантовые вычисления — это метод использования принципов квантовой механики..."
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 25,
    "output_tokens": 128
  }
}

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

При установке "stream": true ответ использует формат SSE с типами событий, идентичными нативному протоколу Anthropic:

text
event: message_start
data: {"type":"message_start","message":{"id":"msg_abc123","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","usage":{"input_tokens":25,"output_tokens":0}}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Квант"}}

event: message_stop
data: {"type":"message_stop"}

Автоматическая конвертация протоколов

При вызове не-Claude моделей через эндпоинт протокола Anthropic, TokenCode автоматически выполняет конвертацию протоколов:

  • Конвертация запроса: преобразование формата Anthropic Messages в нативный формат целевой модели (например, OpenAI Chat Completions)
  • Конвертация ответа: преобразование ответа целевой модели в формат Anthropic Messages
  • Адаптация потокового режима: типы потоковых событий автоматически адаптируются под формат SSE Anthropic

Это означает, что вы можете использовать Claude Code и другие нативные клиенты Anthropic для вызова моделей OpenAI, Gemini и других через этот эндпоинт без какой-либо дополнительной адаптации.

Использование Anthropic SDK

python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-your-api-key",
    base_url="https://tokencode.dev"
)

# Вызов модели Claude
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Привет"}]
)

# Вызов модели OpenAI — автоматическая конвертация протокола
message = client.messages.create(
    model="gpt-5.5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Привет"}]
)
javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "sk-your-api-key",
  baseURL: "https://tokencode.dev",
});

// Вызов модели Claude
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Привет" }],
});

Мультимодальный ввод

Поддерживается ввод изображений (Vision):

python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": "<base64-encoded-image>"
                    }
                },
                {
                    "type": "text",
                    "text": "Опишите это изображение"
                }
            ]
        }
    ]
)

Ответы об ошибках

Ответы об ошибках соответствуют формату ошибок Anthropic:

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens: required"
  }
}
HTTP-статус Значение
400 Неверные параметры запроса
401 Ошибка аутентификации — недействительный API Key
403 Недостаточно прав
404 Модель не найдена
429 Ограничение скорости или недостаточный баланс
500 Внутренняя ошибка сервера
529 Перегрузка upstream-сервиса