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

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

Base URL

text
https://tokencode.dev/v1

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

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

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

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

Возвращает список доступных на данный момент моделей.

bash
curl https://tokencode.dev/v1/models \
  -H "Authorization: Bearer sk-your-api-key"

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

json
{
  "object": "list",
  "data": [
    { "id": "gpt-5.5", "object": "model", "owned_by": "openai" },
    { "id": "claude-sonnet-4-6", "object": "model", "owned_by": "anthropic" },
    { "id": "gemini-2.5-pro", "object": "model", "owned_by": "google" }
  ]
}

Chat Completions

Совместимый с OpenAI эндпоинт диалоговых завершений. Поддерживает все upstream-модели, а не только модели OpenAI.

bash
curl https://tokencode.dev/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {"role": "system", "content": "Вы полезный помощник."},
      {"role": "user", "content": "Объясните квантовые вычисления"}
    ],
    "temperature": 0.7,
    "max_tokens": 1024
  }'

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

Параметр Тип Обязательный Описание
model string Да ID модели (например, gpt-5.5, claude-sonnet-4-6)
messages array Да Массив объектов сообщений
stream boolean Нет Включить ли потоковый ответ
temperature number Нет Температура сэмплирования (0-2)
max_tokens integer Нет Максимальное количество генерируемых Token
top_p number Нет Вероятность ядерного сэмплирования
n integer Нет Количество генерируемых кандидатов
stop string/array Нет Стоп-последовательности
presence_penalty number Нет Штраф за присутствие (от -2 до 2)
frequency_penalty number Нет Штраф за частоту (от -2 до 2)
tools array Нет Определения инструментов Function Calling
tool_choice string/object Нет Стратегия вызова инструментов

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

json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1700000000,
  "model": "gpt-5.5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Квантовые вычисления — это метод использования принципов квантовой механики..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 25,
    "completion_tokens": 128,
    "total_tokens": 153
  }
}

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

При установке "stream": true ответ использует формат SSE:

text
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"content":"Кв"},"index":0}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","choices":[{"delta":{"content":"ан"},"index":0}]}

data: [DONE]

Embeddings

Генерация векторных вложений текста.

bash
curl https://tokencode.dev/v1/embeddings \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "text-embedding-3-small",
    "input": "Hello world"
  }'

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

Параметр Тип Обязательный Описание
model string Да ID модели вложений
input string/array Да Текст для вложения
encoding_format string Нет Формат кодирования (float или base64)

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

Одно из ключевых преимуществ TokenCode — автоматическая конвертация протоколов. Когда вы вызываете не-OpenAI модель (например, Claude, Gemini) через совместимый с OpenAI эндпоинт, платформа автоматически выполняет:

  1. Конвертация запроса: преобразование тела запроса в формате OpenAI в нативный формат целевой модели
  2. Конвертация ответа: преобразование нативного ответа целевой модели в формат OpenAI
  3. Адаптация потокового режима: потоковые ответы также автоматически конвертируются

Это означает, что вы можете использовать один и тот же код OpenAI SDK для вызова всех моделей, не заботясь о различиях в底层 протоколах.

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

python
from openai import OpenAI

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

# Вызов модели OpenAI
response = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Привет"}]
)

# Вызов модели Claude — тот же код, автоматическая конвертация протокола
response = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "Привет"}]
)

# Вызов модели Gemini — аналогичным образом
response = client.chat.completions.create(
    model="gemini-2.5-pro",
    messages=[{"role": "user", "content": "Привет"}]
)

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

Все ошибки соответствуют формату ошибок OpenAI:

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