Skip to content
KinetX
Operator API v1

API reference

Every endpoint of the Operator API v1 with its scope, parameters and example responses. Examples are generated from the same resources the API returns.

Base URL https://kinetx.amhtechnologies.com/api/v1 OpenAPI 3.1 JSON →

Account

Check your credentials and see which operator and scopes the key belongs to.

GET /api/v1/operator/me Get the calling API key

Returns the API key, its scopes and rate limit, the operator it belongs to and the server time. Use it to test request signing.

Any valid API key
Request
HTTP
GET /api/v1/operator/me HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": {
        "api_key": {
            "key": "kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d",
            "name": "Production integration",
            "scopes": [
                "players:read",
                "players:write",
                "wallet:read",
                "payments:write"
            ],
            "rate_limit_per_minute": 600,
            "expires_at": null
        },
        "operator": {
            "id": 3,
            "slug": "lucky-orbit",
            "name": "Lucky Orbit",
            "currency": "EUR",
            "cooperation_model": "turnkey"
        },
        "server_time": "2026-10-15T09:30:00Z"
    }
}

Players

Register players, read and update their profiles and status, and issue player session tokens for your front end.

GET /api/v1/operator/players List players

Players of your operator account, newest first.

Scope: players:read
Query parameters
page
integer
Page number, starting at 1.
per_page
integer
Items per page, 1–100 (default 25).
status
string
Account status.
active locked closed
email
string
Exact e-mail address.
username
string
Exact username.
external_id
string
Your own player id.
kyc_status
string
KYC status.
not_started pending_review verified rejected expired
search
string
Part of the username, e-mail or last name.
created_from
string · date-time
Only records created at or after this moment (ISO 8601).
created_to
string · date-time
Only records created at or before this moment (ISO 8601).
Request
HTTP
GET /api/v1/operator/players HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "id": 1042,
            "external_id": "op-58213",
            "username": "jane_doe",
            "email": "jane@example.com",
            "first_name": "Jane",
            "middle_name": null,
            "last_name": "Doe",
            "gender": "female",
            "birth_date": "1990-04-12",
            "country": "MT",
            "city": "Valletta",
            "address": "12 Republic Street",
            "zip_code": "VLT 1110",
            "phone": "+35699123456",
            "personal_id": null,
            "document_number": "P1234567",
            "language": "en",
            "currency": "EUR",
            "status": "active",
            "category": "new_user",
            "kyc_status": "not_started",
            "is_verified": false,
            "risk_level": "low",
            "is_test": false,
            "restrictions": {
                "can_login": true,
                "can_deposit": true,
                "can_withdraw": true,
                "can_bet": true,
                "excluded_from_bonuses": false
            },
            "self_exclusion": null,
            "marketing": {
                "email": true,
                "sms": false,
                "newsletter": false
            },
            "registration": {
                "source": "api",
                "ip": "203.0.113.10",
                "promo_code": "WELCOME100",
                "affiliate_id": "aff-204",
                "btag": null
            },
            "last_login_at": null,
            "created_at": "2026-10-15T09:30:00Z",
            "updated_at": "2026-10-15T09:30:00Z"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1,
        "last_page": 1,
        "from": 1,
        "to": 1
    },
    "links": {
        "first": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "last": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "prev": null,
        "next": null
    }
}
POST /api/v1/operator/players Register a player

Creates the player with real and bonus wallets and default limits. Players must be 18 or older and confirm the terms; username, e-mail, phone and external id are unique per operator. A registration matching the identity of a currently self-excluded player (personal id, document number, or name and date of birth) is refused. A promo code is redeemed on registration when valid. Sends the player.registered webhook.

Scope: players:write Idempotency-Key
Body (JSON)
username
string
required 3–30 characters: letters, digits, dashes and underscores.
email
string · email
required E-mail address (stored in lower case).
first_name
string
required First name as on the identity document.
last_name
string
required Last name as on the identity document.
birth_date
string · date
required Date of birth (YYYY-MM-DD); the player must be at least 18.
country
string
required ISO 3166-1 alpha-2 country of residence.
terms_accepted
boolean
required The player confirmed being 18+ and accepted your terms.
external_id
string
Your own player id (unique per operator).
password
string
Only when players also sign in on a KinetX-hosted site; at least 8 characters with letters and digits. A random password is set otherwise.
middle_name
string
Middle name.
gender
string
Gender.
male female other
city
string
City.
address
string
Street address.
zip_code
string
Postal code.
phone
string
Phone in international format (unique per operator).
personal_id
string
National personal identification number.
document_number
string
Identity document number.
language
string
Two-letter language code (default en).
currency
string
Wallet currency, an active ISO 4217 code (default: the operator currency).
promo_code
string
Registration promo code.
affiliate_id
string
Affiliate id.
btag
string
Affiliate tracking tag.
registration_ip
string
IP address of the player at registration (used by the risk engine).
terms_version
string
Version of the terms the player accepted.
marketing.email
boolean
Consent to marketing e-mails.
marketing.sms
boolean
Consent to marketing SMS.
marketing.newsletter
boolean
Consent to the newsletter.
is_test
boolean
Test account, left out of reports.
Request
HTTP
POST /api/v1/operator/players HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Idempotency-Key: 4f6c1a2e-8b0d-4f5e-9a71-3c2d1e0f9b8a
Content-Type: application/json

