Risposta rapida
Quali campi accetta l'endpoint chat completions di LLMwithCrypto?
Accetta il body chat completions di OpenAI: model e messages sono obbligatori; max_tokens, temperature, top_p, stop, stream, stream_options, tools, tool_choice e response_format sono facoltativi. LLMwithCrypto restituisce un oggetto chat.completion con un conteggio usage, fatturato per token dal tuo credito, come documentato il 23 ottobre 2026. Il tool calling e l'output JSON dipendono dal modello.
L'endpoint in sintesi
| Metodo e URL | POST https://llmwithcrypto.com/api/v1/chat/completions |
|---|---|
| Autenticazione | Passa la tua chiave API come Bearer token nell'header Authorization, come fa l'SDK di OpenAI |
| Body | JSON, Content-Type: application/json |
| Risposta | Oggetto chat.completion, oppure server-sent events con stream: true |
| Fatturazione | Paghi per token dal tuo saldo: i token di input e di output vengono contati dal tokenizer del modello stesso e addebitati al prezzo di quel modello per 1M di token. Una chiamata che termina con un errore non costa nulla |
| Funzionalità | Lo streaming funziona su ogni modello; il tool calling e l'output JSON seguono ciò che supporta il singolo modello |
Crea una chat completion
POST/api/v1/chat/completions
Invia una conversazione a un modello e restituisce la sua risposta con i conteggi dei token. L'esempio pone a DeepSeek V4 Pro una domanda breve con un limite di 200 token; id, orari e conteggi nella risposta sono illustrativi.
Autenticazione: chiave API nell'header Authorization: Bearer API_KEY.
Corpo della richiesta
| Campo | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
model | string | Sì | L'id del modello, come deepseek-v4-pro o gpt-oss-120b. GET /api/v1/models restituisce ogni id che la tua chiave può chiamare. |
messages | object[] | Sì | La conversazione, dal più vecchio al più recente. Ogni elemento ha un role (system, user, assistant o tool) e una stringa content; i messaggi tool hanno anche un tool_call_id. |
max_tokens | integer | No | Il numero massimo di token che la risposta può usare. Senza, il modello può scrivere finché la sua finestra di contesto è piena, e paghi ogni token che scrive. |
temperature | number | No | Da 0 a 2. Più basso è più prevedibile, più alto è più vario. Il valore predefinito dipende dal modello. |
top_p | number | No | Da 0 a 1, nucleus sampling. Cambia temperature o top_p, non entrambi. |
stop | string or string[] | No | Fino a 4 sequenze che terminano la risposta quando il modello le scrive. Non sono incluse nella risposta. |
stream | boolean | No | true invia la risposta come server-sent events, pezzo per pezzo. Vedi streaming. |
stream_options | object | No | {"include_usage": true} aggiunge un ultimo evento con il usage di una chiamata in streaming. |
tools | object[] | No | Funzioni che il modello può chiederti di chiamare, nel formato OpenAI. Funziona sui modelli che supportano il tool calling. Vedi tool calling. |
tool_choice | string or object | No | auto (predefinito quando tools è impostato), none, required o {"type": "function", "function": {"name": "…"}}. |
response_format | object | No | {"type": "json_object"} richiede un oggetto JSON valido, sui modelli che lo supportano. Indica nel tuo prompt cosa deve contenere il JSON. |
{
"model": "deepseek-v4-pro",
"messages": [
{
"role": "system",
"content": "Answer in two sentences."
},
{
"role": "user",
"content": "What is a context window?"
}
],
"max_tokens": 200
}{
"model": "gpt-oss-120b",
"messages": [
{
"role": "user",
"content": "Return {\"city\": string, \"country\": string} for the Eiffel Tower."
}
],
"response_format": {
"type": "json_object"
},
"temperature": 0.2,
"max_tokens": 100
}Risposta 200
{
"id": "chatcmpl-8f2c41d0a7b94e1c",
"object": "chat.completion",
"created": 1792742400,
"model": "deepseek-v4-pro",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A context window is the maximum number of tokens a model can read and write in one request. Anything beyond it must be cut or summarized before the call."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 27,
"completion_tokens": 34,
"total_tokens": 61
}
}Esempi di codice
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
-H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-pro",
"messages": [
{"role": "system", "content": "Answer in two sentences."},
{"role": "user", "content": "What is a context window?"}
],
"max_tokens": 200
}'import os
from openai import OpenAI
client = OpenAI(
base_url="https://llmwithcrypto.com/api/v1",
api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
)
resp = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{"role": "system", "content": "Answer in two sentences."},
{"role": "user", "content": "What is a context window?"},
],
max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, "in,", resp.usage.completion_tokens, "out")import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://llmwithcrypto.com/api/v1',
apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});
const resp = await client.chat.completions.create({
model: 'deepseek-v4-pro',
messages: [
{ role: 'system', content: 'Answer in two sentences.' },
{ role: 'user', content: 'What is a context window?' },
],
max_tokens: 200,
});
console.log(resp.choices[0].message.content);
console.log(resp.usage.prompt_tokens, 'in,', resp.usage.completion_tokens, 'out');Come scrivo i messaggi?
Invia ogni volta l'intera conversazione, dal messaggio più vecchio: l'API non conserva memoria tra una chiamata e l'altra e niente dei tuoi prompt viene salvato. Non conserviamo i tuoi prompt né le risposte del modello: una volta inviata una risposta, il suo testo non c'è più. Ogni chiamata lascia una riga di log con l'ora, l'account, il modello e i conteggi dei token, cancellata dopo 30 giorni.
system: istruzioni che inquadrano ogni risposta, come tono, lingua o formato di output. Mettine una in cima.user: ciò che chiede la persona o il tuo programma.assistant: le risposte precedenti del modello, così può continuare la conversazione.tool: il risultato di una funzione che il modello ti ha chiesto di eseguire, con iltool_call_idche ti ha dato.
Ogni messaggio conta come token di input, quindi le cronologie lunghe costano di più a ogni turno. Taglia o riassumi i turni vecchi quando una conversazione cresce.
Quanto può essere lunga una richiesta?
Input e output insieme devono stare nella context window del modello. Al 23 ottobre 2026, DeepSeek V4 Pro legge fino a 1M token, gpt-oss-120b fino a 128K e Qwen3 235B fino a 256K; la pagina dei modelli li elenca tutti.
Una richiesta che non ci sta torna come 400 con il codice context_length_exceeded e non costa nulla. Imposta max_tokens in modo che il prompt più la risposta più lunga che accetti restino dentro la finestra.
Cosa mi dice finish_reason?
finish_reason | Significato | Cosa fare |
|---|---|---|
stop | Il modello ha terminato la risposta o ha scritto una delle tue sequenze stop | Niente: la risposta è completa |
length | La risposta ha raggiunto max_tokens o la context window | Aumenta max_tokens o chiedi una risposta più breve |
tool_calls | Il modello vuole che tu esegua una o più funzioni | Eseguile e rimanda i risultati, vedi tool calling |
Quali parametri di OpenAI non sono supportati?
I campi nella tabella qui sopra sono l'intero contratto. Altri dell'API OpenAI, come n (più risposte per chiamata), logprobs, audio o input di immagini, non sono supportati: invia solo i campi elencati qui. I modelli sono modelli testuali; nessuno di loro accetta immagini tramite questo endpoint.
Il campo model accetta solo gli id sulla nostra lista. Non vendiamo l'accesso a GPT, Claude, Gemini o Grok: i loro produttori vietano la rivendita dell'accesso alle API senza la loro approvazione, e noi non l'abbiamo.
Chat completions: domande frequenti
Esiste un endpoint completions legacy?
No. Esiste solo il formato chat; un singolo prompt è un array messages con un messaggio user.
Quanto costa una chiamata?
Paghi per token dal tuo saldo: i token di input e di output vengono contati dal tokenizer del modello stesso e addebitati al prezzo di quel modello per 1M di token. Una chiamata che termina con un errore non costa nulla. I prezzi per modello sono sulla pagina dei prezzi.
Posso vedere le mie richieste passate?
No, per scelta di progettazione. Non conserviamo i tuoi prompt né le risposte del modello: una volta inviata una risposta, il suo testo non c'è più. Ogni chiamata lascia una riga di log con l'ora, l'account, il modello e i conteggi dei token, cancellata dopo 30 giorni.
Perché la mia risposta si è fermata a metà?
finish_reason è allora length: la risposta ha raggiunto max_tokens. Aumentalo, entro la context window del modello.