Per iniziareGuida
Prima richiesta a CheapTokens con HTTPie: chiave nell'env, = e :=
Un comando http leggibile che invia un chat completion con la chiave in una variabile d'ambiente, poi mostra dove sono la risposta e l'utilizzo dei token.

In questa pagina
Vuoi sapere che la chiave funziona e che l'id del modello è corretto, e vuoi saperlo in una riga. Il comando http di HTTPie lo fa con molte meno virgolette di curl: digiti i campi, lui costruisce il JSON. Ecco la richiesta completa, e il resto dell'articolo spiega ogni pezzo.
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?"}]'L'API è compatibile con OpenAI, quindi l'URL di base è https:/ e le richieste di chat vanno a / sotto di esso. L'id del modello è quello completo, deepseek- (il nome breve delle tabelle dei prezzi non è accettato). Se non hai mai memorizzato una chiave, prima memorizza una chiave API in modo sicuro: digitare la riga export mette la chiave nella cronologia della shell, quindi un file di profilo o un gestore di segreti è una casa migliore per essa.

Cosa fanno davvero = e :=#
Questa è l'unica parte di HTTPie che devi imparare. La documentazione JSON di HTTPie (versione 3.2.4, datata 1 novembre 2024, letta il 9 novembre 2026) dice che = imposta un campo stringa e := imposta un valore JSON grezzo: un numero, un booleano, un array o un oggetto. I campi forniti in questo modo vengono inviati come corpo JSON per impostazione predefinita, quindi non aggiungi tu stesso un header Content-Type.
Nella nostra richiesta questo dà tre forme diverse:
model=deepseek-è una stringa, quindiai/ DeepSeek- V4- Flash- 0731 =.max_tokens:=200è un numero, quindi:=. Con=invieresti la stringa"200".messages:=[…]è un array di oggetti, quindi di nuovo:=, e il valore va tra virgolette singole così la shell lascia stare le virgolette doppie interne.
La documentazione dice anche che un corpo da stdin non può essere combinato con i campi da riga di comando, quindi scegli uno stile. Per un primo test i campi sono più brevi e più facili da modificare.
Verifica rapida
Cosa invia max_tokens=200 (con un semplice =)?
Mostra risposta
Risposta: La stringa "200"
= crea sempre una stringa. Per un numero ti serve :=, quindi scrivi max_tokens:=200.
Dove si trova la risposta#
La risposta segue il formato chat-completions di OpenAI. Stai cercando tre cose, e si trovano in posti diversi:
{
"choices": [
{
"message": { "role": "assistant", "content": "…the answer text…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
}Il testo della risposta è choices[0].. finish_reason è accanto ad esso nella stessa choice, e usage è al livello superiore. usage mostra quanti token hai inviato (prompt_tokens) e quanti ne ha scritti il modello (completion_), il che è comodo per stimare il costo di una richiesta.

Se vuoi solo il testo, passa il corpo a 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'Provalo tu stessoProvalo: rendi il limite troppo piccolo e leggi finish_reasonMostra risposta
Cambia max_tokens:=200 in max_tokens:=5 ed esegui di nuovo. La risposta viene troncata, e finish_reason legge length invece di stop: il limite ha fermato il modello, non la fine del pensiero. Perché una risposta viene troncata spiega la soluzione.
Cambia il modello: modifica un campo#
Il modello è una stringa, quindi provarne un altro è una modifica di una parola. Entrambi gli id sotto sono disponibili su CheapTokens con un solo saldo; DeepSeek-V4-Flash ti dà un contesto di 380K e fino a 32.768 token di output per risposta, GLM-5.3-Flash un contesto di 390K e fino a 8.192.
Una richiesta, due modelli
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."}]'Non sei sicuro di quale id usare? Elenca i modelli con GET /v1/models e copia la stringa esatta.
Quanto costa una richiesta di test#
Una domanda breve come questa costa poco. Diciamo che la domanda sia di circa 100 token e la risposta di circa 150: quella richiesta costa $0.000017. Mille di queste appaiono così, con input e output contati insieme:
| Modello | Input $/1M | Output $/1M | Per richiesta | 1000 richieste | OpenRouter, 1000 richieste |
|---|---|---|---|---|---|
| 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 token di input e 150 token di output per richiesta. I prezzi per 1M di token sono attuali e cambiano insieme alle nostre tariffe; la colonna OpenRouter mostra i prezzi di riferimento per lo stesso carico di lavoro.
In totale, con input e output contati insieme, DeepSeek-V4-Flash risulta più economico di OpenRouter, e il prezzo è una tariffa fissa senza ore di punta. Le tariffe attuali per ogni modello sono sulla pagina dei prezzi.
Se non funziona#
- Hai digitato
messages=[…]con un semplice=. L'array viene inviato come stringa, non come elenco di messaggi. Usa:=e virgolette singole attorno all'intero valore. - Il JSON dentro
:=non è valido. Ogni chiave e stringa richiede virgolette doppie, e le virgolette esterne devono essere singole. Se modifichi il testo del messaggio, mantieni le virgolette bilanciate. - La chiave è vuota.
echo ${#CHEAPTOKENS_stampa la lunghezza senza mostrare la chiave;API_ KEY} 0significa che la variabile non è impostata in questo terminale. - L'id del modello è il nome breve. Usa il
deepseek-completo. Per risposte 401 e 404, vedi chiave, URL di base o id del modello sbagliati.ai/ DeepSeek- V4- Flash- 0731 - Hai pensato a
--session. La documentazione sull'autenticazione di HTTPie dice che i file di sessione memorizzano le credenziali in testo semplice, quindi tieni la chiave nell'ambiente e lascia--sessionfuori da questo comando.
Controlla la tua versione con http --version se un flag si comporta diversamente da quanto sopra. Preferisci Python? La stessa richiesta senza SDK è in prima richiesta in Python con requests. Per il riferimento completo dell'API, vedi la documentazione di CheapTokens.