{
    "username": "jane_doe",
    "email": "jane@example.com",
    "first_name": "Jane",
    "last_name": "Doe",
    "birth_date": "1990-04-12",
    "country": "MT",
    "terms_accepted": true,
    "external_id": "op-58213",
    "gender": "female",
    "city": "Valletta",
    "phone": "+35699123456",
    "document_number": "P1234567",
    "language": "en",
    "registration_ip": "203.0.113.10",
    "marketing": {
        "email": true
    }
}
Response · 201
json
{
    "data": {
        "id": 1042,
        "external_id": "op-58213",
        "username": "jane_doe",
        "email": "jane@example.com",
        "first_name": "Jane",
        "middle_name": null,
        "last_name": "Doe",
        "gender": "female",
        "birth_date": "1990-04-12",
        "country": "MT",
        "city": "Valletta",
        "address": "12 Republic Street",
        "zip_code": "VLT 1110",
        "phone": "+35699123456",
        "personal_id": null,
        "document_number": "P1234567",
        "language": "en",
        "currency": "EUR",
        "status": "active",
        "category": "new_user",
        "kyc_status": "not_started",
        "is_verified": false,
        "risk_level": "low",
        "is_test": false,
        "restrictions": {
            "can_login": true,
            "can_deposit": true,
            "can_withdraw": true,
            "can_bet": true,
            "excluded_from_bonuses": false
        },
        "self_exclusion": null,
        "marketing": {
            "email": true,
            "sms": false,
            "newsletter": false
        },
        "registration": {
            "source": "api",
            "ip": "203.0.113.10",
            "promo_code": "WELCOME100",
            "affiliate_id": "aff-204",
            "btag": null
        },
        "last_login_at": null,
        "created_at": "2026-10-15T09:30:00Z",
        "updated_at": "2026-10-15T09:30:00Z"
    }
}
GET /api/v1/operator/players/{player} Get a player

Profile, status, KYC status, restrictions and self-exclusion of a player.

Scope: players:read
Path parameters
player
integer
required KinetX player id.
Request
HTTP
GET /api/v1/operator/players/1042 HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": {
        "id": 1042,
        "external_id": "op-58213",
        "username": "jane_doe",
        "email": "jane@example.com",
        "first_name": "Jane",
        "middle_name": null,
        "last_name": "Doe",
        "gender": "female",
        "birth_date": "1990-04-12",
        "country": "MT",
        "city": "Valletta",
        "address": "12 Republic Street",
        "zip_code": "VLT 1110",
        "phone": "+35699123456",
        "personal_id": null,
        "document_number": "P1234567",
        "language": "en",
        "currency": "EUR",
        "status": "active",
        "category": "new_user",
        "kyc_status": "not_started",
        "is_verified": false,
        "risk_level": "low",
        "is_test": false,
        "restrictions": {
            "can_login": true,
            "can_deposit": true,
            "can_withdraw": true,
            "can_bet": true,
            "excluded_from_bonuses": false
        },
        "self_exclusion": null,
        "marketing": {
            "email": true,
            "sms": false,
            "newsletter": false
        },
        "registration": {
            "source": "api",
            "ip": "203.0.113.10",
            "promo_code": "WELCOME100",
            "affiliate_id": "aff-204",
            "btag": null
        },
        "last_login_at": null,
        "created_at": "2026-10-15T09:30:00Z",
        "updated_at": "2026-10-15T09:30:00Z"
    }
}
Errors
PATCH /api/v1/operator/players/{player} Update a player profile

Changes only the fields sent. Every change is written to the player audit log in the backoffice.

Scope: players:write
Path parameters
player
integer
required KinetX player id.
Body (JSON)
email
string · email
E-mail address.
first_name
string
First name.
last_name
string
Last name.
birth_date
string · date
Date of birth (18+).
country
string
ISO 3166-1 alpha-2 country.
city
string
City.
address
string
Street address.
phone
string
Phone in international format.
external_id
string
Your own player id.
language
string
Two-letter language code.
marketing.email
boolean
Consent to marketing e-mails.
Request
HTTP
PATCH /api/v1/operator/players/1042 HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Content-Type: application/json

{
    "city": "Sliema",
    "marketing": {
        "email": false
    }
}
Response · 200
json
{
    "data": {
        "id": 1042,
        "external_id": "op-58213",
        "username": "jane_doe",
        "email": "jane@example.com",
        "first_name": "Jane",
        "middle_name": null,
        "last_name": "Doe",
        "gender": "female",
        "birth_date": "1990-04-12",
        "country": "MT",
        "city": "Valletta",
        "address": "12 Republic Street",
        "zip_code": "VLT 1110",
        "phone": "+35699123456",
        "personal_id": null,
        "document_number": "P1234567",
        "language": "en",
        "currency": "EUR",
        "status": "active",
        "category": "new_user",
        "kyc_status": "not_started",
        "is_verified": false,
        "risk_level": "low",
        "is_test": false,
        "restrictions": {
            "can_login": true,
            "can_deposit": true,
            "can_withdraw": true,
            "can_bet": true,
            "excluded_from_bonuses": false
        },
        "self_exclusion": null,
        "marketing": {
            "email": true,
            "sms": false,
            "newsletter": false
        },
        "registration": {
            "source": "api",
            "ip": "203.0.113.10",
            "promo_code": "WELCOME100",
            "affiliate_id": "aff-204",
            "btag": null
        },
        "last_login_at": null,
        "created_at": "2026-10-15T09:30:00Z",
        "updated_at": "2026-10-15T09:30:00Z"
    }
}
PUT /api/v1/operator/players/{player}/status Change the account status

Activates, locks or closes the account. The reason is kept as a note on the player.

