Codici di errore
Consulta la documentazione API di Codici di errore, i parametri delle richieste, i campi delle risposte, gli esempi di codice e la gestione degli errori per le integrazioni DomScan.
Codici di errore
Errori strutturati
Ogni errore dell’API restituisce la stessa struttura JSON: un oggetto error con un code stabile, un message leggibile, il suo type e lo status HTTP, l’indicazione se è retryable, il request_id e un docs_url. Il request_id corrisponde sempre all’header di risposta X-Request-Id, quindi includilo quando contatti il supporto.
{
"error": {
"code": "INVALID_DOMAIN",
"message": "Formato del dominio non valido",
"suggestion": "Usa un dominio registrabile come example.com",
"type": "validation_error",
"status": 400,
"retryable": false,
"request_id": "m5x7k2p-a9f3",
"docs_url": "https://domscan.net/docs/check-availability"
}
}
Campi dell’errore
| Campo | Descrizione |
|---|---|
code | Codice di errore stabile e leggibile da una macchina. I codici non vengono mai rinominati, quindi puoi usarli in tutta sicurezza per gestire i diversi casi. |
message | Spiegazione leggibile dell’errore. La formulazione può cambiare, quindi non analizzarla nel codice. |
type | Categoria generale dell’errore, ad esempio validation_error, authentication_error o rate_limit_error. |
status | Il codice di stato HTTP, ripetuto nel corpo per log e code di messaggi. |
retryable | Indica se la stessa richiesta può riuscire se la ripeti più tardi. |
request_id | Identificatore univoco della richiesta. Corrisponde all’header X-Request-Id. |
docs_url | Link alla sezione della documentazione che spiega questo errore. |
suggestion | Suggerimento facoltativo su come correggere la richiesta. |
details | Contesto strutturato facoltativo, ad esempio i metodi consentiti o il parametro non valido. |
retry_after | Numero facoltativo di secondi da attendere prima di riprovare. Viene inviato anche come header Retry-After. |
Codici di errore comuni
Questi sono i codici che la maggior parte dei client deve gestire. Alcuni endpoint restituiscono codici più specifici che seguono le stesse regole; l’elenco completo con stato, tipo e comportamento di nuovo tentativo è nella specifica OpenAPI sotto x-domscan-error-codes. RATE_LIMIT_EXCEEDED è ancora accettato come alias di RATE_LIMITED.
| Codice | Stato HTTP | Tipo | Riproponibile | Descrizione |
|---|---|---|---|---|
BAD_REQUEST |
400 | validation_error |
No | Parametri mancanti o non validi |
MISSING_PARAMETER |
400 | validation_error |
No | Manca un parametro obbligatorio |
INVALID_PARAMETER |
400 | validation_error |
No | Un parametro ha un valore non valido |
INVALID_JSON |
400 | validation_error |
No | Il corpo della richiesta non è un JSON valido |
INVALID_DOMAIN |
400 | validation_error |
No | Formato dominio non valido |
UNSUPPORTED_TLD |
400 | validation_error |
No | TLD non supportato |
SUBDOMAIN_NOT_SUPPORTED |
400 | validation_error |
No | Questo endpoint accetta domini registrabili, non sottodomini |
VALIDATION_ERROR |
422 | validation_error |
No | La richiesta è formalmente corretta ma non può essere elaborata |
AUTH_REQUIRED |
401 | authentication_error |
No | Non è stata fornita alcuna chiave API né sessione |
INVALID_API_KEY |
401 | authentication_error |
No | La chiave API non è valida o è stata revocata |
INSUFFICIENT_CREDITS |
402 | credits_error |
No | Il tuo account non ha crediti sufficienti per questa richiesta |
FORBIDDEN |
403 | permission_error |
No | Non hai l’autorizzazione per questa azione |
NOT_FOUND |
404 | not_found_error |
No | L’endpoint o la risorsa non esiste |
METHOD_NOT_ALLOWED |
405 | request_error |
No | L’endpoint esiste ma non accetta questo metodo HTTP. L’header Allow elenca i metodi supportati. |
CONFLICT |
409 | conflict_error |
No | La richiesta è in conflitto con lo stato attuale della risorsa |
IDEMPOTENCY_CONFLICT |
409 | conflict_error |
No | La chiave di idempotenza è già stata usata con una richiesta diversa |
IDEMPOTENCY_KEY_REUSED |
422 | validation_error |
No | Questa Idempotency-Key è già stata usata con una richiesta diversa nelle ultime 24 ore. Usa una nuova chiave per una nuova richiesta. |
IDEMPOTENCY_IN_PROGRESS |
409 | conflict_error |
Sì | Una richiesta con questa Idempotency-Key è ancora in corso. Riprova tra un momento per ricevere la risposta memorizzata. |
RATE_LIMITED |
429 | rate_limit_error |
Sì | Troppe richieste |
INTERNAL |
500 | api_error |
No | Errore imprevisto del server. Se persiste, contatta il supporto indicando l’ID della richiesta. |
UPSTREAM_ERROR |
502 | upstream_error |
Sì | Una fonte a monte ha restituito una risposta non utilizzabile |
UPSTREAM_UNAVAILABLE |
503 | upstream_error |
Sì | Una fonte a monte è temporaneamente non disponibile |
SERVICE_UNAVAILABLE |
503 | upstream_error |
Sì | Il servizio è temporaneamente non disponibile |
TIMEOUT |
504 | timeout_error |
Sì | Una fonte a monte o un registro non ha risposto in tempo |
Come gestire i nuovi tentativi
- Riprova solo quando
retryableètrue. Per gli errori di validazione, autenticazione e autorizzazione, correggi prima la richiesta. - Se è presente
retry_aftero l’headerRetry-After, attendi almeno quel numero di secondi prima del tentativo successivo. - In caso contrario usa un backoff esponenziale con jitter, ad esempio 1, 2, 4 e 8 secondi, e fermati dopo pochi tentativi.
- Per la creazione di batch e job, invia un header
Idempotency-Keyin modo che una richiesta ripetuta non crei mai un job duplicato. - Per le altre richieste POST che addebitano crediti, un header
Idempotency-Keyfa sì che un nuovo tentativo restituisca la risposta memorizzata invece di addebitare di nuovo.
Compatibilità
Dal 10 ottobre 2026 ogni endpoint usa questo formato. I campi che alcuni endpoint già restituivano, come credits_remaining, purchase_url, login_url, success o meta, vengono mantenuti per un periodo di compatibilità, così le integrazioni esistenti continuano a funzionare. Nel nuovo codice leggi i dettagli dell’errore dall’oggetto error.