# Errori, rate limit e retry

> Errori API LLM: status HTTP, codice e causa, quali ritentare, rate limit e cosa fare in caso di 402 saldo insufficiente. Gli errori sono gratuiti.

- URL: https://llmwithcrypto.com/it/docs/errors/
- Ultimo aggiornamento: 2026-10-23
- Editore: LLMwithCrypto (https://llmwithcrypto.com)

Gli errori tornano nel formato OpenAI, così gli SDK li sollevano come normali eccezioni. Questa pagina elenca ogni status e codice, dice quali vale la pena ritentare e mostra un loop di retry che rispetta il rate limit.

**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 |

*Corpo dell'errore: un modello sconosciuto*

```json
{
  "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](https://llmwithcrypto.com/it/models/), 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.

*Python: riprova su 429, 500 e 503 con backoff esponenziale*

```python
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](https://llmwithcrypto.com/it/docs/models/) 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_tokens` ragionevole 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](https://llmwithcrypto.com/it/status/). Una serie di errori `500` o `503` su più modelli di solito indica un incidente dalla nostra parte; scrivi a support@llmwithcrypto.com 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.

---

LLMwithCrypto: LLMwithCrypto è un'API LLM compatibile con OpenAI per modelli open-weight — DeepSeek V4 Pro, DeepSeek V4.1 Flash, DeepSeek R1, Qwen3.5 397B A17B, Qwen3 235B A22B Instruct, gpt-oss-120b, gpt-oss-20b, GLM-4.7, Llama 3.3 70B Instruct, Gemma 4 31B, Mistral Large 3, Mistral Small 4 — pagati a token da un saldo prepagato in criptovalute, al 5% sotto il prezzo mediano degli host pubblici. Senza KYC: niente documento, niente selfie, niente documenti. I prompt e gli output non vengono memorizzati.