Scope: players:write
Path parameters
player
integer
required KinetX player id.
Body (JSON)
status
string
required New status.
active locked closed
reason
string
Why the status changed.
Request
HTTP
PUT /api/v1/operator/players/1042/status HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Content-Type: application/json

{
    "status": "locked",
    "reason": "Chargeback dispute"
}
Response · 200
json
{
    "data": {
        "id": 1042,
        "external_id": "op-58213",
        "username": "jane_doe",
        "email": "jane@example.com",
        "first_name": "Jane",
        "middle_name": null,
        "last_name": "Doe",
        "gender": "female",
        "birth_date": "1990-04-12",
        "country": "MT",
        "city": "Valletta",
        "address": "12 Republic Street",
        "zip_code": "VLT 1110",
        "phone": "+35699123456",
        "personal_id": null,
        "document_number": "P1234567",
        "language": "en",
        "currency": "EUR",
        "status": "active",
        "category": "new_user",
        "kyc_status": "not_started",
        "is_verified": false,
        "risk_level": "low",
        "is_test": false,
        "restrictions": {
            "can_login": true,
            "can_deposit": true,
            "can_withdraw": true,
            "can_bet": true,
            "excluded_from_bonuses": false
        },
        "self_exclusion": null,
        "marketing": {
            "email": true,
            "sms": false,
            "newsletter": false
        },
        "registration": {
            "source": "api",
            "ip": "203.0.113.10",
            "promo_code": "WELCOME100",
            "affiliate_id": "aff-204",
            "btag": null
        },
        "last_login_at": null,
        "created_at": "2026-10-15T09:30:00Z",
        "updated_at": "2026-10-15T09:30:00Z"
    }
}
POST /api/v1/operator/players/{player}/session-tokens Issue a player session token

A short-lived token your front end uses to call the player session endpoints (Authorization: Bearer). Tokens stop working when they expire or when the API key is revoked. Never expose your API secret to browsers or apps.

Scope: players:write Idempotency-Key
Path parameters
player
integer
required KinetX player id.
Body (JSON)
ttl_minutes
integer
Lifetime in minutes, 1–720 (default 30).
Request
HTTP
POST /api/v1/operator/players/1042/session-tokens HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Idempotency-Key: 4f6c1a2e-8b0d-4f5e-9a71-3c2d1e0f9b8a
Content-Type: application/json

{
    "ttl_minutes": 30
}
Response · 201
json
{
    "data": {
        "token": "kxp_eyJwIjoxMDQyLCJjIjo0LCJlIjoxNzYwNTIwNjAwfQ.N2Yz…",
        "token_type": "Bearer",
        "player_id": 1042,
        "expires_at": "2026-10-15T10:00:00Z"
    }
}

Wallet

Real and bonus balances and the transaction ledger of a player.

GET /api/v1/operator/players/{player}/wallet Get the balances

Real and bonus balances in minor units, and how much the player may still withdraw without KYC verification (null = no limit).

Scope: wallet:read
Path parameters
player
integer
required KinetX player id.
Request
HTTP
GET /api/v1/operator/players/1042/wallet HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": {
        "player_id": 1042,
        "currency": "EUR",
        "balance": 12550,
        "bonus_balance": 2000,
        "unverified_withdrawal_allowance": 50000,
        "wallets": [
            {
                "type": "real",
                "balance": 12550,
                "currency": "EUR",
                "updated_at": "2026-10-15T09:30:00Z"
            },
            {
                "type": "bonus",
                "balance": 2000,
                "currency": "EUR",
                "updated_at": "2026-10-15T09:30:00Z"
            }
        ]
    }
}
Errors
GET /api/v1/operator/players/{player}/transactions List transactions

The append-only ledger of the player, newest first. Amounts are signed: credits are positive, debits negative.

Scope: wallet:read
Path parameters
player
integer
required KinetX player id.
Query parameters
page
integer
Page number, starting at 1.
per_page
integer
Items per page, 1–100 (default 25).
type
string
Transaction type.
deposit withdrawal withdrawal_rejection correction_up correction_down bonus_correction_up bonus_correction_down bonus_conversion casino_bet casino_win casino_rollback loyalty_exchange tournament_prize chargeback
wallet
string
Wallet.
real bonus
created_from
string · date-time
Only records created at or after this moment (ISO 8601).
created_to
string · date-time
Only records created at or before this moment (ISO 8601).
Request
HTTP
GET /api/v1/operator/players/1042/transactions HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "id": 88231,
            "player_id": 1042,
            "wallet": "real",
            "type": "deposit",
            "amount": 10000,
            "balance_after": 12550,
            "currency": "EUR",
            "payment_request_id": 5120,
            "game_id": null,
            "game_round_id": null,
            "player_bonus_id": null,
            "created_at": "2026-10-15T09:30:00Z"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1,
        "last_page": 1,
        "from": 1,
        "to": 1
    },
    "links": {
        "first": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "last": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "prev": null,
        "next": null
    }
}

Payments

Record deposits collected by your own payment provider, request withdrawals and follow their status.

GET /api/v1/operator/payment-methods List payment methods

Active payment methods for your currency. Use the code as payment_method.

Scope: payments:read
Request
HTTP
GET /api/v1/operator/payment-methods HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "code": "visa-mastercard",
            "name": "Visa / Mastercard",
            "supports_deposit": true,
            "supports_withdrawal": true,
            "min_deposit": 1000,
            "max_deposit": 500000,
            "min_withdrawal": 2000,
            "max_withdrawal": 1000000,
            "currencies": [
                "EUR",
                "USD"
            ]
        }
    ]
}
GET /api/v1/operator/payments List deposits and withdrawals

