Документация Tokenator API

Один ключ, два совместимых формата запросов и общий каталог моделей. Здесь собрано всё, что нужно знать перед первым запросом и при разборе ошибок.

Базовые адреса и авторизация

У Tokenator два входа. Один говорит на языке OpenAI, второй — на языке Anthropic. Выбирайте тот, который уже понимает ваш клиент; конвертацией между форматами занимается сам прокси.

ФорматBase URLЗаголовок с ключом
OpenAIhttps://api.tokenator.top/v1Authorization: Bearer sk-your-tokenator-key
Anthropichttps://api.tokenator.top/anthropicx-api-key: sk-your-tokenator-key

Ключ также принимается в заголовке Authorization: Bearer на Anthropic-входе — так проще подключать клиенты, которые умеют только один способ авторизации.

Эндпоинты

МетодПутьНазначение
POST/v1/chat/completionsОсновной чат-эндпоинт формата OpenAI. Поддерживает streaming, tools и мультимодальный вход.
POST/v1/responsesФормат Responses API. Поддерживает продолжение диалога по previous_response_id.
POST/v1/messagesФормат Anthropic Messages. Доступен также по префиксу /anthropic/v1/messages.
POST/v1/messages/count_tokensПодсчёт токенов для запроса в формате Anthropic.
POST/v1/embeddingsВекторные представления текста. Обслуживает только модели эмбеддингов.
POST/v1/images/generationsГенерация изображений.
POST/v1/images/editsРедактирование и апскейл изображений. Принимает multipart и JSON с base64.
GET/v1/images/modelsКаталог моделей изображений с размерами и признаком входа картинкой.
POST/v1/videosГенерация видео по текстовому описанию. Тот же обработчик отвечает и на /v1/videos/generations.
GET/v1/videos/modelsКаталог видеомоделей с длительностями, разрешениями и соотношениями сторон.
GET/v1/videos/{id}Статус асинхронной задачи генерации видео.
POST/v1/audio/speechСинтез речи.
POST/v1/audio/transcriptionsРаспознавание речи.
POST/v1/audio/translationsРаспознавание с переводом на английский.
GET/v1/modelsСписок чат-моделей, доступных ключу. Картинки и видео живут в /v1/images/models и /v1/videos/models.
GET/v1/tokensОстаток лимита ключа и израсходованные токены.

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

OpenAI-совместимый запрос
curl https://api.tokenator.top/v1/chat/completions \
  -H "Authorization: Bearer sk-your-tokenator-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [{"role": "user", "content": "Привет"}]
  }'
Тот же запрос в формате Anthropic
curl https://api.tokenator.top/anthropic/v1/messages \
  -H "x-api-key: sk-your-tokenator-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Привет"}]
  }'

Потоковый режим

Добавьте "stream": true — ответ придёт как поток server-sent events. Для длинных ответов это не просто удобство: без стриминга клиент ждёт весь ответ целиком и может отвалиться по собственному таймауту.

Если ответ формируется долго, Tokenator шлёт keep-alive, чтобы соединение не закрыли промежуточные прокси.

Как считаются input и output токены

Input — всё, что уходит в модель: системный промпт, история сообщений, описания инструментов, приложенные файлы. Output — всё, что модель сгенерировала, включая reasoning-токены, даже если вы их не видите в ответе.

С лимита ключа списывается (input + output) × множитель модели. Множитель у каждой модели свой и указан на её странице в каталоге. Фактические токены апстрима видны в статистике ключа, а в биллинге они уже с коэффициентом.

Практический вывод: длинная история диалога — это input, который оплачивается заново на каждом запросе. В агентных сценариях именно она обычно составляет основную часть расхода, а не ответы модели.

Бесплатные модели

Часть моделей в каталоге помечена как бесплатные. Запросы к ним не списывают лимит токенов вашего ключа: множитель модели к ним не применяется, и остаток пакета не уменьшается.

Вместо этого у бесплатной модели есть собственная суточная квота на ключ — по токенам, по числу запросов или по обоим сразу. Квота считается отдельно для каждой модели и для каждого ключа: израсходовав дневной лимит на одной бесплатной модели, вы продолжаете пользоваться остальными.

Счётчик обнуляется в 00:00 UTC. Когда квота исчерпана, запрос возвращает ошибку 429 с кодом free_model_daily_limit — платный лимит ключа при этом не трогается. Достаточно дождаться сброса или перейти на платную модель.

Бесплатные модели работают через те же эндпоинты и с тем же ключом, что и платные — отдельной авторизации не нужно. Запросы к ним попадают в статистику и логи ключа как обычно, просто с нулевым списанием.

Текущий остаток по каждой бесплатной модели возвращает /v1/tokens в поле free_models.

Ответ /v1/tokens для ключа с бесплатными моделями
{
  "limit": 1000000,
  "used": 240000,
  "remaining": 760000,
  "free_models": [
    {
      "model": "free-grok-4.6",
      "daily_tokens": 500000,
      "tokens_used": 82000,
      "tokens_remaining": 418000,
      "requests_used": 37,
      "resets_at": "2026-08-19T00:00:00Z"
    }
  ]
}

Что такое context window

Context window — предел того, сколько токенов модель может держать «в голове» за один запрос: input и output вместе. Превысили — апстрим вернёт ошибку, а не молча обрежет ваш промпт.

