API temps réel

Une décision avant chaque opération

Votre système envoie la transaction à YARDA avant de l’exécuter et reçoit, dans la même réponse, une décision, un score et les raisons qui les justifient. Une seule requête HTTPS, authentifiée par votre clé, depuis n’importe quel langage.

L’appel

Une transaction en entrée, une décision expliquée en sortie

Cinq champs suffisent : la référence, la date, le montant, l’expéditeur et le bénéficiaire. Chaque champ facultatif, comme le corridor, le canal, l’agent, l’appareil ou la date du dernier changement de SIM, affine l’analyse. Si votre système nomme ses champs autrement, il peut les envoyer tels quels : la correspondance est établie une fois, lors de la mise en service.

Requête
POST /v1/predict/fraud
X-API-Key: <API_KEY>
Idempotency-Key: 2c5d0b8e-7a41-4c1f-9e3b-6d2f8a10c7e4
Content-Type: application/json

{
  "transaction": {
    "transaction_id": "TRX-2026-000184",
    "timestamp": "2026-10-18T09:42:11Z",
    "amount": 450000,
    "currency": "XOF",
    "sender_id": "CLI-004512",
    "receiver_id": "CLI-019877",
    "sender_country": "SN",
    "receiver_country": "CI",
    "channel": "agent",
    "transaction_type": "remittance",
    "agent_id": "AG-0231"
  }
}
Réponse (extrait, valeurs illustratives)
{
  "request_id": "5b9e0c4e-2f7a-4d3c-9a51-8c0d6f1e2a47",
  "transaction_id": "TRX-2026-000184",
  "decision": "alert",
  "final_score": 0.83,
  "thresholds": { "review": 0.5, "alert": 0.7, "block": 0.9 },
  "decision_cause": {
    "kind": "score_band",
    "decision": "alert",
    "reason_fr": "Score de 83, au-dessus du seuil d'alerte (70).",
    "reason_en": "Score 83, above the alert threshold (70)."
  },
  "reasons": [
    {
      "feature": "s_amount_vs_median_90d",
      "direction": "high",
      "value": 9.4,
      "typical": 1.1,
      "weight": 0.97,
      "source": "anomaly"
    },
    {
      "feature": "s_new_receiver",
      "direction": "high",
      "value": 1,
      "typical": 0,
      "weight": 0.61,
      "source": "anomaly"
    }
  ],
  "triggered_rules": [],
  "degraded": false
}

La réponse contient aussi les scores de chaque modèle, les règles qui ont agi et, le cas échéant, l’ajustement apporté par votre politique.

Les décisions

Quatre décisions, chacune avec sa cause

Le score place la transaction parmi votre propre trafic. Vos seuils, réglés dans la console, le traduisent en décision ; une règle ou une typologie active peut imposer une décision minimale. La cause décisive est rédigée en français et en anglais, prête à être montrée à un analyste.

  • allow

    Autoriser

    La transaction suit son cours. Elle reste enregistrée et peut être revue plus tard.

  • review

    Revoir

    La transaction suit son cours et rejoint la file de vos analystes pour un examen a posteriori.

  • alert

    Alerter

    La transaction mérite un examen avant d’aller plus loin : elle arrive dans la file des alertes avec ses raisons.

  • block

    Bloquer

    La transaction ne devrait pas être exécutée. Cette décision n’existe que si vous avez autorisé le blocage.

L’intégration

Ce qu’il faut savoir pour intégrer sereinement

L’API applique les pratiques d’un service financier : une clé par usage, des requêtes rejouables sans risque, des limites explicites et des erreurs qui disent quoi faire.

  • Des clés à droits limités

    Votre administrateur crée les clés dans la console, avec une durée de vie et des droits choisis : envoyer des transactions, lire les résultats, transmettre des qualifications. Une clé ne s’affiche qu’une fois et n’est jamais envoyée par e-mail.

  • Rejouer sans doublon

    Avec l’en-tête Idempotency-Key, une requête renvoyée après une coupure réseau obtient la même réponse pendant 24 heures, sans seconde analyse.

  • Des limites annoncées

    Par défaut, 600 requêtes par minute et par clé, et 1 Mo par requête. Au-delà du nombre de requêtes, la réponse 429 indique quand réessayer.

  • Un incident ne passe pas inaperçu

    Si un modèle ne peut pas répondre, la réponse le signale et la décision suit le plancher fixé dans votre politique, une revue par défaut.

  • Pseudonymisé à l’arrivée

    Les identifiants de personnes, de téléphones, de portefeuilles, d’agents et d’appareils sont remplacés par des pseudonymes avant tout enregistrement. Les noms et adresses éventuellement transmis ne sont jamais conservés.

  • Une documentation tenue à jour

    La documentation de l’API est générée depuis sa description OpenAPI : les champs qu’elle décrit sont ceux que le service accepte.

Au-delà de l’analyse

Les autres appels de votre système

La même clé donne accès aux appels qui complètent l’analyse des transactions.

  • Les qualifications tardives

    Réclamations, annulations, conclusions d’enquête : transmettez jusqu’à 1 000 qualifications par appel, pour que vos modèles apprennent aussi de ce que vous découvrez après coup.

  • Le filtrage des sanctions

    Comparez le nom d’un client, ou de 1 000 clients à la fois, à la liste consolidée des Nations unies et à la liste nationale de Côte d’Ivoire. Le nom est comparé puis oublié ; un rapprochement est examiné par une personne, jamais appliqué d’office.

  • Relire une analyse

    Retrouvez une analyse passée par son identifiant de requête, avec sa décision et ses raisons.

Questions fréquentes

Faut-il envoyer les noms de mes clients ?
Non. YARDA n’en a pas besoin pour analyser une transaction : envoyez vos identifiants internes, qui sont pseudonymisés à l’arrivée. Seul le filtrage des sanctions demande un nom, comparé en mémoire puis oublié.
Que se passe-t-il au démarrage, avant tout entraînement ?
Vos règles et les typologies que vous activez s’appliquent dès le premier appel. Les modèles s’ajoutent une fois entraînés sur votre historique, qu’un import de fichier suffit à fournir.
Puis-je combiner l’API et les fichiers ?
Oui. Les transactions arrivées par l’API, par fichier ou par la base de données alimentent le même historique et la même console.

Prêt à brancher votre système ?

Consultez la documentation, puis demandez l’accès pour votre équipe technique ou votre prestataire.