/v1/modelsListar modelos
IDs de modelo públicos com recursos, tamanho de contexto e preços.
A TokenAPI fala os formatos Chat Completions e Responses da OpenAI e o formato Messages da Anthropic. Use os SDKs oficiais sem alterações e escolha um ID na lista de modelos.
https://tokenapi.biz/v1
Todos os endpoints:
/v1/modelsIDs de modelo públicos com recursos, tamanho de contexto e preços.
/v1/models/{id}Um único objeto de modelo.
/v1/chat/completionsFormato Chat Completions da OpenAI, com e sem streaming.
/v1/responsesFormato Responses da OpenAI (sem estado), com e sem streaming.
/v1/messagesFormato Messages da Anthropic, para o SDK da 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-…
O cabeçalho x-api-key no estilo Anthropic também é aceito. As keys começam com sk-tk-, são exibidas uma única vez na criação e podem ser limitadas individualmente (requisições por minuto, teto de gasto, modelos permitidos, expiração). Guarde as keys no servidor; nunca as coloque em código de navegador ou mobile. Para obter uma key, escreva para hello@tokenapi.biz.
Use o id retornado por GET /v1/models como parâmetro model. Um ID de modelo é um produto estável: podemos atualizar ou trocar o backend que o serve para manter a qualidade e a disponibilidade, sem nenhuma mudança do seu lado. As respostas sempre informam o ID chamado.
{
"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 são USD por token (strings); input_per_million / output_per_million são USD por milhão de tokens.
Requisição e resposta seguem o formato da OpenAI: messages com texto e imagens, tools / tool_choice, response_format, temperature, top_p, stop, max_tokens ou max_completion_tokens. Toda resposta traz o cabeçalho x-request-id; informe-o ao falar com o suporte.
Se você omitir max_tokens, vale o tamanho máximo de saída do modelo.
Defina stream: true. Os trechos chegam como linhas data: e o stream termina com data: [DONE]. Adicione stream_options.include_usage para receber o uso de tokens num último trecho.
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 ?? "");
}Aceita input como string ou array, instructions, ferramentas de função, text.format (JSON Schema) e a sequência completa de eventos de streaming (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);Para código escrito com o SDK da Anthropic. Aceita system, blocos de texto e imagem, tools com tool_use / tool_result e eventos de streaming. Os erros seguem o formato da 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_errorJSON malformado, model/messages ausente ou parâmetro não suportado.
invalid_api_keyAPI key ausente, incorreta, desativada ou expirada.
insufficient_quotaO saldo não cobre o custo máximo desta requisição, ou o teto de gasto da key foi atingido. Recarregue ou reduza max_tokens.
model_not_allowedEsta key está restrita a outros modelos.
model_not_foundID de modelo desconhecido ou desativado. Consulte os IDs válidos com GET /v1/models.
rate_limit_exceededLimite de requisições por minuto da key excedido. Tente de novo após o tempo indicado no cabeçalho Retry-After.
upstream_unavailableTodas as rotas de backend deste modelo falharam. É seguro tentar de novo.
Falhas do provedor são refeitas automaticamente em outra rota antes de você ver um erro. Um 502 significa que todas as rotas falharam e nada foi cobrado.
max_tokens) é reservado do seu saldo. Se o saldo não cobrir, você recebe um 402 e nada é enviado ao provedor.Retry-After./v1/responses: previous_response_id (envie a conversa completa), ferramentas nativas como web_search e entradas file_id./v1/messages: o thinking estendido e cache_control são ignorados.n > 1 em Chat Completions.