Errori
Il formato unico di errore dell'API e tutti i codici di errore, con il relativo stato HTTP e il modo corretto di gestirli.
Aggiornato il 13 agosto 2026
Ogni errore, su qualsiasi endpoint, usa un unico formato:
{
"error": {
"code": "not_found",
"message": "Link not found",
"doc_url": "https://linkprofit.com/docs/api/errors"
}
}
Basa la logica del tuo codice su error.code e mostra error.message alle
persone. Gli errori di validazione aggiungono un array details con un
messaggio per ogni campo:
{
"error": {
"code": "validation_failed",
"message": "Request failed validation",
"doc_url": "https://linkprofit.com/docs/api/errors",
"details": [
{ "path": "url", "message": "Destination URL is not a valid address" }
]
}
}
Codici di errore
| Codice | HTTP | Significato | Cosa fare |
|---|---|---|---|
| unauthorized | 401 | Chiave mancante, sconosciuta, revocata o scaduta | Controlla l'header; genera una nuova chiave |
| forbidden | 403 | Tipo di chiave errato per l'endpoint, oppure operazione non consentita | Usa una chiave di area di lavoro / partner come documentato |
| insufficient_scope | 403 | Alla chiave manca un ambito necessario | Crea una chiave con l'ambito indicato nel messaggio |
| plan_restricted | 403 | Il piano non comprende questa funzionalità | Passa a un piano superiore o togli la funzionalità dalla richiesta |
| not_found | 404 | La risorsa non esiste — oppure appartiene a un altro tenant | Verifica l'id; le risorse altrui sono indistinguibili da quelle inesistenti |
| invalid_request | 400 | JSON malformato, cursore non valido, regola di business violata | Correggi la richiesta |
| validation_failed | 422 | Il corpo o la query non ha superato la validazione dello schema | Correggi i campi elencati in details |
| conflict | 409 | Conflitto di stato: slug già occupato, Idempotency-Key riusata con un corpo diverso | Scegli un altro valore o una nuova chiave di idempotenza |
| quota_exceeded | 422 | Una quota del piano è esaurita (link, domini, clienti) | Passa a un piano superiore o libera la quota |
| rate_limited | 429 | Troppe richieste per questa chiave | Attendi i secondi indicati da Retry-After; vedi Limiti di frequenza |
| not_configured | 503 | La funzionalità non è configurata in questo ambiente | Riprova più tardi o contatta l'assistenza |
| internal | 500/502/504 | Errore imprevisto della piattaforma | Riprova con backoff; segnala se persiste |
| invalid_click_id | 422 | Il click_id è falsificato, manomesso oppure è stato rilasciato in un'altra area di lavoro | Trasmetti il valore del parametro dell'identificatore di clic esattamente come appariva nell'URL di destinazione |
| attribution_expired | 422 | Il clic è più vecchio della finestra di attribuzione dell'area di lavoro | Niente da riprovare; se serve, modifica la finestra nella dashboard |
Regole di gestione che ripagano
- Anche il 404 serve all'isolamento. Un id di un'altra area di lavoro
riceve
not_found, maiforbidden: l'API non rivela se un id altrui esiste. - Riprova solo ciò che è sicuro riprovare. Ripeti
internalerate_limitedcon backoff. Non ripetere mai alla ciecaconflictovalidation_failed: è la richiesta stessa a essere sbagliata. UsaIdempotency-Keyper rendere sicuri i nuovi tentativi delle operazioni di scrittura. GET /linksnon risponde mai 404. Se i filtri non trovano nulla, la risposta è un elenco vuoto; un 404 sulla collezione sarebbe ambiguo.