Payment requests of your players, newest first.

Scope: payments:read
Query parameters
page
integer
Page number, starting at 1.
per_page
integer
Items per page, 1–100 (default 25).
player_id
integer
Only this player.
type
string
Deposit or withdrawal.
deposit withdrawal
status
string
Request status.
new allowed paid rejected cancelled
external_reference
string
Your payment reference.
created_from
string · date-time
Only records created at or after this moment (ISO 8601).
created_to
string · date-time
Only records created at or before this moment (ISO 8601).
Request
HTTP
GET /api/v1/operator/payments HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "id": 5120,
            "type": "deposit",
            "status": "paid",
            "player_id": 1042,
            "amount": 10000,
            "currency": "EUR",
            "payment_method": "visa-mastercard",
            "external_reference": "psp_tx_7781",
            "info": null,
            "reject_reason": null,
            "is_reversed": false,
            "created_at": "2026-10-15T09:30:00Z",
            "paid_at": "2026-10-15T09:30:00Z",
            "rejected_at": null,
            "cancelled_at": null,
            "updated_at": "2026-10-15T09:30:00Z"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1,
        "last_page": 1,
        "from": 1,
        "to": 1
    },
    "links": {
        "first": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "last": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "prev": null,
        "next": null
    }
}
GET /api/v1/operator/payments/{payment} Get a payment

Status of one deposit or withdrawal: new → allowed → paid, or rejected / cancelled.

Scope: payments:read
Path parameters
payment
integer
required Payment request id.
Request
HTTP
GET /api/v1/operator/payments/5121 HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": {
        "id": 5121,
        "type": "withdrawal",
        "status": "paid",
        "player_id": 1042,
        "amount": 5000,
        "currency": "EUR",
        "payment_method": "visa-mastercard",
        "external_reference": "wd_20261015_001",
        "info": "Visa **** 4242",
        "reject_reason": null,
        "is_reversed": false,
        "created_at": "2026-10-15T09:30:00Z",
        "paid_at": "2026-10-15T09:30:00Z",
        "rejected_at": null,
        "cancelled_at": null,
        "updated_at": "2026-10-15T09:30:00Z"
    }
}
Errors
POST /api/v1/operator/players/{player}/deposits Record a paid deposit

For Turnkey and API operators that collect deposits with their own payment provider: records the deposit as paid and credits the real wallet at once. Idempotent on external_reference — repeating it returns the original deposit (200); the same reference with another player or amount is refused. Deposit limits, self-exclusion and AML rules apply: if a deposit is refused, refund it on your side. Sends the deposit.paid webhook.

Scope: payments:write Idempotency-Key
Path parameters
player
integer
required KinetX player id.
Body (JSON)
amount
integer
required Amount in minor units of the player currency.
external_reference
string
required Your unique payment reference (e.g. the PSP transaction id).
payment_method
string
Payment method code.
info
string
Payment details shown to staff (e.g. masked card).
notes
string
Internal note.
Request
HTTP
POST /api/v1/operator/players/1042/deposits HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Idempotency-Key: 4f6c1a2e-8b0d-4f5e-9a71-3c2d1e0f9b8a
Content-Type: application/json

{
    "amount": 10000,
    "external_reference": "psp_tx_7781",
    "payment_method": "visa-mastercard"
}
Response · 201
json
{
    "data": {
        "id": 5120,
        "type": "deposit",
        "status": "paid",
        "player_id": 1042,
        "amount": 10000,
        "currency": "EUR",
        "payment_method": "visa-mastercard",
        "external_reference": "psp_tx_7781",
        "info": null,
        "reject_reason": null,
        "is_reversed": false,
        "created_at": "2026-10-15T09:30:00Z",
        "paid_at": "2026-10-15T09:30:00Z",
        "rejected_at": null,
        "cancelled_at": null,
        "updated_at": "2026-10-15T09:30:00Z"
    }
}
POST /api/v1/operator/players/{player}/withdrawals Request a withdrawal

Holds the amount on the real wallet and creates a withdrawal request for approval in the backoffice (four-eyes approval above your threshold). KYC thresholds, withdrawal limits and AML rules apply; running bonuses are forfeited when your settings say so. Idempotent on external_reference. Sends withdrawal.requested, then withdrawal.paid or withdrawal.rejected.

Scope: payments:write Idempotency-Key
Path parameters
player
integer
required KinetX player id.
Body (JSON)
amount
integer
required Amount in minor units of the player currency.
payment_method
string
required Payment method code.
external_reference
string
Your unique reference for this withdrawal.
info
string
Payout details (e.g. masked card, wallet address).
bank_name
string
Bank name.
notes
string
Internal note.
Request
HTTP
POST /api/v1/operator/players/1042/withdrawals HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Idempotency-Key: 4f6c1a2e-8b0d-4f5e-9a71-3c2d1e0f9b8a
Content-Type: application/json

{
    "amount": 5000,
    "payment_method": "visa-mastercard",
    "external_reference": "wd_20261015_001",
    "info": "Visa **** 4242"
}
Response · 201
json
{
    "data": {
        "id": 5121,
        "type": "withdrawal",
        "status": "new",
        "player_id": 1042,
        "amount": 5000,
        "currency": "EUR",
        "payment_method": "visa-mastercard",
        "external_reference": "wd_20261015_001",
        "info": "Visa **** 4242",
        "reject_reason": null,
        "is_reversed": false,
        "created_at": "2026-10-15T09:30:00Z",
        "paid_at": null,
        "rejected_at": null,
        "cancelled_at": null,
        "updated_at": "2026-10-15T09:30:00Z"
    }
}

