Home / Documentazione / Errori

Errori

Tutti i codici di stato restituiti dal gateway, le loro cause effettive e come risolverle.

Gli errori restituiscono JSON con un type e un messaggio leggibile message. I codici di stato seguono le convenzioni di Anthropic e OpenAI.

{"type": "error", "error": {"type": "authentication_error", "message": "invalid api key"}}

Codici di stato

CodiceSignificatoCausa effettiva più comuneSoluzione
400Richiesta non validaManca max_tokens in Messages, oppure un elemento non valido: messages arrayVerifica il corpo rispetto a Messages
401Non autenticatoChiave inviata nell'header errato per il formatox-api-key per Messages, Bearer per Chat Completions
402Pagamento richiestoSaldo esaurito o piano scadutoRicarica o acquista un piano
403Accesso negatoChiave revocata o modello non abilitato per l'accountCrea una nuova chiave; controlla /v1/models
404Non trovatoErrore nell'URL di base: in genere un elemento duplicato o mancante: /v1Vedi URL di base
429Limite di richieste raggiuntoTroppe richieste simultaneeRiprova con attese crescenti in modo esponenziale; vedi Limiti di frequenza
500Errore del gatewayErrore interno imprevistoRiprova una volta; se il problema persiste, contatta l'assistenza indicando l'ID della richiesta
529Servizio a monte sovraccaricoCapacità del provider, non del tuo accountRiprova con attese crescenti: in genere il problema si risolve in pochi secondi

Tipi di errore

tipoSignificato
invalid_request_errorIl corpo non è valido o manca un campo obbligatorio
authentication_errorChiave mancante, non valida o revocata
permission_errorLa chiave è valida ma non è autorizzata a usare quel modello
not_found_errorPercorso sconosciuto o ID del modello sconosciuto
rate_limit_errorRichieste limitate
api_errorErrore interno
overloaded_errorCapacità del servizio a monte esaurita

Come riprovare correttamente

Nuovo tentativo 429, 500, 502, 503 e 529. Non riprovare mai alla cieca 400, 401, 402 o 403 : la stessa richiesta fallisce nello stesso modo e, per le risposte generate parzialmente, potresti pagare due volte.

import time, httpx

def call(body, key, tries=4):
    for i in range(tries):
        r = httpx.post(class="s">"https://aiprimetech.io/v1/messages", json=body, timeout=120,
                       headers={class="s">"x-api-key": key,
                                class="s">"anthropic-version": class="s">"2023-06-01"})
        if r.status_code in (429, 500, 502, 503, 529):
            time.sleep(2 ** i)          class=class="s">"c"># 1s, 2s, 4s, 8s
            continue
        r.raise_for_status()
        return r.json()
    raise RuntimeError(class="s">"upstream unavailable after retries")
In produzione, aggiungi una variazione casuale al tempo di attesa. I tentativi sincronizzati di molti worker trasformano un breve disservizio in un'ondata di richieste verso lo stesso servizio a monte.