Документация Tokenator API
Один ключ, два совместимых формата запросов и общий каталог моделей. Здесь собрано всё, что нужно знать перед первым запросом и при разборе ошибок.
Базовые адреса и авторизация
У Tokenator два входа. Один говорит на языке OpenAI, второй — на языке Anthropic. Выбирайте тот, который уже понимает ваш клиент; конвертацией между форматами занимается сам прокси.
| Формат | Base URL | Заголовок с ключом |
|---|---|---|
| OpenAI | https://api.tokenator.top/v1 | Authorization: Bearer sk-your-tokenator-key |
| Anthropic | https://api.tokenator.top/anthropic | x-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. |
| POST | /v1/audio/speech | Синтез речи. |
| POST | /v1/audio/transcriptions | Распознавание речи. |
| POST | /v1/audio/translations | Распознавание с переводом на английский. |
| GET | /v1/models | Список моделей, доступных конкретному ключу. |
| GET | /v1/tokens | Остаток лимита ключа и израсходованные токены. |
Первый запрос
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": "Привет"}] }'
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, который оплачивается заново на каждом запросе. В агентных сценариях именно она обычно составляет основную часть расхода, а не ответы модели.
Что такое 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 сначала пробует следующего по приоритету и отдаёт ошибку только когда закончились все.
Лимит ответа (output limit)
Помимо общего объёма токенов у каждого ключа есть отдельный лимит ответа: максимальное суммарное количество токенов, которое ключ может выдать в ответах модели. Он считается как процент от общего объёма пакета — начального плюс все пополнения — и расходуется только output-токенами; входные токены в него не входят.
Текущее значение по умолчанию для новых ключей: 6%. Точный процент для конкретного ключа виден в личном кабинете, а условия зафиксированы в оферте — она имеет приоритет над любым текстом на сайте.
Срок жизни ключа
Пакет действует до полного исчерпания лимита токенов или до истечения срока жизни ключа — что наступит раньше. Согласно действующей оферте, срок жизни ключа, выданного при покупке пакета, составляет 3 месяца (90 календарных дней) с момента выдачи, после чего ключ деактивируется, а неиспользованные токены не возвращаются.
Планируйте объём пакета под реальный темп расхода: длинная история диалога в агентных сценариях расходует input-токены быстрее, чем кажется. Актуальный остаток и дату выдачи всегда видно в личном кабинете.
Ограничение по использованию моделей Claude
Как проверить 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-эндпоинт.
Сгорают ли неиспользованные токены?
Условия по срокам действия ключей и токенов описаны в оферте — ориентируйтесь на неё, а не на пересказ.
Где посмотреть, сколько токенов ушло на конкретный запрос?
В личном кабинете есть журнал запросов с токенами по каждому обращению.