Documentation

L'API expose un pipeline configurable et des endpoints atomiques. Les deux existent dès la première version : le pipeline pour l'ergonomie, les endpoints pour que le comportement reste débogable et facturable étape par étape.

La référence interactive n'est pas encore publiée. Elle sera générée depuis la spécification OpenAPI et rendue avec Scalar, quand la première version de l'API sera en ligne. Cette page décrit le contrat déjà arrêté.

Un appel

POST /v1/process HTTP/1.1
Host: api.factlint.com
Authorization: Bearer <clé>
Idempotency-Key: 5f2c-…
Content-Type: application/json

{
  "document": {
    "content": "<base64>",
    "filename": "facture.pdf",
    "already_issued": false
  },
  "pipeline": {
    "validate": { "ruleset": "fr-2026-08", "include_passes": true },
    "autofix":  { "enabled": true, "max_changes": 50 }
  },
  "delivery": { "mode": "sync" }
}

Une réponse

Le verdict du document n'est pas un code HTTP. Une facture non conforme renvoie200 avec un statut métier ; les codes 4xx ne concernent que la requête.

{
  "status": "blocked",
  "report": {
    "validate": {
      "ruleset": {
        "id": "fr-2026-08",
        "sha256": "…",
        "effective_from": "2026-08-01",
        "retained_until": "2036-08-01"
      },
      "passes": 412,
      "errors": [
        {
          "code": "BR-CO-15",
          "bt": "BT-112",
          "severity": "fatal",
          "current_value": "1195.00",
          "suggested_value": "1200.00",
          "resolution": "blocked",
          "blocked_reason": "financial_field_policy",
          "docs_url": "https://factlint.com/errors/br-co-15"
        }
      ]
    }
  }
}

Statuts

StatutSens
passedConforme tel quel.
fixedConforme après corrections structurelles, chacune rendue avec son diff.
needs_inputDonnée métier manquante, ou valeur dérivée proposée sans écriture.
blockedNon conforme sur un champ hors périmètre par politique — un champ financier.
rejectedDocument irrecevable : illisible, chiffré, format inconnu.
not_evaluatedContrôle impossible. Jamais décompté — c'est notre problème, pas le vôtre.

Endpoints

EndpointRôleNote
POST /v1/validateValidation seuleGratuit et sans limite de volume
POST /v1/fixCorrection structurelle seule
POST /v1/convertConversion UBL ↔ CII ↔ Factur-X
POST /v1/enrichComplétion tracée des tiers
POST /v1/processPipeline complet en un appel
GET /v1/rulesetsCatalogue des jeux de règlesVersions, dates d'effet, empreintes
GET /v1/evidence/{id}Pack de preuve horodaté

Facturation

L'unité facturée est le document distinct, identifié par son empreinte SHA-256 — pas l'appel HTTP, pas l'étape de pipeline. L'usage normal d'une API de conformité est le re-test itératif : facturer à l'appel reviendrait à pénaliser exactement le comportement qu'on cherche à encourager. Les re-soumissions du même document sont gratuites pendant sept jours, et les erreurs serveur ne sont jamais décomptées.