Event ingestion is opt-in. Turn it on in Transactions → Settings → Event monitoring.
Until you do, nothing changes: your existing transaction rules keep firing on transactions only, and an event rule cannot be created by accident because a rule applies to transactions unless you explicitly include events.
Endpoints
The
/v3/ lane is the server lane and uses the same x-api-key authentication as the rest of the transaction API. The /v1/events/ lane is the device lane - see SDK event submission.
The envelope
Categories
Ten first-class categories, each with typed validation and managed rule fields.auth is the broad product category; security is the risk-grade subset with the ordered lifecycle that account-takeover rules read.
Required payload keys
Some actions cannot be correlated without specific keys, so validation rejects them rather than storing evidence nobody can join.Example: a P2P settlement
Example: a chargeback
dispute event, never an edit of the first one.
Idempotency
event_id is unique per application and is the whole idempotency contract.
- Same
event_id, same content returns200with"idempotent_replay": trueand the originally stored event. Retry as often as you like. - Same
event_id, different content returns409. You reused an id by mistake.
Batches
POST /v3/events/batch/ accepts up to 500 events. A batch is partially successful by design: one malformed page view must never take down the chargeback next to it.
207 Multi-Status when anything was rejected and 201 Created when everything landed.
Statuses
correlation_pending: true means a cross-subject rule still has to run; it resolves within minutes and the event’s status and score update in place. See asynchronous rules.
Retention
Events are far higher volume than transactions, so each one is filed into a retention class on arrival.
Two rules follow from the table:
- An event that matches a rule is evidence, so it is promoted to
risk_relevantautomatically. - Payment and dispute events keep transaction retention. They are never expired on the event schedule, and the per-class overrides cannot shorten them.
IP enrichment
Events carry the same IP enrichment as transactions - country, ASN, VPN/proxy and data-centre flags - and enrichment is resolved per unique IP address, never per event. A session that fires 200 page views from one address resolves that address once. Low-value telemetry goes further: it reads enrichment only if some other event already resolved that address. It never triggers a lookup of its own.GET /v3/events/enrichment-metrics/ reports the result, and the console shows the same numbers above the events list:
Reading events back
event_category, action_type, status, retention_class, subject_vendor_data, business_vendor_data, session_id, device_fingerprint, ip_address, game_id, round_id, affiliate_code, payment_reference_id, counterparty_vendor_data, matched_only, occurred_from, occurred_to, search. Multi-value filters repeat the parameter (?status=A&status=B).
GET /v3/events/{event_uuid}/ adds the payload, the device context, the IP enrichment, the subject’s cached risk signals, and every rule match with its evidence - including whether each matched field was server-derived, SDK-derived or customer-supplied.
DELETE /v3/events/{event_uuid}/delete/ deletes one event. It stops being returned by every read, and deletion is irreversible.
Next
Rules on events
Velocity, ratio, sequence and correlation rules over event data.
SDK event submission
Capture events straight from the device with a scoped credential.