Primeiros passosGuia
Primeira requisição à CheapTokens com HTTPie: chave no env, = e :=
Um comando http legível que envia um chat completion com a chave em uma variável de ambiente e depois mostra onde estão a resposta e o uso de tokens.

Nesta página
Você quer saber que a chave funciona e que o id do modelo está certo, e quer saber isso em uma linha. O comando http do HTTPie faz isso com muito menos aspas que o curl: você digita os campos, ele monta o JSON. Aqui está a requisição completa, e o resto do artigo explica cada parte.
export CHEAPTOKENS_API_KEY="paste-your-key-here"
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]'A API é compatível com OpenAI, então a URL base é https:/ e as requisições de chat vão para / sob ela. O id do modelo é o completo, deepseek- (o nome curto das tabelas de preço não é aceito). Se você nunca armazenou uma chave antes, armazene uma chave de API com segurança primeiro: digitar a linha export coloca a chave no histórico do seu shell, então um arquivo de perfil ou um gerenciador de segredos é um lugar melhor para ela.

O que = e := realmente fazem#
Esta é a única parte do HTTPie que você precisa aprender. A documentação JSON do HTTPie (versão 3.2.4, de 1 de novembro de 2024, lida em 9 de novembro de 2026) diz que = define um campo string e := define um valor JSON bruto: um número, um booleano, um array ou um objeto. Campos fornecidos dessa forma são enviados como corpo JSON por padrão, então você não adiciona um cabeçalho Content-Type por conta própria.
Na nossa requisição isso dá três formatos diferentes:
model=deepseek-é uma string, entãoai/ DeepSeek- V4- Flash- 0731 =.max_tokens:=200é um número, então:=. Com=você enviaria a string"200".messages:=[…]é um array de objetos, então:=de novo, e o valor vai entre aspas simples para o shell deixar as aspas duplas internas em paz.
A documentação também diz que um corpo vindo do stdin não pode ser combinado com campos de linha de comando, então escolha um estilo. Para um primeiro teste, os campos são mais curtos e fáceis de editar.
Verificação rápida
O que max_tokens=200 (com um = simples) envia?
Mostrar resposta
Resposta: A string "200"
= sempre cria uma string. Para um número você precisa de :=, então escreva max_tokens:=200.
Onde está a resposta#
A resposta segue o formato de chat-completions da OpenAI. Você procura três coisas, e elas ficam em lugares diferentes:
{
"choices": [
{
"message": { "role": "assistant", "content": "…the answer text…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
}O texto da resposta é choices[0].. finish_reason fica ao lado dele na mesma choice, e usage fica no nível superior. usage mostra quantos tokens você enviou (prompt_tokens) e quantos o modelo escreveu (completion_), o que é útil para estimar o custo de uma requisição.

Se você só quer o texto, canalize o corpo para jq:
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]' \
| jq -r '.choices[0].message.content'Experimente você mesmoExperimente: deixe o limite pequeno demais e leia o finish_reasonMostrar resposta
Mude max_tokens:=200 para max_tokens:=5 e execute de novo. A resposta é cortada, e finish_reason lê length em vez de stop: o limite parou o modelo, não o fim do raciocínio. Por que uma resposta é cortada cobre a solução.
Troque o modelo: mude um campo#
O modelo é uma string, então testar outro é uma edição de uma palavra. Os dois ids abaixo estão disponíveis na CheapTokens com um único saldo; DeepSeek-V4-Flash oferece um contexto de 380K e até 32.768 tokens de saída por resposta, GLM-5.3-Flash um contexto de 390K e até 8.192.
Uma requisição, dois modelos
DeepSeek-V4-Flash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'GLM-5.3-Flash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=zai-org/GLM-5.3-Flash \
max_tokens:=200 \
'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'Não sabe qual id usar? Liste os modelos com GET /v1/models e copie a string exata.
Quanto custa uma requisição de teste#
Uma pergunta curta como esta é barata. Digamos que a pergunta tenha cerca de 100 tokens e a resposta cerca de 150: essa requisição custa $0.000017. Mil delas ficam assim, com entrada e saída contadas juntas:
| 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.000008 | $0.008 | $0.0158 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000017 | $0.0165 | $0.028 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000028 | $0.0275 | $0.33 |
100 tokens de entrada e 150 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 total, com entrada e saída contadas juntas, o DeepSeek-V4-Flash sai mais barato que na OpenRouter, e o preço é uma tarifa fixa sem horários de pico. As tarifas atuais de cada modelo estão na página de preços.
Se não funcionar#
- Você digitou
messages=[…]com um=simples. O array vai como string, não como lista de mensagens. Use:=e aspas simples em volta do valor inteiro. - O JSON dentro de
:=é inválido. Toda chave e string precisa de aspas duplas, e as aspas externas devem ser simples. Se você editar o texto da mensagem, mantenha as aspas balanceadas. - A chave está vazia.
echo ${#CHEAPTOKENS_imprime o comprimento sem mostrar a chave;API_ KEY} 0significa que a variável não está definida neste terminal. - O id do modelo é o nome curto. Use o
deepseek-completo. Para respostas 401 e 404, veja chave, URL base ou id de modelo errados.ai/ DeepSeek- V4- Flash- 0731 - Você recorreu a
--session. A documentação de autenticação do HTTPie diz que arquivos de sessão armazenam credenciais em texto puro, então mantenha a chave no ambiente e deixe--sessionfora deste comando.
Verifique sua versão com http --version se alguma flag se comportar de forma diferente do que está acima. Prefere Python? A mesma requisição sem SDK está em primeira requisição em Python com requests. Para a referência completa da API, veja a documentação da CheapTokens.



