Skip to main content
Transactions are the money. Events are everything else your platform knows: the login that preceded the withdrawal, the hand that moved chips between two accounts, the bonus that was claimed twice, the chargeback that arrived a week later. Events use one envelope for every category, are idempotent by design, and are evaluated by the same rule engine that scores your transactions.
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.
Send references and hashes, never raw secrets. Payment instruments, withdrawal destinations and account-control changes are stored as the hashed reference you send. Never send a card number, a full withdrawal address, a password hash or an MFA secret.

Example: a P2P settlement

Example: a chargeback

Dispute lifecycles are append-only: a correction is a new 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 returns 200 with "idempotent_replay": true and the originally stored event. Retry as often as you like.
  • Same event_id, different content returns 409. 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.
The response is 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_relevant automatically.
  • Payment and dispute events keep transaction retention. They are never expired on the event schedule, and the per-class overrides cannot shorten them.
Override the three expirable classes per application in Transactions → Settings → Event monitoring (1-730 days each).

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

Filters: 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.