Voltar ao blog

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.

Por CheapTokens TeamPublicado em 5 min de leitura

Arquivo de requisição do VS Code com um POST para a API do CheapTokens e a chave lida do .env
Nesta página
  1. Instale a extensão e coloque a chave no .env
  2. Escreva o arquivo .http
  3. Envie e encontre a resposta
  4. Troque o modelo em uma linha
  5. Se não funcionar

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.rest-client. 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:

text
CHEAPTOKENS_API_KEY=paste-your-key-here

.gitignore:

text
.env

Crie 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

  1. Instale a extensão REST Client
  2. Adicione .env ao .gitignore
  3. Coloque a chave no .env ao lado do arquivo .http
  4. 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/1.1, 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 #.

http
### 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://api.cheaptokens.dev/v1, mais /chat/completions. O modelo é escrito com seu id completo, zai-org/GLM-5.3-Flash: 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.

A chave fica no .env; first.http contém apenas uma referência a ela
A chave fica no .env, first.http contém apenas uma referência a ela

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-client.previewResponseInUntitledDocument como true nas configurações.

A resposta é o JSON padrão de chat-completions. Dois lugares importam no primeiro dia:

  • choices[0].message.content é o texto da resposta. Ao lado dele, finish_reason diz por que o modelo parou. length significa que a resposta foi cortada pelo limite de tokens.
  • usage conté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.
De Ctrl+Alt+R ao texto da resposta e ao campo usage
Onde olhar no painel de resposta
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 Por solicitação 100 solicitações OpenRouter, 100 solicitações
GLM-5.3-Flash $0.000032 $0.0032 $0.0058
DeepSeek-V4-Flash $0.000045 $0.0045 $0.0112
MiniMax-M2.7 $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-ai/DeepSeek-V4-Flash-0731 (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

  • 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.