Documentation de l'API
Réception de factures
Les deux points de terminaison acceptent un PDF ZUGFeRD/Factur-X entrant —
en champ multipart pdf (fichier) ou champ
pdfBase64. Rien n'est créé, rien n'est enregistré.
POST /v1/read — lire (désérialiser)
Extrait le XML CII intégré et renvoie la facture en objet JSON complet au
schéma eunormia — le même schéma que
/v1/convert accepte en entrée (aller-retour possible).
Réponse : {"standard": "facturx", "invoice": {…}, "xml": "…"}.
Le XML brut est joint pour les champs hors schéma.
PDF non lisible → 422.
POST /v1/validate — valider
Valide le PDF avec la double barrière : veraPDF (PDF/A-3) et le Schematron EN 16931. En option :
| Champ | Description |
|---|---|
kosit=true | Validateur officiel KoSIT (XRechnung/DE) en troisième barrière. |
frCtc=true | Règles CTC françaises (FNFE-MPE) en quatrième barrière. |
Réponse : {"valid": true|false, "verapdf": {…}, "xml": {…}, "kosit": {…}?, "frCtc": {…}?, "sha256": "…"}.
Chaque barrière renvoie result (PASS/FAIL/UNAVAILABLE)
et, en cas d'échec, les failures concrètes. Un module non installé
signale honnêtement UNAVAILABLE — jamais un PASS silencieux.
À essayer dans le navigateur : page de validation.
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();