Codici di Errore

Comprendere le risposte di errore dell'API e come gestirle.

Panoramica

L'API restituisce risposte di errore standardizzate con codici di errore specifici per aiutarti a identificare e risolvere rapidamente i problemi.

Formato della Risposta di Errore

Tutte le risposte di errore seguono questa struttura:

{
  "status": "error",
  "error": {
    "code": "AUTH_1001",
    "message": "Credenziali di autenticazione mancanti",
    "details": "I campi 'username' e 'password' sono entrambi obbligatori",
    "timestamp": "2025-12-22T10:30:00Z"
  }
}
CampoTipoDescrizione
statusstringSempre "error" per le risposte di errore
error.codestringIdentificatore univoco dell'errore
error.messagestringMessaggio di errore leggibile
error.detailsstringContesto aggiuntivo (opzionale)
error.timestampstringTimestamp ISO 8601

Errori di Autenticazione (1000-1099)

Errori relativi alle credenziali e all'autenticazione.

CodiceHTTPMessaggioSoluzione
AUTH_1001 401 Credenziali di autenticazione mancanti Includi sia username che password nella richiesta
AUTH_1002 401 Username o password non validi Verifica che le credenziali siano corrette
AUTH_1003 403 Account temporaneamente bloccato Attendi prima di riprovare o contatta il supporto

Errori di Quota (1100-1199)

Errori relativi alla quota API e ai limiti di utilizzo.

CodiceHTTPMessaggioSoluzione
QUOTA_1101 403 Quota API insufficiente Acquista più crediti o controlla la quota
QUOTA_1102 429 Quota API superata Attendi il ripristino della quota o aggiorna il piano

Errori di Validazione (2000-2099)

Errori relativi alla validazione della richiesta e ai dati di input.

CodiceHTTPMessaggioSoluzione
VAL_2001 400 Nessun file caricato Includi un file nella richiesta
VAL_2002 400 Formato file non valido Usa formati supportati: PDF, PNG, JPG, WEBP
VAL_2003 400 File PDF multipli non consentiti Carica un singolo PDF o più immagini
VAL_2004 400 PDF e immagini non possono essere combinati Carica o PDF o immagini, non entrambi
VAL_2005 400 Codice lingua non supportato Usa un codice lingua supportato

Errori di Elaborazione (3000-3099)

Errori durante l'elaborazione del documento e l'analisi AI.

CodiceHTTPMessaggioSoluzione
PROC_3001 500 Elaborazione documento fallita Controlla la qualità dell'immagine, riprova la richiesta
PROC_3002 500 Estrazione metadati fallita Assicurati che il documento contenga testo leggibile
PROC_3003 500 Estrazione parametri fallita Verifica che il formato dell'esame del sangue sia riconoscibile
PROC_3004 500 Generazione interpretazione fallita Riprova la richiesta
PROC_3006 504 Timeout di elaborazione Riduci la dimensione del file o dividi in più richieste
PROC_3007 500 Analisi fallita dopo vari tentativi Attendi e riprova, o contatta il supporto

Errori del Server (5000-5099)

Errori interni del server e problemi di disponibilità del servizio.

CodiceHTTPMessaggioSoluzione
SRV_5001 500 Errore interno del server Riprova la richiesta, contatta il supporto se persiste
SRV_5002 503 Servizio temporaneamente non disponibile Attendi e riprova con backoff esponenziale

Best Practice per la Gestione degli Errori

Raccomandazioni
  1. Controlla sempre il campo status - Le risposte di successo hanno "status": "success"
  2. Implementa la logica di retry per errori transitori (5xx) con backoff esponenziale
  3. Registra i codici di errore per debug e monitoraggio
  4. Mostra messaggi user-friendly basati sui codici di errore
  5. Usa gli endpoint sandbox per testare la gestione degli errori

Esempio di Gestione Errori (JavaScript)

async function analyzeBloodTest(file) {
  try {
    const response = await fetch(API_URL, {
      method: 'POST',
      body: formData
    });

    const data = await response.json();

    if (data.status === 'error') {
      const errorCode = data.error.code;

      switch (true) {
        case errorCode.startsWith('AUTH_'):
          throw new Error('Autenticazione fallita. Controlla le credenziali.');
        case errorCode.startsWith('QUOTA_'):
          throw new Error('Quota superata. Aggiorna il tuo piano.');
        case errorCode.startsWith('VAL_'):
          throw new Error('Richiesta non valida: ' + data.error.message);
        case errorCode.startsWith('PROC_'):
          // Riprova per errori di elaborazione
          return retryRequest(file);
        default:
          throw new Error('Si è verificato un errore. Riprova.');
      }
    }

    return data.data;
  } catch (error) {
    console.error('Errore API:', error);
    throw error;
  }
}