Skip to main content

API — Analyse documentaire

Cette page décrit l'utilisation de l'analyse documentaire via l'API Certificall : envoi d'un document à analyser, puis récupération du résultat (scores, verdicts et niveau de confiance).

Option requise

L'analyse documentaire est une option de votre contrat, activée par votre contact Certificall. La configuration des trames (types de documents acceptés, cross-check, suppression RGPD) est décrite dans la page Analyse documentaire — administration.

Vue d'ensemble du flux

#ÉtapeEndpoint
1S'authentifierPOST /auth/token — voir Authentification Publique
2Récupérer la trame et le stepId de l'étape documentGET /frames — voir Création de Certificat
3Créer un dossierPOST /cases/create — voir Gestion des Dossiers
4Uploader le documentPOST /items/:caseId
5Récupérer le résultat de l'analyseGET /cases/:caseId/analysis

Toutes les requêtes (sauf l'authentification) requièrent l'en-tête :

Authorization: Bearer <Votre_Token_JWT>

1. Uploader le document à analyser

Endpoint : POST /items/:caseId

Description

Crée un item sur une étape de type Upload document et déclenche l'analyse documentaire si l'étape est configurée pour. L'analyse s'exécute en asynchrone : son résultat n'est pas dans la réponse de cet endpoint.

Requête

  • URL : /items/:caseId
  • Méthode HTTP : POST
  • Headers requis :
    Authorization: Bearer <Votre_Token_JWT>
    Content-Type: multipart/form-data
  • Corps (multipart form-data) :
    • file : le document à analyser ;
    • createItemDto : objet JSON stringifié (stepId, data, informations device…) — détail complet des champs dans Gestion des Items.

Contraintes sur le fichier

ContrainteValeur
Formats acceptésPDF, JPEG, PNG
Taille maximale~10 Mo
Vérification du typeLe type réel du fichier est vérifié (signature binaire), pas seulement son extension.

Exemple de requête

curl -X POST "https://admin.certificall.app/certificall/api/items/12345" \
-H "Authorization: Bearer votre_token_jwt" \
-F "file=@/chemin/vers/document.pdf" \
-F 'createItemDto={
"companyId": 1,
"stepId": 101,
"data": "document.pdf",
"userDeviceManufacturer": "Serveur",
"userDeviceModel": "API",
"userDeviceName": "integration-api",
"userDevicePlatform": "Server",
"userDeviceOs": "Linux",
"userDeviceOsVersion": "1.0"
}'

Réponses

  • 200 OK : item créé. Pour une étape configurée, l'analyse documentaire démarre en asynchrone.
  • 400 Bad Request : fichier trop volumineux, type de fichier non supporté ou étape introuvable — le message précise la cause.
  • 403 Forbidden : le dossier n'appartient pas à votre entreprise.

2. Récupérer le résultat de l'analyse

Endpoint : GET /cases/:caseId/analysis

Description

Renvoie l'analyse de confiance complète du dossier : le score de confiance global (Trust Score), les signaux par dimension (géolocalisation, device, photo, document…), et le détail de chaque analyse documentaire.

Analyse asynchrone

L'analyse documentaire prend généralement quelques dizaines de secondes après l'upload. Tant qu'elle n'est pas terminée, le bloc documentAnalyses peut être partiel — fiez-vous au champ progressStatusLevel (ANALYSIS_COMPLETED = terminé) avant d'exploiter les scores.

Requête

  • URL : /cases/:caseId/analysis
  • Méthode HTTP : GET
  • Paramètres de chemin :
    • caseId : number — l'identifiant du dossier.
  • Headers requis :
    Authorization: Bearer <Votre_Token_JWT>

