Risoluzione dei problemi
La forma dell'errore corrisponde al protocollo chiamato. /v1/chat/completions e /v1/responses restituiscono errori in stile OpenAI; /v1/messages restituisce errori in stile Anthropic. I codici di stato HTTP sono identici in tutti e tre i protocolli.
Formato della risposta di errore
Formato OpenAI (/v1/chat/completions, /v1/responses)
{
"error": {
"message": "Invalid API key",
"type": "authentication_error",
"code": "invalid_api_key"
}
} Formato Anthropic (/v1/messages)
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} 401 · Autenticazione non riuscita authentication_error
{"error":{"message":"missing API key in Authorization header or X-API-Key","type":"authentication_error"}} Cause
- Nessun header
Authorization: Bearer(oX-API-Key) — messaggio:missing API key in Authorization header or X-API-Key. - La chiave non corrisponde ad alcuna chiave attiva — messaggio:
invalid API key. - La chiave è scaduta — messaggio:
API key expired.
Soluzione
- Invia
Authorization: Bearer sk-syn-…(oX-API-Key: sk-syn-…). - Verifica che la chiave sia attiva nella console e che sia stata copiata per intero.
Non ripetibile — correggi la credenziale.
400 · Richiesta non valida invalid_request
{"error":{"message":"model or models field is required","type":"invalid_request"}} Cause
- Il campo
modelè mancante oppure il corpo JSON è vuoto o malformato.
Soluzione
- Includi un
modele un corpo JSON ben formato. Vedi il riferimento Chat Completions.
Non ripetibile — correggi la richiesta.
403 · Quota esaurita quota_exhausted
{"error":{"message":"API key quota exhausted","type":"quota_exhausted"}} Cause
- Il saldo prepagato della chiave o dello spazio di lavoro è esaurito.
Soluzione
- Ricarica il saldo dello spazio di lavoro. Nota: Synthorai restituisce
403 quota_exhaustedper un saldo esaurito, non429— quindi il backoff esponenziale non aiuta; solo una ricarica lo risolve.
Non ripetibile con backoff — ricarica.
403 · Conformità — nessuna condivisione dei dati compliance_blocked / compliance_no_data_share
{"error":{"type":"compliance_blocked","code":"compliance_no_data_share","message":"model 'MODEL' is unavailable: your workspace compliance setting disallows providers that retain/train on data"}} Cause
- Nel tuo spazio di lavoro è attivo
no_provider_data_sharee il modello richiesto è fornito solo da un provider che richiede conservazione/condivisione dei dati (ad es. un modello Bedrock o Vertex solo con condivisione dei dati).
Soluzione
- Instrada la richiesta verso un modello senza conservazione, oppure disattiva l'interruttore di conformità dello spazio di lavoro se la condivisione dei dati è accettabile per quel carico. La classe di conservazione è un criterio di instradamento per modello — vedi l'analisi della conservazione a 30 giorni.
Non ripetibile — una decisione di policy, non un errore transitorio.
429 · Limite di velocità raggiunto rate_limit_exceeded
{"error":{"message":"rate limit exceeded: max 60 requests per minute","type":"rate_limit_exceeded"}} Cause
- Hai superato il limite di richieste al minuto (RPM). Il messaggio indica il limite esatto.
Soluzione
- Attendi e riprova con backoff esponenziale + jitter (snippet sotto). Richiedi un limite più alto se ti serve un throughput sostenuto.
Ripetibile — attendi e riprova.
502 · Nessun canale per il modello upstream_error
{"error":{"message":"no channels available for model \"MODEL\" in group \"default\"","type":"upstream_error"}} Cause
- L'id del modello non corrisponde ad alcun canale instradabile per il tuo spazio di lavoro — un errore di battitura, un modello ritirato o uno non raggiungibile dal tuo piano.
Soluzione
- Verifica l'id esatto nell'elenco dei modelli in tempo reale. Se un modello è stato ritirato di recente, scegline uno attuale.
Non ripetibile così com'è — correggi l'id del modello.
BYOK: errori del provider upstream
Con bring-your-own-key, la richiesta viene eseguita sul tuo account del provider (AWS Bedrock, Google Vertex AI o l'API Anthropic), quindi Synthorai inoltra l'errore originale del provider senza modifiche — le risposte riportano usage.is_byok: true. La soluzione si trova nella console o nella configurazione di quel provider, non nel gateway. I più comuni sono le impostazioni di accesso ai modelli e di condivisione dei dati a livello di account:
| Errore / config del provider | Causa | Soluzione |
|---|---|---|
model "…" is currently unavailable | Nel tuo account BYOK il modello non è abilitato, è stato ritirato o ha capacità limitata (ad es. Claude Fable 5, ritirato temporaneamente su Bedrock). | Abilita l'accesso al modello nella console del provider (Bedrock → Model access; Vertex → Model Garden) oppure instrada verso un modello disponibile. |
setPublisherModelConfig / dataSharingEnabledProvider: "anthropic" (Vertex AI) | Google Vertex AI subordina i modelli partner di Anthropic a un opt-in per la condivisione dei dati a livello di progetto e all'accettazione dei termini di Model Garden. | Chiama setPublisherModelConfig con dataSharingEnabledProvider: "anthropic" e accetta i termini. Vedi la documentazione dei modelli partner Vertex di Google. |
data_retention_mode: provider_data_share (AWS Bedrock) | Bedrock subordina alcuni modelli Claude a un opt-in esplicito per la conservazione dei dati a livello di account; senza di esso il modello risulta non disponibile. | Imposta data_retention_mode: provider_data_share sull'account (facoltativamente, fissalo con una SCP su bedrock:DataRetentionMode). |
Errori del provider upstream
Questi vengono inoltrati dal provider del modello con lo stato HTTP e il type del provider stesso. Solo 500 e 529 indicano il lato provider; trattali (e 429) come transitori e riprova, mentre i 4xx riflettono la richiesta. Riferimento completo: la documentazione degli errori di Anthropic.
| Stato | Tipo | Significato |
|---|---|---|
413 | request_too_large | Il corpo della richiesta supera il limite di dimensione — riduci il payload. |
500 | api_error | Il provider upstream ha riscontrato un errore interno — transitorio; riprova con backoff. |
529 | overloaded_error | Il provider upstream è temporaneamente sovraccarico — transitorio; riprova con backoff. |
Rate limit
I rate limit vengono applicati per chiave API per garantire un uso equo a tutti gli utenti.
Limiti predefiniti
| Parametro | Tipo | Descrizione |
|---|---|---|
RPM | integer | Richieste al minuto. Default: 60 RPM per chiave. |
TPM | integer | Token al minuto. Default: 100.000 TPM per chiave. |
Quota giornaliera | integer | Token totali al giorno. Configurabile dall'admin per ciascun utente. |
Quando viene raggiunto un rate limit, ricevi una risposta 429 con un header Retry-After che indica il tempo di attesa in secondi.
Stai pianificando il throughput di token rispetto ai prezzi reali per token? Esegui il tuo carico di lavoro nel calcolatore dei costi API LLM.
Gestione degli errori 429
import time
import openai
client = openai.OpenAI(base_url="https://synthorai.io/v1", api_key="YOUR_API_KEY")
for attempt in range(5):
try:
response = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[{"role": "user", "content": "Hello"}]
)
break
except openai.RateLimitError as e:
wait = 2 ** attempt # exponential backoff
print(f"Rate limited. Retrying in {wait}s...")
time.sleep(wait)async function withRetry(fn, maxAttempts = 5) {
for (let attempt = 0; attempt < maxAttempts; attempt++) {
try {
return await fn();
} catch (err) {
if (err.status === 429 && attempt < maxAttempts - 1) {
const wait = Math.pow(2, attempt) * 1000;
await new Promise(r => setTimeout(r, wait));
} else throw err;
}
}
}Ricevi un 502 o un sovraccarico su un modello? Scegli un'alternativa dalla comparazione dei prezzi dei modelli — ogni modello instradabile e il suo prezzo per token in un'unica tabella.