Comment ça marche
Votre systèmeOuverture de compte, virement, revue périodique
Requête
API AuthenicaClé d'API, quota, trace de l'appel
Recherche
Listes consolidéesSanctions et PPE, rechargées régulièrement
Réponse : les fiches trouvées, avec la liste et la version de la liste
Ce que vous obtenez
Authenica fournit des données de conformité prêtes à l'emploi : le criblage de vos clients contre des listes publiques et officielles de sanctions et de personnes politiquement exposées (PPE), consolidées, rechargées régulièrement et servies par une API sécurisée, pour que vos équipes n'aient ni à collecter ni à normaliser ces listes elles-mêmes.
Listes publiques et officiellesSanctions des Nations unies, des États-Unis (OFAC), de l'Union européenne, du Royaume-Uni, de la Suisse et du Canada, gel national de la CENTIF-CI, et listes de PPE de l'UEMOA. La couverture s'élargit source après source.
Une preuve par versionChaque résultat porte la liste et la version de la liste d'où il vient. Vous démontrez, après coup, ce que disait la liste le jour du criblage.
Refus par défautUne indisponibilité répond toujours par une erreur, jamais par une réponse vide : votre processus ne laisse rien passer faute de réponse.
Lecture et contrôle des pièces d'identitéCarte d'identité, passeport, permis, titre de séjour : les champs lus, le modèle reconnu et les contrôles d'authenticité, à partir d'une photo. Rien n'est conservé.
On recherche, on ne stocke pasAuthenica interroge ses listes et vous répond : le nom que vous cherchez n'est conservé nulle part, ni dans la trace de l'appel ni ailleurs. Chaque appel reçoit un identifiant à garder pour prouver que le criblage a eu lieu.
Les listes interrogées
Le criblage porte sur des listes publiques et officielles, publiées par leurs émetteurs et rechargées régulièrement. De nouvelles sources s'ajoutent au fil du temps ; la liste à jour est toujours disponible par l'API (voir « Lister les sources »).
| Code | Liste | Émetteur | Type |
UN_CONSOLIDATED | Liste consolidée du Conseil de sécurité | Nations unies | Sanctions |
OFAC_SDN | Liste des ressortissants spécialement désignés (SDN) | Département du Trésor des États-Unis (OFAC) | Sanctions |
OFAC_CONSOLIDATED | Liste consolidée hors SDN | Département du Trésor des États-Unis (OFAC) | Sanctions |
EU_FSF | Liste consolidée des sanctions financières | Commission européenne | Sanctions |
UK_SANCTIONS_LIST | Liste des sanctions du Royaume-Uni | Foreign, Commonwealth and Development Office | Sanctions |
SECO_SWISS_SANCTIONS | Liste suisse des sanctions | Secrétariat d'État à l'économie (SECO) | Sanctions |
CANADA_SEMA | Liste canadienne des sanctions (SEMA) | Affaires mondiales Canada | Sanctions |
CENTIF_CI_1373 | Liste nationale, résolution 1373 | CENTIF de Côte d'Ivoire | Sanctions |
CI_GOVERNMENT | Composition du gouvernement de Côte d'Ivoire | Primature de Côte d'Ivoire | PPE |
UEMOA_PPE | Personnes politiquement exposées de l'UEMOA | Authenica, à partir de sources publiques | PPE |
Sanctions ou PPE. Une fiche de type SANCTIONS est bloquante : une personne l'examine avant toute décision. Une fiche de type PPE appelle une vigilance renforcée, selon votre politique.
Démarrer en deux minutes
- Obtenez une cléÉcrivez-nous : nous créons votre accès et vous remettons la clé.
- Appelez l'APIUn appel
POST avec le nom cherché et votre clé.
- Lisez le résultatUne liste de fiches, chacune avec sa liste et sa version.
curl -X POST https://api.authenica.tech/api/v1/screenings \
-H "X-Api-Key: $AUTHENICA_CLE_API" \
-H "Content-Type: application/json" \
-d '{"fullName":"Zorbek Nandrawell","scoreThreshold":0.85}'
À retenir. Une réponse vide veut dire : aucune fiche trouvée dans les listes publiées. Un service momentanément indisponible répond 503, jamais une réponse vide.
| Terme | En clair |
| Criblage | Chercher une personne ou une société dans les listes officielles de sanctions et de personnes politiquement exposées. |
| PPE | Personne politiquement exposée : une personne qui exerce ou a exercé une fonction publique importante. |
| Clé d'API | Un mot de passe long, propre à votre organisation, qui prouve que l'appel vient de vous. |
| Quota | Le nombre d'appels autorisés par minute pour votre accès. |
Obtenir votre clé
- Écrivez à it@authenica.tech avec le nom de votre organisation et l'usage prévu.
- Nous créons votre accès et vous remettons la clé une seule fois. Elle n'est pas conservée en clair : nous ne pouvons pas vous la redonner, seulement en créer une nouvelle.
- Nous convenons avec vous d'un quota par minute.
Pour changer ou révoquer une clé, écrivez à la même adresse. La révocation est immédiate.
Authentification
Chaque appel porte votre clé dans l'en-tête X-Api-Key. L'adresse de base est https://api.authenica.tech, en HTTPS seulement : un appel en HTTP est redirigé.
Gardez la clé secrète. Utilisez-la depuis vos serveurs, jamais depuis un navigateur ni une application mobile. Ne la mettez ni dans un dépôt de code ni dans un journal.
Sans clé, avec une clé inconnue ou révoquée : réponse 401. Connaître l'adresse ne donne aucun accès.
Interroger les listes
POST /api/v1/screenings
Ce que vous envoyez
| Champ | Description | En clair |
fullName OBLIGATOIRE | Nom complet cherché, 300 caractères au plus | Les prénoms puis le nom, comme sur la pièce d'identité. |
scoreThreshold OBLIGATOIRE | Nombre de 0 à 1 | Seuil de ressemblance au-dessus duquel une fiche est rendue. C'est votre politique de conformité qui le fixe, pas Authenica. |
corroboratedThreshold | Nombre de 0 à 1, plus bas que le précédent | Second seuil, valable seulement si la date de naissance concorde : une variante d'écriture note moins bien mais désigne la même personne. |
entityType | NATURAL_PERSON ou LEGAL_ENTITY | Chercher seulement des personnes physiques, ou seulement des sociétés. Absent : tous. |
listTypes | Tableau de SANCTIONS, PPE, LOCAL | Chercher seulement dans ces types de listes. Absent ou vide : tous. |
dateOfBirth | Date AAAA-MM-JJ | Sert à confirmer ou à contredire une fiche. |
nationality | Code pays à deux lettres (CI, SN, ML...) | Idem. |
placeOfBirth | Texte libre | Idem. |
documentNumber | Numéro de pièce d'identité | Réservé. Accepté seulement si votre accès y est autorisé ; sinon il est ignoré et la réponse le dit dans ignoredFields. |
reference | Texte | Votre identifiant de demande, sans nom de personne. |
Sur les seuils. Les exemples de cette page utilisent 0.85 pour illustrer. Ce n'est pas une recommandation : le bon seuil dépend de votre politique de conformité.
Lire la réponse
Réponse 200 :
{
"requestId": "63f766c4-9c1c-4adb-ac8e-4e66674b4be0",
"matches": [
{
"listType": "SANCTIONS",
"listName": "AUTHENICA_TEST_SANCTIONS",
"listVersion": "a0a0a0a0-0000-4000-8000-000000000001",
"targetLabel": "Zorbek NANDRAWELL",
"score": 1.0,
"confidence": "UNCORROBORATED",
"evidence": [
{
"field": "DOCUMENT_NUMBER",
"status": "UNKNOWN",
"customerValue": null,
"listValue": null
},
{
"field": "DATE_OF_BIRTH",
"status": "UNKNOWN",
"customerValue": null,
"listValue": "15 Jun 1975"
},
{
"field": "NATIONALITY",
"status": "UNKNOWN",
"customerValue": null,
"listValue": "Mali"
},
{
"field": "PLACE_OF_BIRTH",
"status": "UNKNOWN",
"customerValue": null,
"listValue": "Bamako"
}
],
"details": {
"entityType": "NATURAL_PERSON",
"list": {
"label": "Liste d'essai fictive : sanctions",
"publisher": "Authenica"
},
"sanctionPrograms": [
"TEST-FICTIF"
],
"title": "Personne fictive de la liste d'essai",
"description": "Fiche fictive pour tester l'intégration. Aucune personne réelle.",
"nationalities": [
"Mali"
],
"datesOfBirth": [
"15 Jun 1975"
],
"placesOfBirth": [
"Bamako"
]
}
}
],
"ignoredFields": []
}
| Champ | En clair |
requestId | L'identifiant de votre appel. Conservez-le et citez-le à notre support pour retrouver l'appel. Il est aussi dans l'en-tête X-Request-Id. |
matches | Les fiches trouvées, de la plus ressemblante à la moins ressemblante. Vide : aucune fiche ne dépasse votre seuil. |
listType | SANCTIONS : liste de sanctions, bloquante. PPE : personnes politiquement exposées. LOCAL : liste locale. |
listName | Le code de la liste d'origine, par exemple OFAC_SDN, UN_CONSOLIDATED, EU_FSF, UEMOA_PPE. La liste complète est dans « Lister les sources ». |
listVersion | Le lot de la liste qui a produit la fiche. Gardez-le : il prouve dans quelle version de la liste la personne figurait. |
targetLabel | Le nom de la fiche trouvée. |
score | La ressemblance entre le nom cherché et la fiche, de 0 à 1. |
confidence | À quel point les autres éléments confirment la correspondance (voir ci-dessous). |
evidence | Le détail de la comparaison, élément par élément, pour une personne. Pour une société, il est vide : seul le nom est comparé. |
details | Ce que dit la fiche trouvée, pour comprendre sans ouvrir la liste (voir « Le détail de la fiche »). |
ignoredFields | Les champs envoyés que votre accès n'est pas autorisé à utiliser. Jamais ignorés en silence. |
La confiance, en clair
Elle n'écarte jamais une fiche : un homonyme probable reste une alerte à faire examiner par une personne.
| Valeur | Ce que ça veut dire |
CORROBORATED | Au moins un élément concorde (date de naissance, nationalité...) et aucun ne contredit fortement. |
MIXED | Des éléments concordent et d'autres contredisent : un jugement humain est indispensable. |
UNCORROBORATED | Rien ne permet de confirmer ni d'infirmer, parce que des données manquent d'un côté ou de l'autre. |
LIKELY_HOMONYM | Aucun élément ne concorde et un élément fort contredit : probablement une autre personne. |
Le détail de la fiche
Le bloc details reprend ce que l'émetteur de la liste publie sur la fiche. Il aide à distinguer deux homonymes, par exemple deux personnes qui portent le même nom mais n'ont pas la même fonction.
| Champ | En clair |
entityType | NATURAL_PERSON : une personne physique. LEGAL_ENTITY : une société. |
list | Le nom lisible de la liste (label) et son émetteur (publisher). |
sanctionPrograms | Les types de sanctions : les régimes de sanctions de la fiche, tels que l'émetteur les publie (par exemple SDGT pour un terroriste désigné au niveau mondial dans la liste américaine). Vide pour une personne politiquement exposée. |
title | La fonction publiée, par exemple « Président de la République » ou « Maire de Niéllé ». C'est elle qui distingue deux homonymes. |
description | Le texte que la liste publie sur la fiche, tronqué à 600 caractères. Absent quand la fonction en tient lieu. |
nationalities, datesOfBirth, placesOfBirth | Ce que la liste publie. Toujours vides pour une société. |
Le détail de la comparaison
Chaque ligne de evidence a field (DATE_OF_BIRTH, NATIONALITY, PLACE_OF_BIRTH ou DOCUMENT_NUMBER), customerValue (ce que vous avez envoyé), listValue (ce que dit la fiche) et status :
MATCH : les deux concordent.
CONFLICT : les deux se contredisent.
UNKNOWN : l'un des deux côtés ne renseigne pas l'élément, donc ni confirmation ni contradiction.
Essayez avec des cas de test
Authenica tient une liste d'essai fictive pour tester votre intégration de bout en bout, avec des résultats reproductibles. Elle ne contient aucune personne ni société réelle : les noms ci-dessous n'existent pas. Vous pouvez rejouer chaque requête avec votre clé et obtenir la même réponse.
Un nom présent dans la liste de sanctions d'essai, avec sa date de naissance et sa nationalité.
Requête
curl -X POST https://api.authenica.tech/api/v1/screenings \
-H "X-Api-Key: $AUTHENICA_CLE_API" \
-H "Content-Type: application/json" \
-d '{"fullName":"Zorbek Nandrawell","dateOfBirth":"1975-06-15","nationality":"ML","scoreThreshold":0.85}'
Réponse réelle de l'API
{
"requestId": "b0fa0a4d-8236-44bc-9979-2a0a41fc95f2",
"matches": [
{
"listType": "SANCTIONS",
"listName": "AUTHENICA_TEST_SANCTIONS",
"listVersion": "a0a0a0a0-0000-4000-8000-000000000001",
"targetLabel": "Zorbek NANDRAWELL",
"score": 1.0,
"confidence": "CORROBORATED",
"evidence": [
{
"field": "DOCUMENT_NUMBER",
"status": "UNKNOWN",
"customerValue": null,
"listValue": null
},
{
"field": "DATE_OF_BIRTH",
"status": "MATCH",
"customerValue": "1975-06-15",
"listValue": "15 Jun 1975"
},
{
"field": "NATIONALITY",
"status": "MATCH",
"customerValue": "ML",
"listValue": "Mali"
},
{
"field": "PLACE_OF_BIRTH",
"status": "UNKNOWN",
"customerValue": null,
"listValue": "Bamako"
}
],
"details": {
"entityType": "NATURAL_PERSON",
"list": {
"label": "Liste d'essai fictive : sanctions",
"publisher": "Authenica"
},
"sanctionPrograms": [
"TEST-FICTIF"
],
"title": "Personne fictive de la liste d'essai",
"description": "Fiche fictive pour tester l'intégration. Aucune personne réelle.",
"nationalities": [
"Mali"
],
"datesOfBirth": [
"15 Jun 1975"
],
"placesOfBirth": [
"Bamako"
]
}
}
],
"ignoredFields": []
}
Comment la lire
- Une correspondance sur la liste
AUTHENICA_TEST_SANCTIONS, de type SANCTIONS : un type bloquant. CORROBORATED : la date de naissance et la nationalité que vous avez envoyées concordent avec la fiche (voir evidence).listVersion : le lot de la liste qui a produit la fiche. Conservez-le avec votre décision.- Une correspondance sur une liste de sanctions doit être examinée par une personne avant toute décision.
Un nom présent dans la liste de PPE d'essai, avec sa date de naissance et sa nationalité.
Requête
curl -X POST https://api.authenica.tech/api/v1/screenings \
-H "X-Api-Key: $AUTHENICA_CLE_API" \
-H "Content-Type: application/json" \
-d '{"fullName":"Kassim Dromvale","dateOfBirth":"1968-03-02","nationality":"CI","scoreThreshold":0.85}'
Réponse réelle de l'API
{
"requestId": "5ce9f675-92cf-4f19-9bd3-3098496f12e9",
"matches": [
{
"listType": "PPE",
"listName": "AUTHENICA_TEST_PPE",
"listVersion": "a0a0a0a0-0000-4000-8000-000000000002",
"targetLabel": "Kassim DROMVALE",
"score": 1.0,
"confidence": "CORROBORATED",
"evidence": [
{
"field": "DOCUMENT_NUMBER",
"status": "UNKNOWN",
"customerValue": null,
"listValue": null
},
{
"field": "DATE_OF_BIRTH",
"status": "MATCH",
"customerValue": "1968-03-02",
"listValue": "02 Mar 1968"
},
{
"field": "NATIONALITY",
"status": "MATCH",
"customerValue": "CI",
"listValue": "Côte d'Ivoire"
},
{
"field": "PLACE_OF_BIRTH",
"status": "UNKNOWN",
"customerValue": null,
"listValue": "Abidjan"
}
],
"details": {
"entityType": "NATURAL_PERSON",
"list": {
"label": "Liste d'essai fictive : personnes politiquement exposées",
"publisher": "Authenica"
},
"sanctionPrograms": [],
"title": "Ministre (fonction fictive)",
"description": "Fiche fictive pour tester l'intégration. Aucune personne réelle.",
"nationalities": [
"Côte d'Ivoire"
],
"datesOfBirth": [
"02 Mar 1968"
],
"placesOfBirth": [
"Abidjan"
]
}
}
],
"ignoredFields": []
}
Comment la lire
- Une correspondance sur la liste
AUTHENICA_TEST_PPE, de type PPE. - Une PPE n'est pas une sanction : elle appelle une vigilance renforcée, selon votre politique, après examen par une personne.
CORROBORATED : la date de naissance et la nationalité que vous avez envoyées concordent avec la fiche.
Un client ordinaire, absent de toutes les listes.
Requête
curl -X POST https://api.authenica.tech/api/v1/screenings \
-H "X-Api-Key: $AUTHENICA_CLE_API" \
-H "Content-Type: application/json" \
-d '{"fullName":"Aminata Kone Diabate","dateOfBirth":"1990-04-12","nationality":"CI","scoreThreshold":0.85}'
Réponse réelle de l'API
{
"requestId": "3b3a92ce-018f-452e-a63b-24d9129179a6",
"matches": [],
"ignoredFields": []
}
Comment la lire
matches est vide : aucune fiche ne dépasse votre seuil dans les listes publiées.- Ce n'est pas un accord : votre processus décide. Conservez le
requestId pour prouver que le criblage a eu lieu. - Une panne ne ressemble jamais à ce résultat : un service indisponible répond
503.
Une société de la liste d'essai, cherchée avec le filtre entityType.
Requête
curl -X POST https://api.authenica.tech/api/v1/screenings \
-H "X-Api-Key: $AUTHENICA_CLE_API" \
-H "Content-Type: application/json" \
-d '{"fullName":"Nandrawell Holding SARL","entityType":"LEGAL_ENTITY","scoreThreshold":0.85}'
Réponse réelle de l'API
{
"requestId": "bf7e6348-5909-49a4-a997-ed600d1e7494",
"matches": [
{
"listType": "SANCTIONS",
"listName": "AUTHENICA_TEST_SANCTIONS",
"listVersion": "a0a0a0a0-0000-4000-8000-000000000001",
"targetLabel": "NANDRAWELL HOLDING SARL",
"score": 1.0,
"confidence": "UNCORROBORATED",
"evidence": [],
"details": {
"entityType": "LEGAL_ENTITY",
"list": {
"label": "Liste d'essai fictive : sanctions",
"publisher": "Authenica"
},
"sanctionPrograms": [
"TEST-FICTIF"
],
"title": "Société fictive de la liste d'essai",
"description": "Fiche fictive pour tester l'intégration. Aucune société réelle.",
"nationalities": [],
"datesOfBirth": [],
"placesOfBirth": []
}
}
],
"ignoredFields": []
}
Comment la lire
entityType à LEGAL_ENTITY : seules les sociétés sont cherchées.evidence est vide : une société n'a ni date ni lieu de naissance ni nationalité à comparer, seul son nom est comparé.
À ne pas faire. Ces fiches servent à tester, jamais à décider. Un nom de la liste d'essai porte dans listName la mention AUTHENICA_TEST_SANCTIONS ou AUTHENICA_TEST_PPE : vous pouvez les écarter de vos décisions en filtrant sur ce nom.
Filtrer la recherche
Deux filtres, qui se combinent. Un filtre absent ne filtre rien.
# Seulement les personnes politiquement exposées
-d '{"fullName":"Kassim Dromvale","scoreThreshold":0.85,"listTypes":["PPE"]}'
# Seulement les sociétés, dans les listes de sanctions
-d '{"fullName":"Société Exemple SARL","scoreThreshold":0.85,"entityType":"LEGAL_ENTITY","listTypes":["SANCTIONS"]}'
# Avec la date de naissance et la nationalité, pour corroborer
-d '{"fullName":"Zorbek Nandrawell","scoreThreshold":0.85,"corroboratedThreshold":0.70,"dateOfBirth":"1975-06-15","nationality":"ML"}'
Un type inconnu (par exemple "entityType":"NAVIRE") est refusé avec une erreur 400.
Lister les sources
GET /api/v1/lists/sources
Une entrée par liste : code (celui que vous retrouvez dans listName), label (son nom lisible), publisher (l'émetteur), listType, lastBatchId (le dernier lot chargé, celui que vous retrouvez dans listVersion), lastLoadedAt (la date du chargement), status et entityCount (le nombre de fiches). Aucune donnée personnelle.
curl https://api.authenica.tech/api/v1/lists/sources -H "X-Api-Key: $AUTHENICA_CLE_API"
Lire et contrôler une pièce d'identité
Au-delà des listes, Authenica lit une pièce d'identité à partir de sa photo : carte d'identité, passeport, permis de conduire, titre de séjour. Le service rend les champs lus, le modèle de pièce reconnu et les contrôles menés (validité, authenticité, qualité de l'image, cohérence de la zone lisible par machine). Vous préremplissez ainsi votre formulaire d'entrée en relation et vous savez si la pièce mérite confiance.
Le service ne conserve rien. Il reçoit les images, les lit, rend le résultat et oublie. Aucune image et aucune valeur lue ne sont gardées. Ce que vous conservez, c'est vous qui le décidez.
Ce que vous envoyez
POST /api/v1/document-readings, en multipart/form-data, avec votre clé dans X-Api-Key comme pour les listes.
| Champ | Pièces | En clair |
front et back | Carte d'identité, permis, titre de séjour | Le recto et le verso, en deux images. Le recto seul est accepté ; un verso seul est refusé. |
singlePage | Passeport ou pièce à page unique | Une seule image. Ne se combine pas avec front et back. |
Images JPEG ou PNG, 5 Mo au plus chacune. Le contenu est vérifié : un fichier renommé en .jpg qui n'est pas une image est refusé.
curl -X POST https://api.authenica.tech/api/v1/document-readings \
-H "X-Api-Key: $AUTHENICA_CLE_API" \
-F "front=@recto.jpg;type=image/jpeg" \
-F "back=@verso.jpg;type=image/jpeg"
Ce que vous recevez
| Champ | En clair |
documentName | Le modèle de pièce reconnu, par exemple « Côte d'Ivoire, carte d'identité 2020 ». Vide si le modèle n'est pas reconnu. |
fields | Les champs d'identité lus : nom, prénoms, date et lieu de naissance, sexe, nationalité, pays émetteur, numéro de pièce, dates de délivrance et d'expiration, numéro personnel, profession, taille. Chacun porte sa value, sa confidence de 0 à 100, sa source (zone lisible par machine ou lecture visuelle) et sa validity. |
otherFields | Tout autre champ publié par la pièce : rien de ce qu'elle dit n'est perdu. |
authenticity | Les contrôles : overall, documentType, security, expiry, imageQuality, mrz, chacun OK, ERROR ou NOT_PERFORMED. securityChecks donne le nombre de contrôles de sécurité réussis, échoués et non menés. |
expired | true si la pièce est expirée, false sinon. |
warnings | Les points d'attention, expliqués ci-dessous. |
Nationalité et pays. Ils sont rendus tels que la pièce les porte, souvent en trois lettres (CIV). À vous de les ramener au code à deux lettres de votre propre formulaire.
Les signalements
| Code | En clair |
DOCUMENT_EXPIRED | La pièce est expirée. |
DOCUMENT_TYPE_NOT_RECOGNISED | Le modèle de la pièce n'est pas reconnu : les contrôles d'authenticité n'ont pas pu être faits. |
AUTHENTICITY_FAILED | Un contrôle d'authenticité a échoué : examinez la pièce avec attention. |
AUTHENTICITY_PARTIAL | Certains contrôles n'ont pas pu être menés avec cette prise de vue (par exemple ceux qui demandent une lumière particulière), mais aucun n'a échoué. Ce n'est pas une alerte. |
AUTHENTICITY_NOT_PERFORMED | Les contrôles d'authenticité n'ont pas pu être faits sur cette pièce. |
LOW_IMAGE_QUALITY | L'image est de mauvaise qualité : refaire la prise de vue peut améliorer la lecture. |
MRZ_CHECK_FAILED | La zone lisible par machine est incohérente : vérifiez le numéro de pièce et les dates. |
SOURCES_DISAGREE | Deux zones de la pièce donnent des valeurs différentes pour au moins un champ. |
MISSING_FIELDS | Des champs d'identité n'ont pas pu être lus : à saisir à la main. |
Un essai réel sur une pièce fictive
Voici la réponse réelle de l'API pour une image de passeport générée pour l'essai : elle n'est pas authentique et ne porte que des données inventées. Le service lit les champs, mais signale que le modèle n'est pas reconnu et que les contrôles d'authenticité n'ont pas pu être menés, exactement ce qu'il doit faire. Pour une pièce authentique d'un modèle connu, le modèle est nommé et les contrôles de sécurité sont menés et comptés dans securityChecks.
Requête
curl -X POST https://api.authenica.tech/api/v1/document-readings \
-H "X-Api-Key: $AUTHENICA_CLE_API" \
-F "singlePage=@passeport-fictif.png;type=image/png"
Réponse réelle de l'API (abrégée)
{
"requestId": "c6f82bd1-898a-45de-bcbf-95925b156d48",
"documentName": null,
"fields": {
"LAST_NAME": {
"value": "KONE",
"confidence": 78,
"source": "MRZ",
"validity": "NOT_PERFORMED",
"consistent": true
},
"GIVEN_NAMES": {
"value": "AMINATA",
"confidence": 82,
"source": "MRZ",
"validity": "NOT_PERFORMED",
"consistent": true
},
"DATE_OF_BIRTH": {
"value": "1990-04-12",
"confidence": 34,
"source": "MRZ",
"validity": "ERROR",
"consistent": true
},
"NATIONALITY": {
"value": "CIV",
"confidence": 97,
"source": "MRZ",
"validity": "OK",
"consistent": true
},
"DOCUMENT_NUMBER": {
"value": "XXI2345G7",
"confidence": 34,
"source": "MRZ",
"validity": "ERROR",
"consistent": true
},
"EXPIRY_DATE": {
"value": "2031-01-01",
"confidence": 29,
"source": "MRZ",
"validity": "OK",
"consistent": true
}
},
"otherFields": {
"MRZ Type": {
"value": "ID-3",
"confidence": 100,
"source": "MRZ",
"validity": "NOT_PERFORMED",
"consistent": true
},
"Issuing State Name": {
"value": "Cote d'Ivoire",
"confidence": 0,
"source": "MRZ",
"validity": "OK",
"consistent": true
}
},
"authenticity": {
"overall": "ERROR",
"documentType": "ERROR",
"security": "NOT_PERFORMED",
"expiry": "OK",
"imageQuality": "ERROR",
"mrz": "ERROR",
"securityChecks": null
},
"expired": false,
"warnings": [
"DOCUMENT_TYPE_NOT_RECOGNISED",
"AUTHENTICITY_NOT_PERFORMED",
"LOW_IMAGE_QUALITY",
"MRZ_CHECK_FAILED"
]
}
Les erreurs
| Code | Quand | Que faire |
400 INVALID_IMAGES | Image absente, type non accepté, contenu qui ne correspond pas au type, ou singlePage combiné avec front ou back. | Corrigez l'envoi. |
401 | Clé absente, inconnue, révoquée ou expirée. | Vérifiez la clé. |
413 | Image trop lourde. | Réduisez-la sous 5 Mo. |
422 DOCUMENT_UNREADABLE | Aucune pièce n'a pu être trouvée dans l'image. | Refaites la prise de vue : pièce entière, bien éclairée, à plat. |
429 | Trop d'appels dans la minute. | Attendez le délai de l'en-tête Retry-After. |
503 DOCUMENT_READER_UNAVAILABLE | Le service de lecture est momentanément indisponible. | Réessayez, ou laissez saisir à la main. Le service n'invente jamais une lecture. |
Une clé de durée limitée. Votre clé peut avoir une date d'expiration : passée cette date, elle est refusée comme une clé inconnue. Demandez-en le renouvellement avant l'échéance.
Les erreurs
Toute erreur a la même forme : {"code": "...", "message": "...", "requestId": "..."}. Le message ne reprend jamais ce que vous avez envoyé.
| HTTP | Code | En clair | Que faire |
| 400 | INVALID_REQUEST | La demande est incorrecte : nom vide, seuil hors de 0 à 1, type inconnu, corps illisible. | Corriger la demande. |
| 401 | API_KEY_REFUSED | Clé absente, inconnue ou révoquée. | Vérifier la clé, ou nous écrire si elle a été révoquée. |
| 429 | RATE_LIMITED | Vous avez dépassé votre quota par minute. L'en-tête Retry-After dit combien de secondes attendre. | Attendre puis réessayer ; lisser vos appels. |
| 503 | REFERENTIEL_UNAVAILABLE ou GATEWAY_UNAVAILABLE | Le service est momentanément indisponible. | Réessayer. Ne jamais traiter un 503 comme « aucune correspondance ». |
| 500 | INTERNAL_ERROR | Erreur inattendue de notre côté. | Réessayer ; citer le requestId à notre support. |
La règle d'or : le refus par défaut. Si l'appel échoue ou dépasse le délai, votre processus doit suspendre l'opération (ouverture de compte, virement...) et non la laisser passer. Prévoyez un délai d'attente de quelques secondes et un nombre limité de nouvelles tentatives.
Exemples de code
Dans chaque exemple, la clé vient d'une variable d'environnement et l'échec suspend l'opération.
import os, requests
reponse = requests.post(
"https://api.authenica.tech/api/v1/screenings",
headers={"X-Api-Key": os.environ["AUTHENICA_CLE_API"]},
json={"fullName": "Zorbek Nandrawell", "scoreThreshold": 0.85, "listTypes": ["SANCTIONS"]},
timeout=10,
)
if reponse.status_code != 200:
raise RuntimeError(f"Criblage impossible ({reponse.status_code}) : suspendre l'opération")
for fiche in reponse.json()["matches"]:
print(fiche["listName"], fiche["listVersion"], fiche["score"], fiche["confidence"])
// Node.js 18 ou plus
const reponse = await fetch("https://api.authenica.tech/api/v1/screenings", {
method: "POST",
headers: { "X-Api-Key": process.env.AUTHENICA_CLE_API, "Content-Type": "application/json" },
body: JSON.stringify({ fullName: "Zorbek Nandrawell", scoreThreshold: 0.85 }),
signal: AbortSignal.timeout(10_000),
});
if (!reponse.ok) throw new Error(`Criblage impossible (${reponse.status}) : suspendre l'opération`);
const { matches, requestId } = await reponse.json();
// Java 11 ou plus
HttpRequest requete = HttpRequest.newBuilder(URI.create("https://api.authenica.tech/api/v1/screenings"))
.timeout(Duration.ofSeconds(10))
.header("X-Api-Key", System.getenv("AUTHENICA_CLE_API"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{\"fullName\":\"Zorbek Nandrawell\",\"scoreThreshold\":0.85}"))
.build();
HttpResponse<String> reponse = HttpClient.newHttpClient().send(requete, HttpResponse.BodyHandlers.ofString());
if (reponse.statusCode() != 200) throw new IllegalStateException("Criblage impossible : suspendre l'opération");
curl -X POST https://api.authenica.tech/api/v1/screenings \
--max-time 10 --fail-with-body \
-H "X-Api-Key: $AUTHENICA_CLE_API" \
-H "Content-Type: application/json" \
-d '{"fullName":"Zorbek Nandrawell","scoreThreshold":0.85}'
Contrat OpenAPI
Le contrat de l'API est publié sur https://api.authenica.tech/v3/api-docs. Vous pouvez l'importer dans Postman ou Insomnia, ou générer un client avec un outil comme OpenAPI Generator.
Bonnes pratiques
- Conservez le
requestId et la listVersion avec votre décision : c'est votre preuve en cas d'inspection.
- Ne journalisez pas les noms cherchés ni la clé. Authenica ne les garde pas non plus : elle recherche, elle ne stocke pas.
- Un résultat n'est pas une décision : une personne examine chaque correspondance.
- Les listes sont rechargées automatiquement. La date du dernier chargement de chaque liste est dans la liste des sources.
- Fixez un délai d'attente à chaque appel et décidez à l'avance ce que fait votre processus si le service ne répond pas : il suspend.
Forfaits
Bientôt disponibles
Nous préparons des forfaits d'accès adaptés au volume d'appels de chaque institution. Ils seront publiés prochainement sur cette page.
En attendant, écrivez-nous pour obtenir un accès d'évaluation et être informé de leur ouverture.
Être informé de l'ouverture
Nous contacter
Une clé à demander, à changer ou à révoquer, une question d'intégration, un incident : it@authenica.tech. Indiquez le requestId de l'appel concerné quand vous en avez un.