Games

The game catalogue (providers, categories, RTP) and game launch URLs.

GET /api/v1/operator/games List games

Active games of active providers, by name.

Scope: games:read
Query parameters
page
integer
Page number, starting at 1.
per_page
integer
Items per page, 1–100 (default 25).
provider
string
Provider slug.
category
string
Category (see the categories endpoint).
type
string
RNG or live.
rng live
search
string
Part of the game name.
Request
HTTP
GET /api/v1/operator/games HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "id": 311,
            "external_id": "acme-book-of-gold",
            "name": "Book of Gold",
            "type": "rng",
            "category": "Slots",
            "rtp": 96.2,
            "thumbnail_url": "https://cdn.example.com/games/book-of-gold.webp",
            "is_original": false,
            "provider": {
                "id": 7,
                "slug": "acme-gaming",
                "name": "Acme Gaming"
            }
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1,
        "last_page": 1,
        "from": 1,
        "to": 1
    },
    "links": {
        "first": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "last": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "prev": null,
        "next": null
    }
}
GET /api/v1/operator/games/providers List game providers

Active providers with their number of active games.

Scope: games:read
Request
HTTP
GET /api/v1/operator/games/providers HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "id": 7,
            "slug": "acme-gaming",
            "name": "Acme Gaming",
            "games_count": 148
        }
    ]
}
GET /api/v1/operator/games/categories List game categories

Categories of the active games with their game count.

Scope: games:read
Request
HTTP
GET /api/v1/operator/games/categories HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "category": "Slots",
            "games_count": 412
        },
        {
            "category": "Live Casino",
            "games_count": 96
        }
    ]
}
GET /api/v1/operator/games/{game} Get a game

One game of the catalogue.

Scope: games:read
Path parameters
game
integer
required Game id from the catalogue.
Request
HTTP
GET /api/v1/operator/games/311 HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": {
        "id": 311,
        "external_id": "acme-book-of-gold",
        "name": "Book of Gold",
        "type": "rng",
        "category": "Slots",
        "rtp": 96.2,
        "thumbnail_url": "https://cdn.example.com/games/book-of-gold.webp",
        "is_original": false,
        "provider": {
            "id": 7,
            "slug": "acme-gaming",
            "name": "Acme Gaming"
        }
    }
}
Errors
POST /api/v1/operator/players/{player}/games/{game}/launch Launch a game

Real mode opens a 12-hour wallet session (the provider settles bets through the seamless wallet) after the responsible-gaming checks: account status, self-exclusion and session time limit. Demo mode returns the provider free-play URL. KinetX Originals have no provider URL (launch_url is null): play them with POST /player/games/{game}/play.

Scope: games:launch Idempotency-Key
Path parameters
player
integer
required KinetX player id.
game
integer
required Game id from the catalogue.
Body (JSON)
mode
string
`real` (default) opens a wallet session; `demo` returns the free-play URL.
real demo
platform
string
Device of the player.
desktop mobile web ios android
ip
string
IP address of the player.
Request
HTTP
POST /api/v1/operator/players/1042/games/311/launch HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Idempotency-Key: 4f6c1a2e-8b0d-4f5e-9a71-3c2d1e0f9b8a
Response · 201
json
{
    "data": {
        "mode": "real",
        "game_id": 311,
        "launch_url": "https://games.acme.example/launch?game=acme-book-of-gold&token=Yq3…&currency=EUR&language=en",
        "session_token": "Yq3h0W2bVd…",
        "expires_at": "2026-10-15T21:30:00Z",
        "is_original": false
    }
}

Bonuses

Your bonus catalogue, granting bonuses, redeeming promo codes and the bonuses of a player.

GET /api/v1/operator/bonuses List your bonuses

Active bonuses of your catalogue (amounts in minor units of the operator currency).

Scope: bonuses:read
Request
HTTP
GET /api/v1/operator/bonuses HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "id": 12,
            "name": "Welcome Bonus 100%",
            "description": "100% match up to €200, 35x wagering",
            "type": "wagering_bonus",
            "default_amount": 20000,
            "wagering_multiplier": 35,
            "valid_days": 30,
            "max_bet": 500,
            "max_conversion_multiplier": 10,
            "max_grants_per_player": 1,
            "is_active": true
        }
    ]
}
GET /api/v1/operator/players/{player}/bonuses List the bonuses of a player

Granted bonuses with their wagering progress, newest first.

Scope: bonuses:read
Path parameters
player
integer
required KinetX player id.
Query parameters
page
integer
Page number, starting at 1.
per_page
integer
Items per page, 1–100 (default 25).
state
string
Bonus state.
pending activated finished
Request
HTTP
GET /api/v1/operator/players/1042/bonuses HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": [
        {
            "id": 9001,
            "player_id": 1042,
            "bonus_id": 12,
            "name": "Welcome Bonus 100%",
            "type": "wagering_bonus",
            "state": "activated",
            "result": "none",
            "amount": 20000,
            "currency": "EUR",
            "wager_requirement": 700000,
            "wagered_amount": 175000,
            "wagering_progress": 25,
            "converted_amount": 0,
            "forfeited_amount": 0,
            "max_bet": 500,
            "started_at": "2026-10-15T09:30:00Z",
            "expires_at": "2026-11-14T09:30:00Z",
            "finished_at": null,
            "created_at": "2026-10-15T09:30:00Z"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1,
        "last_page": 1,
        "from": 1,
        "to": 1
    },
    "links": {
        "first": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "last": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "prev": null,
        "next": null
    }
}
Errors
POST /api/v1/operator/players/{player}/bonuses Grant a bonus

