Una sola forma a totes les rutes: type, code, message, param, doc_url, request_id i errors.
← Torna a la documentació de l'API
La teva primera factura en 6 passos
- Cada 4xx i 5xx retorna { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
- Decideix segons type si té sentit reintentar, i mapeja code al teu propi sistema.
- param apunta al camp que falla, p. ex. lines.0.vat_rate; errors[] apareix quan n'hi ha diversos.
- Registra request_id a cada error — ens permet trobar la petició exacta als nostres registres.
Què és l'API de 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
Errors
| Estat | Tipus | Codi |
|---|---|---|
| 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 |
Errors habituals
- rate_limit_error i els dos tipus upstream es poden reintentar. authentication_error, permission_error i invalid_request_error no es corregeixen reintentant.
- També es retorna un 404 per a un id que pertany a un altre client: mai no confirmem que existeixen dades d'un altre.
- 409 idempotency_key_reuse vol dir que has reutilitzat una clau amb un cos diferent. No ho forcis: revisa què s'ha emès ja.
- El doc_url de cada error apunta directament a la secció d'errors d'aquesta documentació.
- Els missatges són en romanès perquè l'API serveix un flux fiscal romanès; no analitzis message, decideix segons code.
Preguntes i respostes per a desenvolupadors
Puc fiar-me dels valors de code entre versions?
Sí, code és estable i existeix precisament per això. message és text per a humans i es pot reformular.
Què he de fer davant d'un 502 o un 503?
Reintenta amb backoff exponencial. Són errors upstream o de disponibilitat temporal, no problemes de la teva petició.
Per què 422 i no 400 per a dades no vàlides?
422 marca un JSON ben format però semànticament no vàlid — per exemple, vat_rate com a fracció. El 400 es reserva per a una petició malformada.