Kódy chyb a obálka chyby

Jednotný tvar na každé trase: type, code, message, param, doc_url, request_id a errors.

Jednotný tvar na každé trase: type, code, message, param, doc_url, request_id a errors.

← Zpět na dokumentaci API

První faktura v 6 krocích

  1. Každá odpověď 4xx a 5xx vrací { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
  2. Podle type se rozhodněte, zda má smysl opakování, a code mapujte do svého systému.
  3. param ukazuje na chybné pole, např. lines.0.vat_rate; errors[] se objeví, když jich je více.
  4. Zaznamenávejte request_id u každé chyby — umožní nám najít přesný požadavek v našich logách.

Co je 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

Chyby

StavTypKód
401authentication_errormissing_bearer_token
401authentication_errorunauthorized
403permission_errorforbidden
404not_found_errornot_found
409conflict_erroridempotency_key_reuse
409conflict_erroridempotency_in_progress
422invalid_request_errorvalidation_failed
422invalid_request_errorinvalid_json_number
502upstream_errorupstream_error
503service_unavailable_errorservice_unavailable

Časté chyby

  • rate_limit_error a dva upstream typy lze opakovat. authentication_error, permission_error a invalid_request_error se opakováním neopraví.
  • 404 se vrací i pro identifikátor patřící jinému tenantovi: nikdy nepotvrzujeme, že data někoho jiného existují.
  • 409 idempotency_key_reuse znamená, že jste klíč použili s jiným tělem. Nevynucujte to: zkontrolujte, co už bylo vystaveno.
  • doc_url v každé chybě odkazuje přímo na sekci chyb této dokumentace.
  • Zprávy jsou v rumunštině, protože API obsluhuje rumunský fiskální tok; nerozebírejte message, větvěte se podle code.

Otázky a odpovědi pro vývojáře

Mohu se spolehnout na hodnoty code napříč verzemi?

Ano, code je stabilní a existuje právě proto. message je lidský text a může být přeformulován.

Co mám dělat při 502 nebo 503?

Opakujte s exponenciálním backoff. Jde o chyby upstreamu nebo dočasné dostupnosti, ne o problém s vaším požadavkem.

Proč 422 a ne 400 u neplatných dat?

422 označuje správně utvořený, ale sémanticky neplatný JSON — například vat_rate jako zlomek. 400 je vyhrazeno pro chybně utvořený požadavek.