Grants a bonus of your catalogue through the bonus engine: credited at once, or queued while another bonus is being wagered; bonuses without wagering are paid out instantly. Sends bonus.granted (and bonus.completed when it finishes).

Scope: bonuses:write Idempotency-Key
Path parameters
player
integer
required KinetX player id.
Body (JSON)
bonus_id
integer
required Bonus id from your catalogue.
amount
integer
Amount in minor units of the player currency (default: the bonus default amount).
note
string
Internal note.
Request
HTTP
POST /api/v1/operator/players/1042/bonuses HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Idempotency-Key: 4f6c1a2e-8b0d-4f5e-9a71-3c2d1e0f9b8a
Content-Type: application/json

{
    "bonus_id": 12,
    "amount": 20000
}
Response · 201
json
{
    "data": {
        "id": 9001,
        "player_id": 1042,
        "bonus_id": 12,
        "name": "Welcome Bonus 100%",
        "type": "wagering_bonus",
        "state": "activated",
        "result": "none",
        "amount": 20000,
        "currency": "EUR",
        "wager_requirement": 700000,
        "wagered_amount": 175000,
        "wagering_progress": 25,
        "converted_amount": 0,
        "forfeited_amount": 0,
        "max_bet": 500,
        "started_at": "2026-10-15T09:30:00Z",
        "expires_at": "2026-11-14T09:30:00Z",
        "finished_at": null,
        "created_at": "2026-10-15T09:30:00Z"
    }
}
POST /api/v1/operator/players/{player}/promo-codes Redeem a promo code

Redeems one of your promo codes for the player and grants its bonus.

Scope: bonuses:write Idempotency-Key
Path parameters
player
integer
required KinetX player id.
Body (JSON)
code
string
required Promo code (case-insensitive).
Request
HTTP
POST /api/v1/operator/players/1042/promo-codes HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Idempotency-Key: 4f6c1a2e-8b0d-4f5e-9a71-3c2d1e0f9b8a
Content-Type: application/json

{
    "code": "SPIN50"
}
Response · 201
json
{
    "data": {
        "redemption_id": 318,
        "code": "SPIN50",
        "bonus": {
            "id": 9001,
            "player_id": 1042,
            "bonus_id": 12,
            "name": "Welcome Bonus 100%",
            "type": "wagering_bonus",
            "state": "activated",
            "result": "none",
            "amount": 20000,
            "currency": "EUR",
            "wager_requirement": 700000,
            "wagered_amount": 175000,
            "wagering_progress": 25,
            "converted_amount": 0,
            "forfeited_amount": 0,
            "max_bet": 500,
            "started_at": "2026-10-15T09:30:00Z",
            "expires_at": "2026-11-14T09:30:00Z",
            "finished_at": null,
            "created_at": "2026-10-15T09:30:00Z"
        }
    }
}

Responsible gaming

Deposit, bet, loss, balance and session limits with cooling-off periods, and self-exclusion.

GET /api/v1/operator/players/{player}/limits Get the limits

Current limits (money in minor units, max_session_minutes in minutes, null = no limit), raised or removed limits still in their cooling-off period, and the self-exclusion.

Scope: players:read
Path parameters
player
integer
required KinetX player id.
Request
HTTP
GET /api/v1/operator/players/1042/limits HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": {
        "player_id": 1042,
        "currency": "EUR",
        "limits": {
            "max_single_bet": null,
            "max_daily_bet": null,
            "max_weekly_bet": null,
            "max_monthly_bet": null,
            "casino_max_single_bet": null,
            "casino_max_daily_bet": null,
            "max_daily_loss": null,
            "max_weekly_loss": null,
            "max_monthly_loss": null,
            "max_single_deposit": null,
            "max_daily_deposit": 20000,
            "max_weekly_deposit": 100000,
            "max_monthly_deposit": null,
            "max_yearly_deposit": null,
            "max_balance": null,
            "max_session_minutes": 120
        },
        "pending_changes": [
            {
                "field": "max_weekly_deposit",
                "current_value": 100000,
                "requested_value": 200000,
                "effective_at": "2026-10-16T09:30:00Z"
            }
        ],
        "self_exclusion": null
    }
}
Errors
PUT /api/v1/operator/players/{player}/limits Set limits

Only the limits sent change. New and lower limits apply immediately; raised or removed (null) limits take effect after your cooling-off period and appear in pending_changes meanwhile. Limits: max_single_bet, max_daily_bet, max_weekly_bet, max_monthly_bet, casino_max_single_bet, casino_max_daily_bet, max_daily_loss, max_weekly_loss, max_monthly_loss, max_single_deposit, max_daily_deposit, max_weekly_deposit, max_monthly_deposit, max_yearly_deposit, max_balance, max_session_minutes.

Scope: limits:write
Path parameters
player
integer
required KinetX player id.
Body (JSON)
limits
object
required Limit name => value (minor units; minutes for max_session_minutes, 5–1440; null removes the limit).
Request
HTTP
PUT /api/v1/operator/players/1042/limits HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Content-Type: application/json

