Torna al blog

AI per principiantiGuida

Token di input vs output: cosa ti fattura un'API IA

Perché un'API IA conta separatamente i token di input e di output, dove leggerli nel campo usage e come calcolare il costo di una richiesta.

Di CheapTokens TeamPubblicato il Aggiornato il 6 min di lettura

Copertina con il titolo "Token di input vs output" e la riga "Cosa paghi in una richiesta API" su sfondo a griglia scura
In questa pagina
  1. Cosa conta come input e cosa come output
  2. Dove leggere i numeri: il blocco usage
  3. Perché i due lati hanno prezzi diversi
  4. La formula
  5. Un esempio svolto con un modello reale
  6. Usarlo nel codice
  7. Come spendere meno token
  8. Cosa ricordare

Se hai appena effettuato la tua prima chiamata API a un modello linguistico, probabilmente hai visto un blocco usage nella risposta e ti sei chiesto cosa conti esattamente. La risposta breve: ogni richiesta ha due contatori. Uno conta i token che invii (input), l'altro conta i token che il modello scrive in risposta (output). Ogni contatore ha il proprio prezzo, e il costo di una richiesta è la somma di entrambi.

Questa guida mostra dove trovare i numeri, come convertirli in dollari e cosa puoi cambiare per spendere meno. Se la parola "token" è ancora vaga, inizia da Cos'è un token nell'IA?.

Cosa conta come input e cosa come output#

I token di input sono tutto ciò che il modello deve leggere per risponderti:

  • il tuo ultimo messaggio;
  • il system prompt (istruzioni come "rispondi brevemente, in italiano");
  • i messaggi precedenti della conversazione, se li invii di nuovo;
  • documenti, codice o risultati di ricerca che incolli nella richiesta.

I token di output sono tutto ciò che il modello genera in risposta. Nel formato compatibile con OpenAI è il testo in choices[0].message.content. Alcuni modelli in modalità thinking generano anche token di ragionamento prima della risposta finale; controlla la pagina dei prezzi di un modello per vedere se vengono fatturati come output.

Il punto importante per i principianti: il modello non ricorda la tua chat tra una richiesta e l'altra. Un'app di chat reinvia l'intera cronologia ogni volta, quindi l'input di una conversazione lunga cresce a ogni turno, anche se il tuo nuovo messaggio è una sola riga.

Dove leggere i numeri: il blocco usage#

Ogni risposta non in streaming di un'API compatibile con OpenAI termina con un oggetto usage. Questo è un esempio didattico della sua struttura:

