Primeira chamada à API Tokia
Como fazer sua primeira chamada /v1/chat/completions com curl, Python e Node.js. Inclui validação que o evento apareceu em /dashboard/usage.
Você tem a key sk-tokia-... (do manual 02).
Agora vamos testar com a chamada mais simples — pedindo um "oi" pro modelo
Tokia Free Test (sem custo).
Versão curl (qualquer SO)
Cola no terminal. Substitui sk-tokia-... pela sua key:
curl https://api.usetokia.com/v1/chat/completions \
-H "Authorization: Bearer sk-tokia-..." \
-H "Content-Type: application/json" \
-d '{
"model": "test-free",
"messages": [{"role": "user", "content": "diga oi em 3 palavras"}],
"max_tokens": 20
}'
Resposta esperada (em ~3s):
{
"id": "gen-...",
"model": "openrouter/openai/gpt-oss-120b:free",
"object": "chat.completion",
"choices": [{
"finish_reason": "stop",
"message": {
"content": "Olá tudo bem.",
"role": "assistant"
}
}],
"usage": {
"completion_tokens": 6,
"prompt_tokens": 12,
"total_tokens": 18,
"cost": 0
}
}
Versão Python (SDK OpenAI)
from openai import OpenAI
client = OpenAI(
base_url="https://api.usetokia.com/v1",
api_key="sk-tokia-...",
)
response = client.chat.completions.create(
model="test-free",
messages=[{"role": "user", "content": "diga oi em 3 palavras"}],
max_tokens=20,
)
print(response.choices[0].message.content)
Versão Node.js / TypeScript (SDK OpenAI)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.usetokia.com/v1",
apiKey: process.env.TOKIA_API_KEY,
});
const response = await client.chat.completions.create({
model: "test-free",
messages: [{ role: "user", content: "diga oi em 3 palavras" }],
max_tokens: 20,
});
console.log(response.choices[0]?.message.content);
Modelos disponíveis
Use o ID Tokia (alias) ou o upstreamModelId (ID OpenRouter completo). Tokia
traduz automaticamente o alias antes de chamar LiteLLM.
| Alias Tokia | upstream | Markup | Indicação |
|---|---|---|---|
| test-free | openrouter/openai/gpt-oss-120b:free | 1.0x | testes — custo R$ 0 |
| gpt-4o-mini | openai/gpt-4o-mini | 2.0x | uso geral barato |
| claude-sonnet-46 | anthropic/claude-sonnet-4.6 | 1.5x | qualidade premium |
| deepseek-v3 | deepseek/deepseek-chat-v3 | 3.0x | OSS top-of-line |
| gemini-flash | google/gemini-2.5-flash | 3.0x | rápido + multimodal |
| llama-3-3-70b | meta-llama/llama-3.3-70b-instruct | 3.0x | OSS popular |
Validar evento em /dashboard/usage
Após a chamada, aguarde ~70 segundos (cron reconcile_spend roda a cada 60s).
Acesse /dashboard/usage:

Você verá:
- Chamadas: contador incrementado
- Gasto total: R$ 0,00 (modelo free)
- Por modelo: linha "Tokia Free Test (gpt-oss-120b)" com 1 chamada
Streaming SSE (chat completions)
Tokia suporta stream: true pra resposta em tempo real:
const stream = await client.chat.completions.create({
model: "test-free",
messages: [{ role: "user", content: "conta uma história curta" }],
stream: true,
stream_options: { include_usage: true },
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Imagens (Flux Schnell ~4s)
curl https://api.usetokia.com/v1/images/generations \
-H "Authorization: Bearer sk-tokia-..." \
-H "Content-Type: application/json" \
-d '{
"model": "flux-schnell",
"prompt": "logo minimalista de café com fundo verde",
"n": 1,
"size": "1024x1024"
}'
Erros mais comuns
- 401 authentication_failed: key inválida, revogada, expirada ou suspensa (saldo zerado). Verifica /dashboard/keys.
- 402 insufficient_balance: saldo zerou. Recarrega via PIX.
- 404 model_not_found: typo no model ID. Use /v1/models pra ver lista atual.
- 429 rate_limit: você passou do limite do provider upstream (raro pra modelos pagos). Tenta de novo em 10s.
- 502 upstream_error: provider upstream caiu. Tokia loga internamente, Sentry alerta. Tenta de novo.
Próximo passo
Setup Auto Top-Up via cartão pra recarga automática quando saldo baixar.