/v1/modelsСписок моделей
Публичные ID моделей с возможностями, размером контекста и ценами.
TokenAPI поддерживает форматы Chat Completions и Responses от OpenAI и формат Messages от Anthropic. Используйте официальные SDK без изменений и выберите ID в списке моделей.
https://tokenapi.biz/v1
Все эндпоинты:
/v1/modelsПубличные ID моделей с возможностями, размером контекста и ценами.
/v1/models/{id}Один объект модели.
/v1/chat/completionsФормат Chat Completions от OpenAI, с потоковой передачей и без.
/v1/responsesФормат Responses от OpenAI (без состояния), с потоковой передачей и без.
/v1/messagesФормат Messages от Anthropic для SDK Anthropic.
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!" }]
}'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);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)Authorization: Bearer sk-tk-…
Заголовок x-api-key в стиле Anthropic тоже поддерживается. Ключи начинаются с sk-tk-, показываются один раз при создании и могут ограничиваться по отдельности (запросы в минуту, потолок расходов, доступные модели, срок действия). Храните ключи на сервере и никогда не встраивайте их в код браузера или мобильного приложения. Чтобы получить ключ, напишите на hello@tokenapi.biz.
Передавайте id из GET /v1/models в параметре model. ID модели — это стабильный продукт: чтобы сохранять качество и доступность, мы можем обновлять или менять обслуживающий его бэкенд без каких-либо изменений с вашей стороны. В ответах всегда указан вызванный ID.
{
"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 — доллары США за миллион токенов.
Запрос и ответ соответствуют формату OpenAI: messages с текстом и изображениями, tools / tool_choice, response_format, temperature, top_p, stop, max_tokens или max_completion_tokens. В каждом ответе есть заголовок x-request-id; укажите его при обращении в поддержку.
Если max_tokens не указан, применяется максимальная длина вывода модели.
Укажите stream: true. Фрагменты приходят строками data:, поток завершается data: [DONE]. Добавьте stream_options.include_usage, чтобы получить расход токенов в последнем фрагменте.
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 ?? "");
}Поддерживает input в виде строки или массива, instructions, функции-инструменты, text.format (JSON Schema) и полную последовательность потоковых событий (response.output_text.delta, response.completed, …).
const res = await client.responses.create({
model: "tokenapi-pro",
instructions: "Answer in one sentence.",
input: "What is a token?",
});
console.log(res.output_text);Для кода, написанного с SDK Anthropic. Поддерживает system, текстовые блоки и изображения, tools с tool_use / tool_result и потоковые события. Ошибки возвращаются в формате Anthropic.
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!" }],
});{
"error": {
"message": "The model 'nope' does not exist or is disabled.",
"type": "invalid_request_error",
"code": "model_not_found",
"param": null
}
}invalid_request_errorНекорректный JSON, нет model/messages или неподдерживаемый параметр.
invalid_api_keyAPI-ключ отсутствует, неверен, отключён или просрочен.
insufficient_quotaБаланса не хватает на максимальную стоимость запроса, или достигнут потолок расходов ключа. Пополните баланс или уменьшите max_tokens.
model_not_allowedЭтот ключ ограничен другими моделями.
model_not_foundНеизвестный или отключённый ID модели. Действующие ID — в GET /v1/models.
rate_limit_exceededПревышен лимит запросов в минуту для ключа. Повторите после времени, указанного в заголовке Retry-After.
upstream_unavailableВсе маршруты этой модели дали сбой. Запрос можно безопасно повторить.
Сбои поставщика автоматически повторяются по другому маршруту, прежде чем вы увидите ошибку. Код 502 означает, что все маршруты дали сбой и списаний не было.
max_tokens). Если баланса не хватает, вы получаете 402, и запрос не отправляется поставщику.Retry-After./v1/responses: previous_response_id (отправляйте весь диалог целиком), встроенные инструменты вроде web_search и входные данные file_id./v1/messages: расширенный thinking и cache_control игнорируются.n > 1 в Chat Completions.