Primeiros passosGuia
Migre do OpenRouter para o CheapTokens: base_url, chave, id do modelo
Altere base_url, chave de API e id do modelo no SDK da OpenAI (Python e JavaScript), envie uma primeira requisição e confirme que funcionou.

Nesta página
Seu app já chama o OpenRouter pelo SDK da OpenAI, e você quer que ele chame o CheapTokens. Você altera três valores — base_url, a chave de API e o id do model — e remove dois headers opcionais. O resto do código fica como está.
Abaixo estão as linhas exatas para Python, JavaScript e curl, uma forma rápida de confirmar que a troca funcionou e uma tabela de qual modelo serve para qual tarefa. Se você nunca enviou uma requisição ao CheapTokens, o guia da primeira requisição de API cobre a conta e a chave; a documentação tem a referência completa.
O que realmente muda#
O quickstart do OpenRouter (verificado em 27 de outubro de 2026) configura o cliente da OpenAI com a base URL https:/ e nomeia os modelos como provider/. O CheapTokens fala o mesmo formato OpenAI Chat Completions em https:/. Então a classe do cliente, o chat. e a forma como você lê a resposta não mudam.

É uma troca por linha:
- base URL —
https:/em vez do endereço do OpenRouter;/ api. cheaptokens. dev/ v1 - chave de API — uma chave da sua conta CheapTokens, lida de uma variável de ambiente;
- id do modelo — o id completo do CheapTokens, por exemplo
deepseek-. Pegue os ids na documentação do CheapTokens: provedores diferentes nomeiam o mesmo modelo de formas diferentes, e ids curtos de rótulos de preço não são aceitos.ai/ DeepSeek- V4- Flash- 0731
E uma remoção. Os headers HTTP-Referer e X- do OpenRouter são opcionais e só alimentam os leaderboards do OpenRouter. Remova-os de default_headers / defaultHeaders; você não precisa deles aqui.
O código depois da troca#
Mesma requisição, três runtimes. Escolha o que seu app usa.
Seu código depois da troca
Python
import os
from openai import OpenAI
client = OpenAI(
base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'],
)
resp = client.chat.completions.create(
model='deepseek-ai/DeepSeek-V4-Flash-0731',
messages=[{'role': 'user', 'content': 'Reply with one word: ready'}],
max_tokens=20,
)
print(resp.choices[0].message.content)JavaScript
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.cheaptokens.dev/v1',
apiKey: process.env.CHEAPTOKENS_API_KEY,
});
const resp = await client.chat.completions.create({
model: 'deepseek-ai/DeepSeek-V4-Flash-0731',
messages: [{ role: 'user', content: 'Reply with one word: ready' }],
max_tokens: 20,
});
console.log(resp.choices[0].message.content);curl
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-ai/DeepSeek-V4-Flash-0731", "messages": [{"role": "user", "content": "Reply with one word: ready"}], "max_tokens": 20}'Mais uma coisa antes de executar. Se sua requisição carrega campos exclusivos do OpenRouter — listas de roteamento ou fallback, preferências de provedor, ids de modelo ~alias — eles pertencem ao OpenRouter. Mantenha a requisição com os campos padrão do Chat Completions: model, messages, temperature, max_tokens, stream.
Confirme que funcionou#
Uma resposta não é prova suficiente. Imprima três coisas ao lado dela: qual modelo respondeu, por que parou e quanto cobrou em tokens.
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
finish_reason de stop significa que o modelo terminou sozinho. length significa que max_tokens cortou a resposta. usage mostra tokens de entrada e saída separadamente, e esses são os dois números que compõem sua fatura — os mesmos dois que você acompanhava no OpenRouter.
Experimente você mesmoTeste: o que finish_reason diz se você definir max_tokens como 1?Mostrar resposta
Diz length — a resposta foi cortada por max_tokens. Bom teste para verificar se seu código trata uma resposta truncada.
Qual modelo substitui o quê#
Escolha o modelo pela tarefa, não pelo nome que você usava no OpenRouter. Os dados abaixo vêm da lista de preços do CheapTokens verificada em 27 de outubro de 2026; um único saldo cobre os três modelos e o preço não muda com o horário do dia.
Role a tabela para a direita →
| Modelo | id model |
Contexto | Resposta máxima |
|---|---|---|---|
| DeepSeek-V4-Flash | deepseek- |
380K | 32.768 tokens |
| GLM-5.3-Flash | zai- |
390K | 8.192 tokens |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8.192 tokens |
Não sabe qual linha é a sua? Comece pelo que o app faz:
Escolha o seu caso
O que seu app faz na maior parte do tempo?
Escolha uma opção para ver a resposta
Requisições curtas e frequentes — classificação, extração, respostas de suporte
Experimente zai-: contexto de 390K, respostas de até 8.192 tokens, e é mais barato que o OpenRouter no total, somando entrada e saída.
Respostas longas, código, loops de agente
Experimente deepseek-: respostas de até 32.768 tokens, contexto de 380K, um preço em qualquer horário do dia.
Uma carga de trabalho constante pela qual você hoje paga uma tarifa alta no OpenRouter
Experimente MiniMaxAI/: contexto de 180K, respostas de até 8.192 tokens, e no total sai mais barato que o OpenRouter.
Quanto custa o mesmo tráfego#
Digamos que seu bot envie 1.000 requisições, cada uma com cerca de 500 tokens de entrada e 300 de saída. Isso é uma suposição — troque pelos seus próprios números do usage. A tabela abaixo é dinâmica: nossos preços e a coluna do OpenRouter vêm da lista de preços atual, somando entrada e saída.
| Modelo | Entrada $/1M | Saída $/1M | Por solicitação | 1.000 solicitações | OpenRouter, 1.000 solicitações |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000022 | $0.022 | $0.0434 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000038 | $0.0375 | $0.0708 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00007 | $0.07 | $0.51 |
500 tokens de entrada e 300 tokens de saída por solicitação. Os preços por 1M de tokens são atuais e mudam junto com nossas tarifas; a coluna OpenRouter mostra preços de referência para a mesma carga de trabalho.
No DeepSeek-V4-Flash, essas 1.000 requisições somam $0.0375. Os preços completos estão na página de preços; a ideia do que você paga está em tokens de entrada vs saída.
Se não funcionar#
Depois de uma troca, três erros cobrem a maior parte dos problemas. Relacione a mensagem à causa:
Emparelhar os pares
Relacione cada sintoma à sua causa
Toque num item à esquerda, depois no seu par
- 401 UnauthorizedA chave está ausente, digitada errado ou ainda é a do OpenRouter
- 404 Not FoundO caminho da base URL está errado ou o id do modelo não é um id completo do CheapTokens
- Resposta cortada no meio da frasemax_tokens é menor do que a resposta precisa; finish_reason diz length
O artigo de solução de problemas 401 e 404 percorre cada um com as mensagens exatas, e o que é base_url explica por que uma barra errada quebra o caminho.
Antes de publicar#
Lista de verificação
Checklist da troca



