Passer au contenu principal
POST
curl
L’ingestion d’événements est facultative. Activez-la dans Transactions > Settings > Event monitoring avant d’envoyer des événements ; tant qu’elle ne l’est pas, cet endpoint répond 403 avec "code": "event_monitoring_disabled".
Ingestion des événements présente l’enveloppe, les dix catégories, les clés de payload obligatoires et les classes de conservation. Règles applicables aux événements explique quelles règles s’exécutent dans la requête et lesquelles s’exécutent de manière asynchrone. Pour envoyer des événements depuis un navigateur ou une application plutôt que depuis votre back-end, utilisez l’envoi d’événements via le SDK.

Autorisations

x-api-key
string
header
requis

La clé API de votre application, issue de Développeurs -> Clés API dans la Business Console. La clé principale dispose d'un accès complet. Une clé nommée peut être restreinte : aucun, lecture ou écriture par ressource, limitée à certains workflows ou aux sessions approuvées, à une liste d'adresses IP et à une date d'expiration. 401 signifie que la clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a été envoyée, que la clé n'a pas accès à cette ressource ou action, ou que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur une route de session signifie que la session est hors des workflows ou des statuts de la clé. Une clé sans accès aux médias reçoit les URL d'images, de vidéos et de PDF à null, et une clé sans accès en écriture aux sessions reçoit les liens et tokens de session à null. Voir https://docs.didit.me/console/api-keys.

Corps

application/json

L'enveloppe de l'événement, identique pour chaque catégorie. Les alias en camelCase sont acceptés : eventId, eventCategory (ou category), actionType, occurredAt, timeZone (ou zoneId), deviceContext (ou device), transactionContext, customValues (ou props) ; dans subject : vendorData, entityType, fullName ; dans session : sessionId, pageUrl ; dans transaction_context : paymentReferenceId.

event_id
string
requis

Votre identifiant pour l'événement, unique par application. Il s'agit de la clé d'idempotence : renvoyer les mêmes event_category, action_type, occurred_at, subject.vendor_data et payload sous cet identifiant constitue un rejeu, toute modification constitue un conflit.

Maximum string length: 128
Exemple:

"login-2026-10-17-000001"

event_category
enum<string>
requis

Catégorie d'événement.

Options disponibles:
auth,
session,
gameplay,
bonus,
affiliate,
payment,
dispute,
security,
responsible_gambling,
custom
Exemple:

"auth"

action_type
string
requis

Ce qui s'est passé au sein de la catégorie. Vocabulaire ouvert ; les actions gérées listées dans Event ingestion (par exemple login, deposit_completed, chargeback_opened) débloquent la validation typée et les champs de règles gérées. Les espaces de début et de fin sont supprimés.

Required string length: 1 - 128
Exemple:

"login"

occurred_at
string<date-time>
requis

Date et heure de l'événement de votre côté, ISO 8601 (une valeur sans fuseau horaire est lue comme UTC). Ne doit pas dater de plus de 7 jours dans le passé ni dépasser 5 minutes dans le futur.

Exemple:

"2026-10-17T09:15:02.481Z"

subject
object
requis

