TokenAPIДокументация API
Справочник API

Подключение в две строки: base URL и API-ключ.

TokenAPI поддерживает форматы Chat Completions и Responses от OpenAI и формат Messages от Anthropic. Используйте официальные SDK без изменений и выберите ID в списке моделей.

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

Base URL

https://tokenapi.biz/v1

Все эндпоинты:

GET/v1/models

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

Публичные ID моделей с возможностями, размером контекста и ценами.

GET/v1/models/{id}

Получить модель

Один объект модели.

POST/v1/chat/completions

Chat Completions

Формат Chat Completions от OpenAI, с потоковой передачей и без.

POST/v1/responses

Responses

Формат Responses от OpenAI (без состояния), с потоковой передачей и без.

POST/v1/messages

Messages

Формат Messages от Anthropic для SDK Anthropic.

curl
curl https://tokenapi.biz/v1/chat/completions \
  -H "Authorization: Bearer $TOKENAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tokenapi-pro",
    "messages": [{ "role": "user", "content": "Hello!" }]
  }'
Node.js · openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://tokenapi.biz/v1",
  apiKey: process.env.TOKENAPI_KEY,
});

const res = await client.chat.completions.create({
  model: "tokenapi-pro",
  messages: [{ role: "user", content: "Hello!" }],
});
console.log(res.choices[0].message.content);
Python · openai
import os
from openai import OpenAI

client = OpenAI(base_url="https://tokenapi.biz/v1", api_key=os.environ["TOKENAPI_KEY"])

res = client.chat.completions.create(
    model="tokenapi-pro",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(res.choices[0].message.content)
Аутентификация

Передавайте ключ как Bearer-токен.

Authorization: Bearer sk-tk-…

Заголовок x-api-key в стиле Anthropic тоже поддерживается. Ключи начинаются с sk-tk-, показываются один раз при создании и могут ограничиваться по отдельности (запросы в минуту, потолок расходов, доступные модели, срок действия). Храните ключи на сервере и никогда не встраивайте их в код браузера или мобильного приложения. Чтобы получить ключ, напишите на hello@tokenapi.biz.

Модели

Стабильные ID моделей.

Передавайте id из GET /v1/models в параметре model. ID модели — это стабильный продукт: чтобы сохранять качество и доступность, мы можем обновлять или менять обслуживающий его бэкенд без каких-либо изменений с вашей стороны. В ответах всегда указан вызванный ID.

GET /v1/models
{
  "object": "list",
  "data": [
    {
      "id": "tokenapi-pro",
      "object": "model",
      "owned_by": "tokenapi",
      "display_name": "TokenAPI Pro",
      "capabilities": ["streaming", "tools", "json_output"],
      "context_length": 131072,
      "pricing": {
        "currency": "USD",
        "prompt": "0.0000015",
        "completion": "0.000006",
        "input_per_million": 1.5,
        "output_per_million": 6
      }
    }
  ]
}

pricing.prompt / pricing.completion — доллары США за токен (строки); input_per_million / output_per_million — доллары США за миллион токенов.

POST /v1/chat/completions

Chat Completions

Запрос и ответ соответствуют формату OpenAI: messages с текстом и изображениями, tools / tool_choice, response_format, temperature, top_p, stop, max_tokens или max_completion_tokens. В каждом ответе есть заголовок x-request-id; укажите его при обращении в поддержку.

Если max_tokens не указан, применяется максимальная длина вывода модели.

Потоковая передача

Server-sent events

Укажите stream: true. Фрагменты приходят строками data:, поток завершается data: [DONE]. Добавьте stream_options.include_usage, чтобы получить расход токенов в последнем фрагменте.

Node.js
const stream = await client.chat.completions.create({
  model: "tokenapi-pro",
  messages: [{ role: "user", content: "Write a haiku." }],
  stream: true,
  stream_options: { include_usage: true }, // final chunk carries usage
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
POST /v1/responses

Responses API

Поддерживает input в виде строки или массива, instructions, функции-инструменты, text.format (JSON Schema) и полную последовательность потоковых событий (response.output_text.delta, response.completed, …).

Node.js
const res = await client.responses.create({
  model: "tokenapi-pro",
  instructions: "Answer in one sentence.",
  input: "What is a token?",
});
console.log(res.output_text);
POST /v1/messages

Anthropic Messages

Для кода, написанного с SDK Anthropic. Поддерживает system, текстовые блоки и изображения, tools с tool_use / tool_result и потоковые события. Ошибки возвращаются в формате Anthropic.

Node.js · @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";

const anthropic = new Anthropic({
  baseURL: "https://tokenapi.biz",   // SDK appends /v1/messages
  apiKey: process.env.TOKENAPI_KEY,
});

const msg = await anthropic.messages.create({
  model: "tokenapi-pro",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello!" }],
});
Ошибки

Объекты ошибок в стиле OpenAI

Пример
{
  "error": {
    "message": "The model 'nope' does not exist or is disabled.",
    "type": "invalid_request_error",
    "code": "model_not_found",
    "param": null
  }
}
400invalid_request_error

Некорректный JSON, нет model/messages или неподдерживаемый параметр.

401invalid_api_key

API-ключ отсутствует, неверен, отключён или просрочен.

402insufficient_quota

Баланса не хватает на максимальную стоимость запроса, или достигнут потолок расходов ключа. Пополните баланс или уменьшите max_tokens.

403model_not_allowed

Этот ключ ограничен другими моделями.

404model_not_found

Неизвестный или отключённый ID модели. Действующие ID — в GET /v1/models.

429rate_limit_exceeded

Превышен лимит запросов в минуту для ключа. Повторите после времени, указанного в заголовке Retry-After.

502upstream_unavailable

Все маршруты этой модели дали сбой. Запрос можно безопасно повторить.

Сбои поставщика автоматически повторяются по другому маршруту, прежде чем вы увидите ошибку. Код 502 означает, что все маршруты дали сбой и списаний не было.

Оплата и лимиты

Предоплата, оплата за токены, без ухода в минус.

  • Цены задаются для каждой модели в долларах США за миллион входных и выходных токенов (см. Модели).
  • Перед выполнением запроса с баланса резервируется его максимально возможная стоимость (промпт плюс max_tokens). Если баланса не хватает, вы получаете 402, и запрос не отправляется поставщику.
  • После завершения запроса списываются фактические токены, а остаток резерва сразу возвращается.
  • Запросы, завершившиеся ошибкой до начала ответа модели (любой ответ с ошибкой 4xx/5xx), не оплачиваются. Если поток отменён или прервался на середине, оплачиваются только уже сгенерированные токены.
  • Лимиты запросов действуют для каждого API-ключа в запросах в минуту; при превышении вы получаете 429 с Retry-After.
Совместимость

Пока не поддерживается

  • /v1/responses: previous_response_id (отправляйте весь диалог целиком), встроенные инструменты вроде web_search и входные данные file_id.
  • /v1/messages: расширенный thinking и cache_control игнорируются.
  • n > 1 в Chat Completions.
Есть вопросы? Напишите нам