API-Dokumentation
Rechnungsempfang
Beide Endpunkte nehmen ein eingehendes ZUGFeRD/Factur-X-PDF entgegen —
als multipart-Feld pdf (Datei) oder Formularfeld
pdfBase64. Es wird nichts erzeugt und nichts gespeichert.
POST /v1/read — lesen (deserialisieren)
Extrahiert das eingebettete CII-XML und liefert die Rechnung als
vollständiges JSON-Objekt im eunormia-Schema —
demselben Schema, das /v1/convert als Eingabe nimmt.
Sie können das Ergebnis also direkt weiterverarbeiten oder unverändert wieder
in eine Konvertierung geben (Round-Trip).
Antwort: {"standard": "facturx", "invoice": {…}, "xml": "<rsm:CrossIndustryInvoice…"}.
Das rohe XML liegt bei, falls Sie Felder außerhalb des Schemas brauchen.
Kein lesbares E-Rechnungs-PDF → 422.
POST /v1/validate — prüfen
Validiert das PDF gegen das Doppel-Gate: veraPDF (PDF/A-3) und EN-16931-Schematron. Optional zusätzlich:
| Feld | Beschreibung |
|---|---|
kosit=true | Amtlicher KoSIT-Validator (XRechnung/DE) als drittes Gate. |
frCtc=true | Französische CTC-Regeln (FNFE-MPE) als viertes Gate. |
Antwort: {"valid": true|false, "verapdf": {…}, "xml": {…}, "kosit": {…}?, "frCtc": {…}?, "sha256": "…"}.
Jedes Gate meldet result (PASS/FAIL/UNAVAILABLE)
und bei FAIL die konkreten failures. Ein nicht installiertes
Prüfmodul meldet ehrlich UNAVAILABLE — nie einen stillen PASS.
Zum Ausprobieren im Browser: Validierungs-Seite.
Quickstarts
cURL — /v1/read
curl -X POST https://eunormia.com/v1/read -F 'pdf=@eingang.pdf'
cURL — /v1/validate (+ KoSIT + FR-CTC)
curl -X POST https://eunormia.com/v1/validate \
-F 'pdf=@eingang.pdf' -F 'kosit=true' -F 'frCtc=true'
C# (HttpClient)
using var client = new HttpClient();
var form = new MultipartFormDataContent {
{ new ByteArrayContent(File.ReadAllBytes("eingang.pdf")), "pdf", "eingang.pdf" }
};
var resp = await client.PostAsync("https://eunormia.com/v1/read", form);
var doc = System.Text.Json.JsonDocument.Parse(await resp.Content.ReadAsStringAsync());
var number = doc.RootElement.GetProperty("invoice").GetProperty("number").GetString();