Primeiros passosGuia
Primeira requisição de API no VS Code: um arquivo .http, chave do .env
Envie sua primeira chat completion ao CheapTokens pelo VS Code com a extensão REST Client, mantenha a chave fora do git e encontre a resposta e o uso de tokens.

Nesta página
Você pode enviar sua primeira requisição ao CheapTokens sem sair do VS Code: instale a extensão REST Client, escreva um arquivo .http, mantenha a chave em um .env ao lado dele e pressione Ctrl+Alt+R. A resposta abre em um painel ao lado do arquivo, e o texto e a contagem de tokens são dois campos que você encontra de relance.
Se você já tem um editor aberto, isso é melhor do que instalar outro app só para dizer "Hello" a um modelo. E a requisição fica em um arquivo de texto simples, então você pode executá-la de novo amanhã ou commitá-la (sem a chave) para um colega. Outras formas de enviar a mesma requisição estão em Primeira requisição com HTTPie e Sua primeira requisição de API com CheapTokens.
Instale a extensão e coloque a chave no .env#
REST Client é a extensão humao.. No VS Code, pressione F1, digite ext install, procure por rest-client e instale. (Verificado no README da extensão em 9 de novembro de 2026.)
Agora a chave. O README descreve {{$dotenv NAME}}: ele lê um valor de um arquivo .env que fica no mesmo diretório do seu arquivo .http. É exatamente o que queremos, porque a chave nunca aparece no arquivo de requisição. Crie uma pasta para o experimento e coloque dois arquivos nela.
.env:
CHEAPTOKENS_API_KEY=paste-your-key-here.gitignore:
.envCrie a chave na sua conta CheapTokens e cole-a no lugar do placeholder. Por que a linha de ignore importa, e o que fazer se uma chave acabar em um commit, está em Armazene uma chave de API com segurança.
Colocar em ordem
Coloque a configuração na ordem certa
Arraste os itens ou use as setas
- Instale a extensão REST Client
- Adicione .env ao .gitignore
- Coloque a chave no .env ao lado do arquivo .http
- Pressione Ctrl+Alt+R na requisição
Escreva o arquivo .http#
Crie first.http na mesma pasta. A sintaxe é curta: uma linha de requisição (POST URL HTTP/, o método é opcional e o padrão é GET), linhas de cabeçalho Name: value até a primeira linha vazia, depois o corpo após uma linha em branco. As requisições são separadas por uma linha de três ou mais #.
### First request
POST https://api.cheaptokens.dev/v1/chat/completions
Authorization: Bearer {{$dotenv CHEAPTOKENS_API_KEY}}
Content-Type: application/json
{
"model": "zai-org/GLM-5.3-Flash",
"messages": [{ "role": "user", "content": "Hello" }]
}Três coisas para observar. O endereço é a base da API do CheapTokens, https:/, mais /. O modelo é escrito com seu id completo, zai-: um modelo com contexto de 390K que pode escrever até 8.192 tokens por resposta. E a chave é apenas um placeholder {{$dotenv …}}, então este arquivo é seguro para commit.

Se a sua configuração não pegar o arquivo .env, o README também descreve {{$processEnv NAME}}, que lê uma variável do ambiente da sua máquina.
Envie e encontre a resposta#
Clique em "Send Request" acima da linha de requisição, ou pressione Ctrl+Alt+R (Cmd+Alt+R no macOS). Você também pode clicar com o botão direito ou usar F1. A resposta abre em um painel separado. Se você preferir uma aba de editor normal, onde pode buscar e recolher, defina rest- como true nas configurações.
A resposta é o JSON padrão de chat-completions. Dois lugares importam no primeiro dia:
choices[0].é o texto da resposta. Ao lado dele,message. content finish_reasondiz por que o modelo parou.lengthsignifica que a resposta foi cortada pelo limite de tokens.usagecontém as contagens de tokens desta requisição: tokens que você enviou e tokens que o modelo escreveu. É por isso que você paga, então olhe sempre.

Experimente você mesmoTeste: como você vê que uma resposta foi cortada?Mostrar resposta
Olhe finish_reason na resposta. Se disser length, o modelo atingiu o limite de tokens antes de terminar. Adicione uma linha "max_tokens" ao corpo, ou aumente-a, e envie de novo.
Para ter uma noção de dinheiro: digamos que você envie esta requisição 100 vezes com cerca de 1.000 tokens de entrada e 300 de saída (uma suposição para o exemplo, não uma medição).
| Modelo | Entrada $/1M | Saída $/1M | Por solicitação | 100 solicitações | OpenRouter, 100 solicitações |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000032 | $0.0032 | $0.0058 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000045 | $0.0045 | $0.0112 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000095 | $0.0095 | $0.114 |
1.000 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.
A tabela mostra o preço ao vivo dessa carga de trabalho em cada modelo, com uma coluna OpenRouter para comparar. Um "Hello" minúsculo custa muito menos.
Troque o modelo em uma linha#
A parte prática de um arquivo de texto simples: mude uma linha e envie de novo. Substitua o id do modelo por deepseek- (contexto de 380K, até 32.768 tokens por resposta, um preço a qualquer hora do dia, no total mais barato que o OpenRouter com entrada e saída somadas) e pressione Ctrl+Alt+R mais uma vez. Mesmo corpo, mesma chave, uma resposta diferente e um usage diferente.
Quer manter os dois? Cole uma segunda requisição abaixo de uma linha ### com o outro id de modelo. Cada requisição ganha seu próprio link Send Request, então você pode executá-las uma após a outra e comparar. Não tem certeza de um id? Liste modelos com GET /v1/models mostra as strings exatas.
Se não funcionar#
Emparelhar os pares
Relacione o sintoma à causa
Toque num item à esquerda, depois no seu par
- 401 UnauthorizedA chave está vazia ou errada, muitas vezes porque o .env não está na mesma pasta que o arquivo .http
- 404 Not FoundUm erro de digitação no caminho da URL ou no id do modelo
- A resposta para no meio da frase, finish_reason é lengthO limite de tokens foi atingido, aumente max_tokens
Para os dois primeiros, API 401 ou 404: chave, URL base ou id de modelo errados percorre as verificações. Os detalhes completos da requisição estão na documentação do CheapTokens, e os preços atuais estão na página de preços.
Esse é o fluxo inteiro: um arquivo, uma chave no .env, um atalho. A partir daqui você pode adicionar uma mensagem de sistema, mudar max_tokens ou transformar o mesmo corpo em código em qualquer linguagem.



