Integrate
Connecting your operator API
The AI agent and your agents read player data straight from your operator API. You connect it by mapping the platform’s standard operations onto your API.
#How it works
The platform defines a fixed set of operations for iGaming support. You map them to endpoints of your own API; each operation belongs to a capability, and capabilities are switched on per integration. Amounts always travel in minor units (e.g. cents) with an ISO 4217 currency.
| Operation | Capability | Kind | Description |
|---|---|---|---|
player.get | player.read | read | Player profile and status |
wallet.get | wallet.read | read | Wallet balances |
deposits.list | deposits.read | read | Recent deposits |
withdrawals.list | withdrawals.read | read | Recent withdrawals |
bonuses.list | bonus.history | read | Bonus history |
kyc.get | kyc.read | read | KYC status |
restrictions.get | restrictions.read | read | Restrictions (e.g. self-exclusion) |
bonus.eligibility | bonus.eligibility | read | Bonus eligibility |
bonus.grant | bonus.grant | action | Grant a bonus |
bonus.lookup | bonus.grant | read | Look up a bonus request (reconciliation) |
payments.methods | payments.methods | read | Deposit methods |
deposit.link | payments.deposit_link | read | Create a payment page link |
bonus.grant is the only operation that moves money or changes state. A payment link does not move money, so it counts as a read; its URL is never given to the AI model and is posted to the chat by the platform as a card.
#Setup steps
In the admin console, create a New integration (name and brand) on the Integrations page and follow the wizard. Changes require integrations:write.
API document
Upload an OpenAPI 3.x (JSON or YAML), Swagger 2.0 or Postman Collection v2.1 file of up to 5 MB. External
$refs are not supported; the document must be a single file. It is parsed in a separate, isolated service.Mapping
Suggest with AI produces a draft mapping with a confidence score, notes, unmapped operations and suggested hosts. Review, edit and save the draft. For each operation you define the method, path template, inputs, success status codes, response field paths (e.g.
$.data.balance), transforms (e.g. decimal amount to minor units, value mapping, date format) and error rules.Hosts & credentials
Enter the hosts the API may be called on as exact
host[:port]values (no wildcards, up to 10). Hosts found in the document or the suggestion are listed but never approved automatically. Then choose the authentication type and enter the values (see below).Conformance
Tests run against your sandbox. You provide an existing player id and a different, unknown one; for the bonus test, optionally a campaign, amount and currency. The tests check the schema of each read, that sending the same bonus request twice grants a single bonus, reconciliation after a timeout, error mapping and latency.
Publish & capabilities
Publishing needs a passed conformance run that proves
player.read. Published versions are immutable; changes go into a new draft and a new version. Capabilities are switched on separately and only proven ones can be enabled;bonus.grantalso needsplayer.readandrestrictions.read. Finally activate the integration (credentials must be set).
The Try it runner calls one mapped read operation on the draft or the active version and shows the result; the Versions tab shows a diff between definitions.
#Credentials
| Type | Description |
|---|---|
none | No authentication. |
apiKey | API key in a header or query parameter, with configurable name and prefix. |
bearer | Authorization: Bearer token. |
basic | Username and password (HTTP Basic). |
oauth2ClientCredentials | OAuth 2.0 client credentials: client id/secret, token URL and scope. |
hmac | HMAC signature (SHA-256/512, hex/base64): string-to-sign template, signature header, optional timestamp and key-id headers. |
Credentials are stored encrypted with the connector service’s public key (RSA-OAEP-256 + A256GCM). Neither the Core API nor the admin console can decrypt them; the console only shows which fields are stored. To change them, enter all values again.
#Network and safety rules
- Only allowed hosts are called, and only over https.
- Every IP address the host resolves to must be public; private, loopback, link-local/metadata and similar ranges are blocked. The connection is pinned to the checked IP.
- Credentials in URLs are rejected, redirects are not followed and responses are capped at 2 MB.
- The default timeout is 8 seconds, adjustable per operation between 0.5 and 30 seconds. Reads are attempted at most twice;
bonus.grantis never retried blindly. - After 5 consecutive failures a circuit breaker pauses new calls for 30 seconds.
#Player binding
Reads only run for players verified with a signed identity token. The player id in the call is always filled in with the verified player linked to the conversation. Results are cached briefly (30 seconds) and given to the assistant as verified facts; the assistant may only state amounts that appear in them. Sensitive data such as card numbers, Turkish national ID numbers and IBANs is masked before it reaches the model.
#Bonuses, policy and approval
Bonus grants are governed by the Action policy in the admin console: whether bonuses are enabled, player confirmation in the widget, a KYC requirement, human approval above an amount, a maximum per bonus, a tenant total per day, a per-player daily limit and a separate daily limit for AI-initiated requests, and confirmation and approval timeouts. Campaigns are defined on the Bonus campaigns page.
Every bonus request goes through these checks in order; the first denial stops it:
- is the player verified with a signed identity;
- is the capability enabled;
- restrictions (e.g. self-exclusion; denied if they cannot be checked);
- KYC (if the policy requires it);
- is the campaign active and does it match the brand; campaign rules;
- the operator’s eligibility answer (
bonus.eligibility); - amount and frequency limits; duplicate check.
The player then confirms the offer in the widget (if the policy requires it). Above the human-approval threshold the request waits for someone with actions:approve; nobody can approve their own request, and the policy is evaluated again at approval time. The grant is sent with a one-time idempotency key. If the outcome is unknown (timeout, lost connection), the platform reconciles with bonus.lookup. The player is told only after a verified success.
#Monitoring
The Diagnostics tab under Operations & incidents shows the integration call log (filterable by outcome and operation); incidents are opened when error-rate and latency thresholds are exceeded. Provider call logs are deleted after 30 days.