{
    "limits": {
        "max_daily_deposit": 20000,
        "max_weekly_deposit": 200000,
        "max_session_minutes": 120
    }
}
Response · 200
json
{
    "data": {
        "player_id": 1042,
        "currency": "EUR",
        "limits": {
            "max_single_bet": null,
            "max_daily_bet": null,
            "max_weekly_bet": null,
            "max_monthly_bet": null,
            "casino_max_single_bet": null,
            "casino_max_daily_bet": null,
            "max_daily_loss": null,
            "max_weekly_loss": null,
            "max_monthly_loss": null,
            "max_single_deposit": null,
            "max_daily_deposit": 20000,
            "max_weekly_deposit": 100000,
            "max_monthly_deposit": null,
            "max_yearly_deposit": null,
            "max_balance": null,
            "max_session_minutes": 120
        },
        "pending_changes": [
            {
                "field": "max_weekly_deposit",
                "current_value": 100000,
                "requested_value": 200000,
                "effective_at": "2026-10-16T09:30:00Z"
            }
        ],
        "self_exclusion": null
    },
    "meta": {
        "applied": [
            "max_daily_deposit",
            "max_session_minutes"
        ],
        "pending": [
            "max_weekly_deposit"
        ],
        "cooling_off_hours": 24
    }
}
POST /api/v1/operator/players/{player}/self-exclusion Self-exclude a player

Starts or extends a time-out or self-exclusion; it can never be shortened or lifted through the API. Self-excluded players cannot play, deposit or receive bonuses, but may withdraw their balance. Send either period or until.

Scope: limits:write Idempotency-Key
Path parameters
player
integer
required KinetX player id.
Body (JSON)
period
string
A fixed period (time-out up to 30 days, self-exclusion from 3 months).
24_hours 7_days 30_days 3_months 6_months 12_months 5_years
until
string · date-time
End of the exclusion (ISO 8601), instead of period.
type
string
Overrides the type derived from the period.
self_exclusion time_out self_closure
Request
HTTP
POST /api/v1/operator/players/1042/self-exclusion HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Idempotency-Key: 4f6c1a2e-8b0d-4f5e-9a71-3c2d1e0f9b8a
Content-Type: application/json

{
    "period": "6_months"
}
Response · 201
json
{
    "data": {
        "player_id": 1042,
        "currency": "EUR",
        "limits": {
            "max_single_bet": null,
            "max_daily_bet": null,
            "max_weekly_bet": null,
            "max_monthly_bet": null,
            "casino_max_single_bet": null,
            "casino_max_daily_bet": null,
            "max_daily_loss": null,
            "max_weekly_loss": null,
            "max_monthly_loss": null,
            "max_single_deposit": null,
            "max_daily_deposit": 20000,
            "max_weekly_deposit": 100000,
            "max_monthly_deposit": null,
            "max_yearly_deposit": null,
            "max_balance": null,
            "max_session_minutes": 120
        },
        "pending_changes": [
            {
                "field": "max_weekly_deposit",
                "current_value": 100000,
                "requested_value": 200000,
                "effective_at": "2026-10-16T09:30:00Z"
            }
        ],
        "self_exclusion": {
            "type": "self_exclusion",
            "since": "2026-10-15T09:30:00Z",
            "until": "2027-04-15T09:30:00Z"
        }
    }
}

Reports

GGR and payment summaries for a date range.

GET /api/v1/operator/reports/ggr GGR summary

Casino bets, wins and GGR (total, per game type and per provider), bonus conversions, net gaming revenue, deposits and withdrawals, and registrations for a UTC date range, in your currency (minor units) — the same figures as the backoffice dashboard. Provider rows include bonus-money bets (bonus_bets). At most 366 days.

Scope: reports:read
Query parameters
from
string · date
required First day (YYYY-MM-DD, UTC).
to
string · date
required Last day (YYYY-MM-DD, UTC), inclusive.
include_test_players
boolean
Include test accounts (default false).
Request
HTTP
GET /api/v1/operator/reports/ggr?from=2026-10-01&to=2026-10-14 HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
X-Api-Key: kx_live_7f3k2m9q4w8e1r6t5y0u3i2o9p8a7s6d
X-Timestamp: 1760520600
X-Signature: 5b0c7d6e9f…  (hex HMAC-SHA256)
Response · 200
json
{
    "data": {
        "from": "2026-10-01",
        "to": "2026-10-14",
        "currency": "EUR",
        "include_test_players": false,
        "casino": {
            "bets": 18450000,
            "wins": 17312000,
            "ggr": 1138000,
            "rounds": 412882,
            "players": 1840,
            "by_type": {
                "rng": {
                    "bets": 15120000,
                    "wins": 14210000,
                    "ggr": 910000,
                    "rounds": 398114,
                    "players": 1702
                },
                "live": {
                    "bets": 3330000,
                    "wins": 3102000,
                    "ggr": 228000,
                    "rounds": 14768,
                    "players": 403
                }
            },
            "by_provider": [
                {
                    "provider_id": 7,
                    "provider": "Acme Gaming",
                    "bets": 9880000,
                    "wins": 9301000,
                    "ggr": 579000,
                    "bonus_bets": 412000,
                    "rounds": 233190
                }
            ]
        },
        "bonus_conversions": 214000,
        "net_gaming_revenue": 924000,
        "payments": {
            "deposits": 6120000,
            "depositing_players": 1211,
            "withdrawals": 3980000,
            "withdrawing_players": 402,
            "net_deposits": 2140000
        },
        "players": {
            "registered": 932
        }
    }
}

Player session

Endpoints your front end calls directly with a player session token (Authorization: Bearer).

GET /api/v1/player/me Get the signed-in player

Profile of the player the session token was issued for.