L'utilisateur ou l'entreprise auquel appartient l'événement. Il correspond à l'utilisateur (ou l'entreprise) ayant ce vendor_data dans votre application ; un utilisateur ou une entreprise est créé(e) lorsqu'il n'en existe aucun(e).

time_zone
string | null

Fuseau horaire de l'occurrence de votre côté, par exemple Europe/Madrid. Enregistré avec l'événement ; non renvoyé par les endpoints de lecture.

Maximum string length: 64
business
object

L'entreprise à laquelle appartient l'événement, lorsqu'elle diffère du sujet. Seul vendor_data est lu.

session
object

Le contexte de votre session pour l'événement.

device_context
object

Contexte de l'appareil et du réseau, stocké tel quel et renvoyé par GET /v3/events/{event_uuid}/. Sur cette voie serveur, Didit ne voit pas la connexion de l'utilisateur final ; l'IP enrichie et utilisée par les règles est donc network_context.ip_address telle que vous l'envoyez.

transaction_context
object

Contexte monétaire. Les valeurs non vides ici satisfont également les clés de payload requises de l'action.

payload
object

Les champs de domaine de la catégorie, au maximum 16384 octets une fois encodés en JSON. Certaines actions requièrent des clés (dans payload ou transaction_context) : gameplay.p2p_settlement nécessite game_id, counterparty_vendor_data, stake_amount, net_result_amount, role et l'un des champs hand_id, round_id, match_id ; gameplay.bet_placed et gameplay.bet_settled nécessitent game_id ; payment.deposit_initiated, payment.deposit_completed, payment.withdrawal_requested et payment.withdrawal_completed nécessitent payment_reference_id, amount, currency, payment_method, status ; payment.withdrawal_address_changed nécessite withdrawal_address_hash ; dispute.chargeback_opened, dispute.chargeback_won et dispute.chargeback_lost nécessitent payment_reference_id et l'un des champs dispute_id, chargeback_id ; session.bot_signal_observed nécessite telemetry_schema_version et l'un des champs bot_score, actions_per_minute, timing_variance_ms, pointer_entropy, keystroke_entropy, reaction_time_ms_p50 ; responsible_gambling.self_exclusion_match nécessite registry_source, exclusion_status, identity_match_ref. Chaque action security se terminant par _changed nécessite changed_field, ainsi que previous_reference_hash ou new_reference_hash lorsque le champ est password, mfa_method, mfa, email, phone, withdrawal_address, payout_method ou api_key. Envoyez des hachages et des références, jamais un numéro de carte, une adresse de retrait complète, un hachage de mot de passe ou un secret MFA.

custom_values
object

Jusqu'à 100 clés personnalisées, adressables depuis les règles sous la forme custom_values.<key>. Les valeurs doivent être des scalaires (chaîne, nombre, booléen ou null) ; les objets imbriqués et les tableaux sont rejetés.

Réponse

Rejeu idempotent : un événement avec cet event_id et le même contenu est déjà stocké. Rien n'a été stocké ni évalué à nouveau ; le corps décrit l'événement stocké.

Résultat de l'ingestion d'un événement. Le même format est renvoyé pour un nouvel événement et pour un rejeu idempotent.

event_uuid
string<uuid>
requis

Identifiant Didit de l'événement stocké.

event_id
string
requis

Votre event_id.

status
enum<string>
requis

Statut après l'exécution des règles en temps réel. Voir MonitoringEvent.status.

Options disponibles:
ACCEPTED,
APPROVED,
IN_REVIEW,
DECLINED
score
integer
requis

Score après l'exécution des règles en temps réel.

rules_evaluated_count
integer
requis

Nombre de règles d'événement évaluées dans la requête. 0 dans une application sandbox, où aucune règle n'est exécutée.

Plage requise: x >= 0
rules_matched_count
integer
requis

Nombre de règles correspondantes, y compris les règles en mode TEST.

Plage requise: x >= 0
correlation_pending
boolean
requis

true lorsqu'une règle asynchrone doit encore s'exécuter. Consultez GET /v3/events/{event_uuid}/ quelques minutes plus tard pour obtenir le status et le score finaux.

retention_class
enum<string>
requis

Classe de conservation, après toute promotion par une règle correspondante.

Options disponibles:
low_value,
standard,
risk_relevant,
monetary_or_compliance
expires_at
string<date-time> | null
requis

Date et heure auxquelles l'événement expire selon sa classe de conservation et est supprimé. Null pour les événements monetary_or_compliance (paiement et litige).

idempotent_replay
boolean
requis

true lorsqu'un événement avec cet event_id et le même contenu a déjà été enregistré ; les valeurs sont celles de l'événement stocké et aucune règle n'a été réexécutée.

rule_matches
object[]
requis

Règles ayant correspondu à l'événement.

Dernière modification le 7 novembre 2026