json
{
  "choices": [
    { "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
  ],
  "usage": {
    "prompt_tokens": 2000,
    "completion_tokens": 500,
    "total_tokens": 2500
  }
}
Campo Cosa significa Fatturato come
prompt_tokens Token in tutto ciò che hai inviato Input
completion_tokens Token generati dal modello Output
total_tokens prompt_tokens + completion_tokens Non è un prezzo separato: è solo la somma

Un errore comune dei principianti è moltiplicare total_tokens per un unico prezzo. Poiché input e output hanno prezzi diversi, servono i due numeri separatamente.

Alcuni provider aggiungono campi extra. Ad esempio, l'API di DeepSeek suddivide anche prompt_tokens in prompt_cache_hit_tokens e prompt_cache_miss_tokens e, in modalità thinking, riporta reasoning_tokens (fonte: documentazione API DeepSeek, verificata il 21 ottobre 2026). I tre campi della tabella sono quelli su cui puoi contare in qualsiasi risposta compatibile con OpenAI.

Quando trasmetti la risposta in streaming, l'usage non è noto all'inizio. Nell'API di DeepSeek arriva nell'ultimo chunk di contenuto prima di data: [DONE] (documentazione API DeepSeek, verificata il 21 ottobre 2026); altre API potrebbero inviarlo diversamente o solo su richiesta, quindi controlla cosa riceve il tuo client. Lo streaming in sé è trattato in Risposte in streaming in Python.

Perché i due lati hanno prezzi diversi#

Leggere il tuo prompt e scrivere una risposta sono tipi di lavoro diversi. Il modello elabora l'intero prompt in un'unica passata, ma deve produrre la risposta un token alla volta, e ogni nuovo token dipende dai precedenti. Ecco perché i provider di solito prezzano l'output più dell'input, e perché vedi due numeri per modello in qualsiasi listino prezzi.

Il modello che usiamo come esempio qui sotto, MiniMax-M2.7 (id minimax-m2.7), segue questo schema. I prezzi attuali per 1M di token sono $0.05 per l'input e $0.15 per l'output.

La formula#

I prezzi sono indicati per 1 milione di token, quindi il costo di una richiesta è:

text
cost = input_tokens × input_price ÷ 1,000,000
     + output_tokens × output_price ÷ 1,000,000

Ecco con prezzi tondi inventati, solo per mostrare l'aritmetica (esempio, sostituisci con i prezzi attuali dalla tabella qui sotto):

python
# example, substitute current prices from the table
price_in = 0.20    # USD per 1M input tokens
price_out = 0.80   # USD per 1M output tokens

prompt_tokens = 2000
completion_tokens = 500

cost = (prompt_tokens * price_in + completion_tokens * price_out) / 1_000_000
# 2000 × 0.20 ÷ 1,000,000 = 0.0004 (input)
# 500 × 0.80 ÷ 1,000,000 = 0.0004 (output)
# 0.0004 + 0.0004 = 0.0008 USD

Un esempio svolto con un modello reale#

Prendi la richiesta dell'esempio usage qui sopra: 2.000 token di input e 500 token di output. Su MiniMax-M2.7 tramite CheapTokens costa $0.00018. Il numero è calcolato dal listino prezzi attuale ogni volta che la pagina viene mostrata.

Una singola richiesta è minuscola, quindi è utile scalare. Una piccola app che invia 10.000 richieste di questa dimensione usa 20.000.000 di token di input e 5.000.000 di token di output, per un totale di $1.75.

La stessa richiesta su altri modelli della nostra lista:

Modello Costo OpenRouter
GLM-5.3-Flash $0.00006 $0.00012
DeepSeek-V4-Flash $0.00008 $0.00017
MiniMax-M2.7 $0.00018 $0.0012

2000 token di input e 500 token di output in totale. 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.

Nota che l'output è una parte minore del conteggio dei token qui (500 su 2.500) ma una parte maggiore della fattura rispetto alla sua quota di token, perché i token di output costano di più (vedi la tabella). Per questo modello il lato output è anche dove si conferma il risparmio rispetto al prezzo di riferimento di OpenRouter, il che è utile se la tua app scrive risposte lunghe.

Usarlo nel codice#

Puoi leggere usage dal pacchetto Python ufficiale openai puntandolo al base URL di CheapTokens:

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key="YOUR_API_KEY",
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",
    messages=[{"role": "user", "content": "Explain input and output tokens in two sentences."}],
)

usage = response.usage
print("input:", usage.prompt_tokens)
print("output:", usage.completion_tokens)
print("total:", usage.total_tokens)

# example, substitute current prices from the table above
price_in, price_out = 0.20, 0.80
cost = (usage.prompt_tokens * price_in + usage.completion_tokens * price_out) / 1_000_000
print(f"approx. cost: ${cost:.6f}")

Se non hai ancora inviato una richiesta, segui prima La tua prima richiesta API con CheapTokens.

Come spendere meno token#

  • Accorcia il prompt. Riduci il system prompt e rimuovi le istruzioni di cui il modello non ha bisogno. Ogni token che invii viene fatturato a ogni richiesta.
  • Riduci la cronologia. In una chat lunga, mantieni gli ultimi turni o un breve riassunto invece dell'intera conversazione.
  • Invia solo la parte rilevante di un documento. Una pagina di testo costa meno di un file intero.
  • Chiedi il formato che ti serve. "Rispondi in tre punti elenco" produce meno token di output di un saggio aperto.
  • Imposta max_tokens di proposito. Limita solo l'output. Troppo basso e la risposta viene troncata; i dettagli sono in Perché una risposta dell'IA si interrompe a metà frase? MiniMax-M2.7 su CheapTokens consente fino a 8.192 token di output per risposta e ha una finestra di contesto di 180K.

Per stimare il costo di un flusso di lavoro più grande, vedi Come stimare il costo di un agente IA.

Cosa ricordare#

  1. Ogni richiesta ha token di input (prompt_tokens) e token di output (completion_tokens).
  2. Hanno prezzi separati, di solito con l'output più alto.
  3. Costo = token di input × prezzo input + token di output × prezzo output, con prezzi per 1M di token.
  4. Leggi i numeri da usage nella risposta invece di indovinare.

Su CheapTokens un unico saldo prepagato copre tutti i modelli, i prezzi per modello sono fissi senza prezzi di punta, e l'API è compatibile con OpenAI Chat Completions e Anthropic Messages. Per provare l'esempio qui sopra, ottieni una chiave API e invia la tua prima richiesta.

Prezzi attuali per ogni modello: Prezzi CheapTokens.