Una sola forma su ogni rotta: type, code, message, param, doc_url, request_id ed errors.
← Torna alla documentazione API
La prima fattura in 6 passi
- Ogni risposta 4xx e 5xx restituisce { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
- Ramifica la logica su type per decidere se ha senso ritentare, e mappa code nel tuo sistema.
- param indica il campo problematico, ad es. lines.0.vat_rate; errors[] compare quando ce ne sono più di uno.
- Registra request_id per ogni errore: ci permette di trovare la richiesta esatta nei nostri log.
Cos'è l'API 4invoices
json
{
"error": {
"type": "invalid_request_error",
"code": "validation_failed",
"message": "Datele trimise nu sunt valide.",
"param": "lines.0.vat_rate",
"doc_url": "https://4invoices.net/ro/api-dezvoltatori#errors",
"request_id": "req_8a893f2f33d4472da8d6e144",
"errors": [
{ "param": "lines.0.vat_rate", "message": "VAT rate must be a percent (21), not a fraction", "type": "value_error" }
]
}
}https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json
Errori
| Stato | Tipo | Codice |
|---|---|---|
| 401 | authentication_error | missing_bearer_token |
| 401 | authentication_error | unauthorized |
| 403 | permission_error | forbidden |
| 404 | not_found_error | not_found |
| 409 | conflict_error | idempotency_key_reuse |
| 409 | conflict_error | idempotency_in_progress |
| 422 | invalid_request_error | validation_failed |
| 422 | invalid_request_error | invalid_json_number |
| 502 | upstream_error | upstream_error |
| 503 | service_unavailable_error | service_unavailable |
Errori frequenti
- rate_limit_error e i due tipi upstream si possono ritentare. authentication_error, permission_error e invalid_request_error non si risolvono ritentando.
- Un 404 viene restituito anche per un id che appartiene a un altro tenant: non confermiamo mai l’esistenza dei dati di qualcun altro.
- 409 idempotency_key_reuse significa che hai riutilizzato una chiave con un body diverso. Non forzare: verifica cosa è già stato emesso.
- La doc_url di ogni errore rimanda direttamente alla sezione degli errori di questa documentazione.
- I messaggi sono in rumeno perché l’API serve un flusso fiscale rumeno; non analizzare message, ramifica la logica su code.
Domande e risposte per sviluppatori
Posso fare affidamento sui valori di code tra una versione e l’altra?
Sì, code è stabile ed esiste proprio per questo. message è un testo per persone e può essere riformulato.
Cosa devo fare con un 502 o un 503?
Ritenta con backoff esponenziale. Sono errori upstream o di indisponibilità temporanea, non problemi della tua richiesta.
Perché 422 e non 400 per dati non validi?
422 indica un JSON ben formato ma semanticamente non valido, per esempio vat_rate espresso come frazione. 400 è riservato a una richiesta malformata.