Integration & API
Point your feed at us. Be monitored by tomorrow.
Four ways to connect a seamless-wallet stream — from a one-line curl to a zero-latency edge tap. The API is self-describing, strictly validated, and returns detections inline.
Four ways to connect
All four land in the same pipeline: contract validation → tenant-identity guard → detection rules → alerts and cases. Pick by how your side of the integration is shaped.
Send the canonical event
One JSON event per authenticated POST. You control the producer and emit our schema directly — the strictest, simplest path.
Best for: in-house integrations and platforms with an event bus.
Send your wire format as-is
POST your seamless-wallet payloads in the wire shape you already emit — single events or batches of up to 500. We map the fields; no adapter to write.
Best for: provider-side feeds and taps on provider ↔ operator traffic.
Fire-and-forget on your LAN
Your proxy emits one datagram per event to a local agent — zero latency added to the transaction path. The agent batches and forwards over reliable, authenticated HTTPS.
Best for: wallet proxies that cannot afford a blocking call.
Mirror traffic with no app changes
A reference Worker on your zone passes your wallet-API traffic through untouched, then mirrors a copy to us after the response is already on its way.
Best for: operators already proxied by Cloudflare.
Discover the contract
No PDF handoffs. The ingest endpoints publish their own live contract — auth, field-by-field schema, limits, and response shapes — so your integration can't drift from ours.
# The API is self-describing — the live contract, no auth needed: curl -s https://dev.gameshieldpro.com/api/ingest # canonical contract # provider-native connector descriptors are shared during onboarding
The fields that matter
| round_id / transaction_id | Correlation keys — round lifecycle + per-leg identity. |
| transaction_type | bet · win · cancel · tip · bonus |
| bet_amount / win_amount | Decimal strings, ≥ 0, with an ISO-4217 currency. |
| hash | Integrity hash. Present but may be empty — an empty hash is flagged as anomaly A-003, not bounced. |
| player_ip / supplier_ip | Real IPs power collusion, syndicate, and allowlist detection. |
| leg / match_key | Optional dual-leg pairing — unlocks operator↔supplier reconciliation. |
| ntp_timestamp | ISO-8601, NTP-disciplined — orders events inside a round. |
A stream, end to end
The provider-native connector takes the wire format you already emit — batched up to 500 events per request — and answers with per-event results and any detections it raised, synchronously.
POST /api/ingest/<connector>?currency=EUR
Authorization: Bearer <tenant-api-key>
[
{ "TrnType": "BET", "Amount": 25.0, "userId": "player-77",
"sessionId": "sess-1", "roundId": 990011, "TransactionId": "txn-5001",
"gameId": "bj-267", "History": "live-blackjack",
"tableGUID": "tbl-267", "hash": "d41d8c…", "isRoundFinished": false },
{ "TrnType": "WIN", "Amount": 40.0, "userId": "player-77",
"sessionId": "sess-1", "roundId": 990011, "TransactionId": "txn-5002",
"gameId": "bj-267", "hash": "9e107d…", "isRoundFinished": true }
]
→ 200 { "status": "batch", "received": 2,
"summary": { "ok": 2, "rejected": 0, "quarantined": 0 },
"results": [ { "index": 0, "status": "ok", "alerts": [] }, … ] }What you can rely on
Validated before it lands
Every event is checked against the full contract before any write. A malformed event is rejected with every violation listed — not just the first.
Identity-guarded
An event claiming an operator, supplier, or aggregator id your tenant doesn't own is quarantined — never written to the live stream — and a SOC investigation opens automatically.
Detection at ingest
Protocol rules run synchronously: the response tells you immediately which alerts an event raised, with severity and evidence.
Signed outbound alerts
Alert delivery to your webhook is Ed25519-signed with a public, well-known verification key — plus Slack, PagerDuty, SMS, and email channels, retried with backoff.
Predictable back-pressure
Per-key token-bucket rate limits with Retry-After semantics. Batches are admitted atomically — whole or not at all, never half-applied.
Tenant-scoped keys
API keys are issued per tenant, shown once, revocable instantly, and every use is audited.
Integrating a live feed? The full partner contract — every field, default, and error semantic, plus the tap agents — is shared during onboarding. Talk to us to get access.
See it on your own traffic.
We'll run a monitored pilot on a slice of your seamless-wallet feed and show you the drift, errors, and fraud signals it surfaces.