Authentication: Authorization: Bearer kxp_…
Request
HTTP
GET /api/v1/player/me HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
Authorization: Bearer kxp_eyJwIjoxMDQyLCJjIjo0…
Response · 200
json
{
    "data": {
        "id": 1042,
        "external_id": "op-58213",
        "username": "jane_doe",
        "email": "jane@example.com",
        "first_name": "Jane",
        "middle_name": null,
        "last_name": "Doe",
        "gender": "female",
        "birth_date": "1990-04-12",
        "country": "MT",
        "city": "Valletta",
        "address": "12 Republic Street",
        "zip_code": "VLT 1110",
        "phone": "+35699123456",
        "personal_id": null,
        "document_number": "P1234567",
        "language": "en",
        "currency": "EUR",
        "status": "active",
        "category": "new_user",
        "kyc_status": "not_started",
        "is_verified": false,
        "risk_level": "low",
        "is_test": false,
        "restrictions": {
            "can_login": true,
            "can_deposit": true,
            "can_withdraw": true,
            "can_bet": true,
            "excluded_from_bonuses": false
        },
        "self_exclusion": null,
        "marketing": {
            "email": true,
            "sms": false,
            "newsletter": false
        },
        "registration": {
            "source": "api",
            "ip": "203.0.113.10",
            "promo_code": "WELCOME100",
            "affiliate_id": "aff-204",
            "btag": null
        },
        "last_login_at": null,
        "created_at": "2026-10-15T09:30:00Z",
        "updated_at": "2026-10-15T09:30:00Z"
    }
}
GET /api/v1/player/wallet Get the player balances

Real and bonus balance of the signed-in player.

Authentication: Authorization: Bearer kxp_…
Request
HTTP
GET /api/v1/player/wallet HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
Authorization: Bearer kxp_eyJwIjoxMDQyLCJjIjo0…
Response · 200
json
{
    "data": {
        "player_id": 1042,
        "currency": "EUR",
        "balance": 12550,
        "bonus_balance": 2000
    }
}
GET /api/v1/player/transactions List the player transactions

Ledger of the signed-in player, newest first.

Authentication: Authorization: Bearer kxp_…
Query parameters
page
integer
Page number, starting at 1.
per_page
integer
Items per page, 1–100 (default 25).
Request
HTTP
GET /api/v1/player/transactions HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
Authorization: Bearer kxp_eyJwIjoxMDQyLCJjIjo0…
Response · 200
json
{
    "data": [
        {
            "id": 88231,
            "player_id": 1042,
            "wallet": "real",
            "type": "deposit",
            "amount": 10000,
            "balance_after": 12550,
            "currency": "EUR",
            "payment_request_id": 5120,
            "game_id": null,
            "game_round_id": null,
            "player_bonus_id": null,
            "created_at": "2026-10-15T09:30:00Z"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1,
        "last_page": 1,
        "from": 1,
        "to": 1
    },
    "links": {
        "first": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "last": "https://kinetx.amhtechnologies.com/api/v1/operator/…?page=1",
        "prev": null,
        "next": null
    }
}
POST /api/v1/player/games/{game}/launch Launch a game for the player

Same as the operator launch endpoint, for the signed-in player (the IP defaults to the caller).

Authentication: Authorization: Bearer kxp_…
Path parameters
game
integer
required Game id from the catalogue.
Body (JSON)
mode
string
`real` (default) opens a wallet session; `demo` returns the free-play URL.
real demo
platform
string
Device of the player.
desktop mobile web ios android
ip
string
IP address of the player.
Request
HTTP
POST /api/v1/player/games/311/launch HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
Authorization: Bearer kxp_eyJwIjoxMDQyLCJjIjo0…
Response · 201
json
{
    "data": {
        "mode": "real",
        "game_id": 311,
        "launch_url": "https://games.acme.example/launch?game=acme-book-of-gold&token=Yq3…&currency=EUR&language=en",
        "session_token": "Yq3h0W2bVd…",
        "expires_at": "2026-10-15T21:30:00Z",
        "is_original": false
    }
}
POST /api/v1/player/games/{game}/play Play a KinetX Original round

Plays one real-money round of a KinetX Original (kx-slot, kx-roulette, kx-crash) through the casino wallet; bet limits, bonus rules and loss limits apply. The slot needs no params; roulette takes params.bet (red, black, even, odd, low, high … or number with params.number 0–36); crash takes params.target (cash-out multiplier 1.01–1000).

Authentication: Authorization: Bearer kxp_…
Path parameters
game
integer
required Game id from the catalogue.
Body (JSON)
stake
integer
required Stake in minor units.
params
object
Game-specific options.
Request
HTTP
POST /api/v1/player/games/311/play HTTP/1.1
Host: kinetx.amhtechnologies.com
Accept: application/json
Authorization: Bearer kxp_eyJwIjoxMDQyLCJjIjo0…
Content-Type: application/json

{
    "stake": 100
}
Response · 200
json
{
    "data": {
        "round_id": "9b1f8c3e-4a1d-4f0e-9a52-7d2c1e0b6a11",
        "stake": 100,
        "payout": 250,
        "outcome": {
            "grid": [
                [
                    "cherry",
                    "seven",
                    "bell"
                ],
                [
                    "lemon",
                    "seven",
                    "bar"
                ],
                [
                    "plum",
                    "seven",
                    "cherry"
                ]
            ],
            "line": [
                "seven",
                "seven",
                "seven"
            ],
            "multiplier": 2.5
        },
        "balance": 12700,
        "bonus_balance": 0,
        "currency": "EUR"
    }
}