Risposta rapida
Quali errori può restituire l'API LLMwithCrypto e vengono addebitati?
L'API risponde agli errori con uno status HTTP e un body in stile OpenAI: {"error": {"message", "type", "param", "code"}}. LLMwithCrypto usa 400 per una richiesta errata, 401 per una chiave sbagliata, 402 quando i crediti non bastano a pagare, 404 per un modello sconosciuto, 429 per il rate limit e 500 o 503 da parte nostra. Una chiamata che termina con un errore non costa nulla, come documentato il 23 ottobre 2026.
Quali errori esistono?
Nessun errore consuma crediti. code è il valore stabile da testare nel tuo codice; message è per le persone e può cambiare.
| HTTP | code | Causa | Ritentare? |
|---|---|---|---|
| 400 | invalid_parameter | Manca un campo obbligatorio, oppure un valore è fuori intervallo o del tipo sbagliato | No: correggi la richiesta |
| 400 | context_length_exceeded | I messaggi più max_tokens non entrano nella finestra di contesto del modello | No: accorcia l'input o abbassa max_tokens |
| 400 | unsupported_parameter | Un campo che questo modello non supporta, come response_format su un modello senza modalità JSON | No: rimuovilo o cambia modello |
| 401 | invalid_api_key | La chiave manca, è scritta male o è stata revocata | No: controlla la chiave |
| 402 | insufficient_balance | Il saldo residuo non può pagare questa chiamata | No: acquista un pacchetto di crediti |
| 404 | model_not_found | L'id model non è nella nostra lista | No: usa un id da GET /api/v1/models |
| 429 | rate_limit_exceeded | Più richieste o token al minuto di quanti ne consenta l'account | Sì, dopo una pausa |
| 500 | server_error | Qualcosa è andato storto dalla nostra parte | Sì, con backoff |
| 503 | model_overloaded | Il modello è momentaneamente al limite di capacità | Sì, con backoff, oppure prova un altro modello |
{
"error": {
"message": "The model `gpt-4o` does not exist or is not available to your key.",
"type": "invalid_request_error",
"param": "model",
"code": "model_not_found"
}
}
Perché ricevo 404 per gpt-4o o claude?
Perché quei modelli non sono venduti qui. 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. Il codice scritto per l'API OpenAI spesso nomina un modello in più punti; cerca nel tuo progetto il vecchio nome e sostituiscilo con un id dalla pagina dei modelli, come deepseek-v4-pro o gpt-oss-120b.
Quando deve riprovare il mio codice?
Riprova 429, 500 e 503, e gli errori di rete come un timeout o una connessione interrotta. Non riprovare mai 400, 401, 402 o 404: la stessa richiesta fallirà allo stesso modo.
Attendi prima di ogni nuovo tentativo. Quando la risposta ha un header Retry-After, attendi quel numero di secondi; altrimenti raddoppia la pausa ogni volta (1, 2, 4, 8 secondi…) e aggiungi un po' di tempo casuale, così che molti worker non riprovino tutti insieme. Rinuncia dopo alcuni tentativi e registra l'errore nel log. Gli SDK OpenAI riprovano già da soli; l'esempio qui sotto lo disattiva per mostrare la logica per intero.
import os
import random
import time
from openai import APIConnectionError, APIStatusError, OpenAI
client = OpenAI(
base_url="https://llmwithcrypto.com/api/v1",
api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
max_retries=0,
)
RETRY = {429, 500, 503}
def chat(messages, model="deepseek-v4-pro", attempts=5):
for attempt in range(attempts):
try:
return client.chat.completions.create(model=model, messages=messages, max_tokens=500)
except APIStatusError as err:
if err.status_code not in RETRY or attempt == attempts - 1:
raise
wait = err.response.headers.get("retry-after")
delay = float(wait) if wait else min(30, 2**attempt) + random.random()
except APIConnectionError:
if attempt == attempts - 1:
raise
delay = min(30, 2**attempt) + random.random()
time.sleep(delay)
Cosa devo fare in caso di 402 insufficient_balance?
Ricarica. La chiamata non è stata addebitata e nient'altro sull'account cambia: le tue chiavi continuano a funzionare non appena c'è di nuovo credito. Una volta confermato il tuo versamento in criptovalute e acquistato un pack di crediti, la tua chiave API ti aspetta nella dashboard.
Per evitare sorprese in produzione, leggi GET https://llmwithcrypto.com/api/v1/credits di tanto in tanto e imposta un avviso sotto una soglia a tua scelta; la pagina dei modelli e dei crediti mostra la chiamata. I crediti non hanno data di scadenza: quello che non spendi questo mese è ancora lì l'anno prossimo, quindi un pacchetto più grande acquistato in anticipo non costa nulla in più.
Come resto sotto il rate limit?
Ogni account ha un limite di richieste e di token al minuto, mostrato nella dashboard; chiedi al supporto e può essere alzato.
- Limita la concorrenza. Esegui un numero fisso di richieste in parallelo invece di lanciare un intero batch tutto insieme.
- Limita l'output. I limiti di token contano anche ciò che scrive il modello, quindi un
max_tokensragionevole tiene più richieste dentro il limite. - Distribuisci i batch. Per i grandi lavori offline, distribuisci le richieste lungo il minuto invece di inviarle a raffiche.
Errori: domande frequenti
Una chiamata fallita mi viene addebitata?
No. 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.
Dove posso vedere se c'è un disservizio?
Nella status page. Una serie di errori 500 o 503 su più modelli di solito indica un incidente dalla nostra parte; scrivi a [email protected] se persiste.
Posso vedere la richiesta che ha fallito?
Non dalla nostra parte. 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. Registra nel log della tua app l'errore code e il tuo id di richiesta.