Réponse en cas de succès

  • Code Statut : 200 OK
  • Type : ApiCaseAnalysisDto
{
"caseId": 798,
"trustScore": 86,
"trustLevel": "GOOD",
"itemsAnalyzed": 5,
"signals": [
{ "key": "gps", "score": 95, "trustLevel": "GOOD" },
{ "key": "device", "score": 90, "trustLevel": "GOOD" },
{ "key": "document", "score": 88, "trustLevel": "GOOD" }
],
"documentAnalyses": [
{
"itemId": 12345,
"expectedDocumentTypes": ["INVOICE"],
"detectedDocumentType": "INVOICE",
"typeMatchScore": 100,
"crossCheckResults": [
{ "fieldCode": "totalAmount", "fieldLabel": "Montant total", "match": "MATCH" },
{ "fieldCode": "customerName", "fieldLabel": "Nom du client", "match": "MATCH" }
],
"crossCheckScore": 100,
"suspicionLevel": "NONE",
"evaluation": 96,
"suspicionScore": 96,
"progressStatusLevel": "ANALYSIS_COMPLETED",
"trustScore": 97,
"analysisDetails": [
{
"code": "FONT_CONSISTENCY",
"label": "Cohérence des polices",
"status": "VALID",
"evaluation": 95,
"suspicionLevel": "NONE",
"weight": 2
}
]
}
]
}

Modèle de données

ApiCaseAnalysisDto — analyse du dossier

ChampTypeDescription
caseIdNumberIdentifiant du dossier.
trustScoreNumberScore de confiance global du dossier (0-100).
trustLevelStringGOOD | SUSPICIOUS | CRITICAL.
signalsArrayScore par dimension : gps, battery, motion, device, image, duplicate, document. Le signal document n'apparaît que si une analyse documentaire existe sur le dossier.
itemsAnalyzedNumberNombre d'items analysés.
documentAnalysesArrayDétail de chaque analyse documentaire (voir ci-dessous).

ApiDocumentAnalysisDto — analyse d'un document

ChampTypeDescription
itemIdNumberItem (document) concerné.
expectedDocumentTypesString[]Types de documents acceptés configurés sur l'étape.
detectedDocumentTypeString | nullType de document détecté.
typeMatchScoreNumber | nullConformité du type (0-100) : le document correspond-il au type attendu.
crossCheckResultsArray | nullVerdict par champ recoupé : MATCH | MISMATCH | MISSING. Les valeurs comparées ne sont jamais renvoyées (zéro donnée personnelle).
crossCheckScoreNumber | nullCohérence croisée (0-100) : recoupement document ↔ données saisies.
suspicionScoreNumber | nullAnalyse d'anomalies (0-100) : détection forensique de falsification.
suspicionLevelString | nullNiveau de suspicion (NONE, LOW, MEDIUM, HIGH…).
evaluationNumber | nullNote brute de l'évaluation du document.
progressStatusLevelString | nullAvancement de l'analyse (ANALYSIS_COMPLETED = terminé).
trustScoreNumber | nullScore documentaire agrégé (0-100), intégré au Trust Score global.
analysisDetailsArray | nullDétail des critères de contrôle : code, label, status, evaluation (0-100), suspicionLevel, weight.

Correspondance avec le triple scoring

NoteChamp API
Analyse d'anomaliessuspicionScore
Conformité du type de documenttypeMatchScore
Cohérence croisée (cross-check)crossCheckScore
Score documentaire globaltrustScore (intégré au trustScore du dossier via le signal document)

Réponses en cas d'échec

  • 403 Forbidden : le dossier n'appartient pas à votre entreprise.
  • 404 Not Found : dossier introuvable.

Confidentialité : zéro donnée personnelle

L'API d'analyse ne renvoie jamais les valeurs extraites du document (noms, montants, dates…). Seuls des faits sont exposés : verdicts (MATCH/MISMATCH/MISSING), scores et critères de contrôle. Combinée à l'option « Supprimer le document après l'analyse », cette approche permet une intégration entièrement compatible avec votre politique RGPD : vous ne conservez que le résultat.

Cas d'utilisation

  1. Vérification de pièces en marche automatique : votre back-office uploade les justificatifs reçus, attend ANALYSIS_COMPLETED, et route le dossier (validation auto si trustLevel = GOOD, revue manuelle sinon).
  2. Coffre-fort numérique : chaque document uploadé est certifié (horodatage eIDAS, signature) — vous récupérez les certificats via les rapports.
  3. Collecte minimisée (RGPD) : avec la suppression après analyse, votre SI ne stocke ni ne reçoit aucune pièce — uniquement les scores de cette API.