Отдельно от контекста существует максимальный output: сколько токенов модель может выдать в одном ответе. У большинства моделей он значительно меньше контекста. Оба значения для каждой модели указаны в каталоге.

Tools и function calling

Инструменты описываются как обычно для выбранного формата: массив tools в OpenAI-запросе или в Anthropic-запросе. Модель не вызывает функции сама — она возвращает намерение вызова, ваш код выполняет функцию и отправляет результат следующим сообщением.

Tokenator конвертирует описания инструментов между форматами, поэтому один и тот же набор tools работает на обоих входах. Клиентские серверные инструменты веб-поиска и веб-фетча из запроса удаляются: их выполнял бы апстрим, а не ваш код, и поведение было бы непредсказуемым.

Повторяющиеся описания инструментов и дубли блоков контента в истории схлопываются перед отправкой — это уменьшает input, не меняя смысла запроса.

Как включить reasoning

Поле reasoning_effort в запросе передаётся апстриму без изменений. Модели, которые его не понимают, игнорируют поле — ошибки не будет.

Кроме этого у самого ключа есть переключатель reasoning в личном кабинете: он действует независимо от того, что присылает клиент. Если reasoning для ключа выключен, расширенное размышление не используется.

Важно для бюджета: reasoning-токены тарифицируются как output. Высокий уровень усилий может увеличить расход в несколько раз при том же видимом ответе.

Файлы и изображения во входе

Изображения передаются штатным способом формата — как часть контента сообщения. Модель должна поддерживать изображения на входе; в каталоге это указано отдельным полем.

Текстовые вложения (.md, .txt) и PDF с текстовым слоем прокси распознаёт сам: текст извлекается и вставляется в запрос как текстовая часть. Сканы и файлы без текстового слоя передаются модели как файл.

Ошибки и лимиты

СимптомПричинаЧто сделать
401 или сообщение о недействительном ключеКлюч скопирован с лишними пробелами, отозван, истёк или вставлен не в то поле конфига.Проверьте ключ в личном кабинете и убедитесь, что инструмент читает именно тот файл конфигурации, куда вы его вставили.
403Модель не входит в список разрешённых для этого ключа.Посмотрите список моделей ключа в кабинете и выберите ID из каталога моделей.
429Превышен лимит запросов в минуту или час либо лимит одновременных стримов для ключа.Уменьшите параллелизм агента и повторите запрос с экспоненциальной задержкой. Лимиты ключа видны в кабинете.
Модель не найдена / не поддерживаетсяВ запросе указан ID, которого нет в каталоге, либо алиас, недоступный этому ключу.Скопируйте точный API ID со страницы модели — регистр и точки значимы.
Запрос завис или обрывается на длинном ответеКлиент закрыл соединение по своему таймауту раньше, чем модель закончила генерацию.Включите потоковый режим (stream: true) и увеличьте таймаут клиента: у длинных reasoning-ответов первый токен может прийти не сразу.
Ошибка вида «Request error» без деталейАпстрим-провайдер вернул ошибку. Её текст не передаётся клиенту.Повторите запрос: Tokenator сам переключается на следующего провайдера модели. Если ошибка стабильна — напишите в поддержку.

Ошибки апстрим-провайдеров клиенту не пересылаются: вместо чужих текстов и названий сервисов возвращается общее сообщение. Если модель обслуживают несколько провайдеров, Tokenator сначала пробует следующего по приоритету и отдаёт ошибку только когда закончились все.

Срок жизни ключа

Пакет действует до полного исчерпания лимита токенов или до истечения срока жизни ключа — что наступит раньше. Согласно действующей оферте, срок жизни ключа, выданного при покупке пакета, составляет 3 месяца (90 календарных дней) с момента выдачи, после чего ключ деактивируется, а неиспользованные токены не возвращаются.

Планируйте объём пакета под реальный темп расхода: длинная история диалога в агентных сценариях расходует input-токены быстрее, чем кажется. Актуальный остаток и дату выдачи всегда видно в личном кабинете.

Как проверить API-ключ

Самый быстрый способ — спросить у сервиса, что доступно этому ключу. Запрос ничего не расходует.

Список моделей ключа
curl https://api.tokenator.top/v1/models \
  -H "Authorization: Bearer sk-your-tokenator-key"
Остаток лимита
curl https://api.tokenator.top/v1/tokens \
  -H "Authorization: Bearer sk-your-tokenator-key"

Пустой или отфильтрованный список моделей означает, что ключ действителен, но модели ему не разрешены. Ответ 401 — ключ недействителен.

Частые вопросы

Нужно ли менять код, если я уже использую OpenAI SDK?

Нет. Достаточно поменять base URL и ключ; названия методов и структуры запросов остаются теми же.

Можно ли обращаться к Claude через OpenAI-формат?

Да, конвертацией занимается прокси. Обратное тоже верно: не-Claude модели доступны через Anthropic-эндпоинт.

Сгорают ли неиспользованные токены?

Условия по срокам действия ключей и токенов описаны в оферте — ориентируйтесь на неё, а не на пересказ.

Где посмотреть, сколько токенов ушло на конкретный запрос?

В личном кабинете есть журнал запросов с токенами по каждому обращению.