BO Player Account Management (PAM)
Player Account Management (PAM) API (1.0.0)
Download OpenAPI specification:Download
API for managing player accounts and authentication
Sign up a new player
Create a new player account with the provided credentials
Request Body schema: application/jsonrequired
| email required | string <email> |
| password required | string |
| username | string Optional username for the player |
| currency | string Default: "EUR" Base currency for the player account |
| originIp | string IP address at signup |
| seonSessionToken | string Optional SEON session token for fraud detection |
Responses
Request samples
- Payload
{- "email": "user@example.com",
- "password": "string",
- "username": "string",
- "currency": "EUR",
- "originIp": "string",
- "seonSessionToken": "string"
}Response samples
- 201
- 400
- 409
- 500
{- "accessToken": "string",
- "tokenType": "Bearer",
- "expiresIn": 86400,
- "player": {
- "id": "pub_123456789",
- "username": "player123",
- "email": "player@example.com",
- "emailVerified": true,
- "status": "active",
- "balances": [
- {
- "amount": "150.50",
- "type": "real",
- "lastUpdatedAt": "2024-01-15T10:30:00Z",
- "currency": "USD"
}, - {
- "amount": "25.00",
- "type": "bonus",
- "lastUpdatedAt": "2024-01-15T10:30:00Z",
- "currency": "USD"
}
], - "personalInfo": {
- "firstName": "John",
- "lastName": "Doe",
- "country": "US",
- "dateOfBirth": "1990-01-15",
- "isComplete": false
}, - "kycStatus": [
- {
- "type": "idcheck",
- "status": "approved",
- "validUntil": "2025-12-31T23:59:59Z",
- "allowed": true
}
], - "paymentMethods": [
- {
- "paymentMethod": {
- "gateway": "piq",
- "method": "visamc",
- "depositEnabled": true,
- "withdrawalEnabled": true,
- "settings": {
- "version": "1.0.0",
- "displayName": "Visa/Mastercard",
- "isPnP": false,
- "depositMinAmount": "10",
- "depositMaxAmount": "5000",
- "depositFeeFixed": "0.50",
- "depositFeePercent": "2.5",
- "quickDepositOptions": [
- 1000,
- 2500,
- 5000,
- 10000,
- 25000
], - "withdrawalMinAmount": "20",
- "withdrawalMaxAmount": "2000",
- "withdrawalFeeFixed": "1.00",
- "withdrawalFeePercent": "1.0",
- "attributes": {
- "encryptor": {
- "fn": "encryptData"
}
}
}
}, - "paymentAccounts": [
- {
- "paymentAccountId": "123",
- "maskedAccount": "**** **** **** 1234",
- "accountHolder": "John Doe",
- "expiryMonth": "12",
- "expiryYear": "2030"
}
]
}
]
}
}Sign in a player
Authenticate a player and receive an access token
Authorizations:
Request Body schema: application/jsonrequired
| email required | string <email> Player's email address |
| password required | string <password> Player's password |
| originIp required | string IP address at signin |
| seonSessionToken | string Optional SEON session token for fraud detection |
Responses
Request samples
- Payload
{- "email": "player@example.com",
- "password": "securePassword123",
- "originIp": "string",
- "seonSessionToken": "string"
}Response samples
- 200
- 400
- 401
- 403
- 500
{- "accessToken": "eyJhbGciOiJIUzI1NiIs...",
- "tokenType": "Bearer",
- "expiresIn": 3600,
- "player": {
- "id": "pub_123456789",
- "username": "player123",
- "email": "player@example.com",
- "emailVerified": true,
- "status": "active",
- "balances": [
- {
- "amount": "150.50",
- "type": "real",
- "lastUpdatedAt": "2024-01-15T10:30:00Z",
- "currency": "USD"
}, - {
- "amount": "25.00",
- "type": "bonus",
- "lastUpdatedAt": "2024-01-15T10:30:00Z",
- "currency": "USD"
}
], - "personalInfo": {
- "firstName": "John",
- "lastName": "Doe",
- "country": "US",
- "dateOfBirth": "1990-01-15",
- "isComplete": false
}, - "kycStatus": [
- {
- "type": "idcheck",
- "status": "approved",
- "validUntil": "2025-12-31T23:59:59Z",
- "allowed": true
}
], - "paymentMethods": [
- {
- "paymentMethod": {
- "gateway": "piq",
- "method": "visamc",
- "depositEnabled": true,
- "withdrawalEnabled": true,
- "settings": {
- "version": "1.0.0",
- "displayName": "Visa/Mastercard",
- "isPnP": false,
- "depositMinAmount": "10",
- "depositMaxAmount": "5000",
- "depositFeeFixed": "0.50",
- "depositFeePercent": "2.5",
- "quickDepositOptions": [
- 1000,
- 2500,
- 5000,
- 10000,
- 25000
], - "withdrawalMinAmount": "20",
- "withdrawalMaxAmount": "2000",
- "withdrawalFeeFixed": "1.00",
- "withdrawalFeePercent": "1.0",
- "attributes": {
- "encryptor": {
- "fn": "encryptData"
}
}
}
}, - "paymentAccounts": [
- {
- "paymentAccountId": "123",
- "maskedAccount": "**** **** **** 1234",
- "accountHolder": "John Doe",
- "expiryMonth": "12",
- "expiryYear": "2030"
}
]
}
]
}
}Sign in a player with external token
Authenticate a player using an external authentication token (e.g. BankID, Trumo) and receive an access token
Request Body schema: application/jsonrequired
| token required | string External authentication token (e.g. from BankID, Trumo, etc.) |
| seonSessionToken | string Optional SEON session token for fraud detection |
Responses
Request samples
- Payload
{- "token": "eyJhbGciOiJIUzI1NiIs...",
- "seonSessionToken": "string"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 500
{- "accessToken": "eyJhbGciOiJIUzI1NiIs...",
- "tokenType": "Bearer",
- "expiresIn": 3600,
- "player": {
- "id": "pub_123456789",
- "username": "player123",
- "email": "player@example.com",
- "emailVerified": true,
- "status": "active",
- "balances": [
- {
- "amount": "150.50",
- "type": "real",
- "lastUpdatedAt": "2024-01-15T10:30:00Z",
- "currency": "USD"
}, - {
- "amount": "25.00",
- "type": "bonus",
- "lastUpdatedAt": "2024-01-15T10:30:00Z",
- "currency": "USD"
}
], - "personalInfo": {
- "firstName": "John",
- "lastName": "Doe",
- "country": "US",
- "dateOfBirth": "1990-01-15",
- "isComplete": false
}, - "kycStatus": [
- {
- "type": "idcheck",
- "status": "approved",
- "validUntil": "2025-12-31T23:59:59Z",
- "allowed": true
}
], - "paymentMethods": [
- {
- "paymentMethod": {
- "gateway": "piq",
- "method": "visamc",
- "depositEnabled": true,
- "withdrawalEnabled": true,
- "settings": {
- "version": "1.0.0",
- "displayName": "Visa/Mastercard",
- "isPnP": false,
- "depositMinAmount": "10",
- "depositMaxAmount": "5000",
- "depositFeeFixed": "0.50",
- "depositFeePercent": "2.5",
- "quickDepositOptions": [
- 1000,
- 2500,
- 5000,
- 10000,
- 25000
], - "withdrawalMinAmount": "20",
- "withdrawalMaxAmount": "2000",
- "withdrawalFeeFixed": "1.00",
- "withdrawalFeePercent": "1.0",
- "attributes": {
- "encryptor": {
- "fn": "encryptData"
}
}
}
}, - "paymentAccounts": [
- {
- "paymentAccountId": "123",
- "maskedAccount": "**** **** **** 1234",
- "accountHolder": "John Doe",
- "expiryMonth": "12",
- "expiryYear": "2030"
}
]
}
]
}
}Get current player info
Retrieve detailed information about the currently authenticated player
Authorizations:
Responses
Response samples
- 200
- 401
- 404
- 500
{- "id": "pub_123456789",
- "username": "player123",
- "email": "player@example.com",
- "emailVerified": true,
- "status": "active",
- "balances": [
- {
- "amount": "150.50",
- "type": "real",
- "lastUpdatedAt": "2024-01-15T10:30:00Z",
- "currency": "USD"
}, - {
- "amount": "25.00",
- "type": "bonus",
- "lastUpdatedAt": "2024-01-15T10:30:00Z",
- "currency": "USD"
}
], - "personalInfo": {
- "firstName": "John",
- "lastName": "Doe",
- "country": "US",
- "dateOfBirth": "1990-01-15",
- "isComplete": false
}, - "kycStatus": [
- {
- "type": "idcheck",
- "status": "approved",
- "validUntil": "2025-12-31T23:59:59Z",
- "allowed": true
}
], - "paymentMethods": [
- {
- "paymentMethod": {
- "gateway": "piq",
- "method": "visamc",
- "depositEnabled": true,
- "withdrawalEnabled": true,
- "settings": {
- "version": "1.0.0",
- "displayName": "Visa/Mastercard",
- "isPnP": false,
- "depositMinAmount": "10",
- "depositMaxAmount": "5000",
- "depositFeeFixed": "0.50",
- "depositFeePercent": "2.5",
- "quickDepositOptions": [
- 1000,
- 2500,
- 5000,
- 10000,
- 25000
], - "withdrawalMinAmount": "20",
- "withdrawalMaxAmount": "2000",
- "withdrawalFeeFixed": "1.00",
- "withdrawalFeePercent": "1.0",
- "attributes": {
- "encryptor": {
- "fn": "encryptData"
}
}
}
}, - "paymentAccounts": [
- {
- "paymentAccountId": "123",
- "maskedAccount": "**** **** **** 1234",
- "accountHolder": "John Doe",
- "expiryMonth": "12",
- "expiryYear": "2030"
}
]
}
]
}Set primary email
Set or update the primary email address for the currently authenticated player. A verification email with a confirmation link will be sent to the provided email address. The email will only be set as primary after the user clicks the verification link.
Authorizations:
Request Body schema: application/jsonrequired
| email required | string <email> The email address to set as primary |
Responses
Request samples
- Payload
{- "email": "user@example.com"
}Response samples
- 200
- 400
- 401
- 500
{- "message": "Verification email sent successfully",
- "verificationSent": true,
- "email": "user@example.com"
}Verify email address
Verify an email address using the verification token sent to the user's email. This endpoint is called when a user clicks the verification link in their email. No authentication is required as the token itself serves as proof of email ownership.
Authorizations:
Request Body schema: application/jsonrequired
| token required | string The verification token from the email link |
Responses
Request samples
- Payload
{- "token": "abc123def456..."
}Response samples
- 200
- 400
- 500
{- "message": "Email verified successfully",
- "verified": true,
- "email": "user@example.com",
- "errorCode": "token_expired"
}Update player personal information
Update personal information for the currently authenticated player
Authorizations:
Request Body schema: application/jsonrequired
| firstName required | string [ 1 .. 50 ] characters Player's first name |
| lastName required | string [ 1 .. 50 ] characters Player's last name |
| country required | string^[A-Z]{2}$ ISO 3166-1 alpha-2 country code |
| dateOfBirth required | string <date> Player's date of birth (YYYY-MM-DD) |
Responses
Request samples
- Payload
{- "firstName": "John",
- "lastName": "Doe",
- "country": "US",
- "dateOfBirth": "1990-01-15"
}Response samples
- 200
- 400
- 401
- 404
- 500
{ }Create deposit request
Create a new deposit request for a player.
This endpoint initiates a payment deposit flow through supported payment gateways. Authentication via Bearer token in the Authorization header is optional. If authenticated, the player ID is extracted from the token. If not authenticated, the player ID must be provided in the request body.
The request can include encrypted card data for new payments or reference a previously saved payment account ID for quick deposits.
Redirect URLs (successUrl, failureUrl, pendingUrl, cancelUrl) control where the user is redirected after payment completion based on the result.
Authorizations:
Request Body schema: application/jsonrequired
| amount required | string^\d+(\.\d{1,2})?$ Payment amount as decimal string |
| currency required | string^[A-Z]{3}$ Currency code for the payment |
| paymentAccountId | string Payment account ID for previously saved deposit |
| bonusPublicId | string Optional bonus public ID to apply to the deposit |
object (EncryptedCardData) Encrypted credit card data for secure payment processing | |
object (EncryptedCardCCV) Encrypted CVV data for secure payment processing | |
| paymentMethod required | string (PaymentMethod) Enum: "visamc" "bankiban" "bankid" Payment method identifier |
| paymentGateway required | string Enum: "piq" "fpiq" "trumo" Payment gateway identifier (currently supports PaymentIQ, Fake PaymentIQ, and Trumo) |
| successUrl | string <uri> URL to redirect to after successful payment |
| failureUrl | string <uri> URL to redirect to after failed payment |
| pendingUrl | string <uri> URL to redirect to when payment is pending (overrides PIQ merchant config if provided) |
| cancelUrl | string <uri> URL to redirect to when payment is cancelled (overrides PIQ merchant config if provided) |
Responses
Request samples
- Payload
{- "amount": "100.00",
- "currency": "EUR",
- "paymentAccountId": "799",
- "bonusPublicId": "bonus_67890",
- "encryptedCardData": {
- "cardHolder": "John Doe",
- "encCreditcardNumber": "encrypted_card_data",
- "expiryMonth": "12",
- "expiryYear": "2025",
- "encCvv": "encrypted_cvv"
}, - "encryptedCardCCV": {
- "encCvv": "encrypted_cvv"
}, - "paymentMethod": "visamc",
- "paymentGateway": "piq",
}Response samples
- 200
- 400
- 401
- 500
{- "success": true,
- "redirect": {
- "method": "POST",
- "html": "<form action='https://payment-provider.com' method='POST'>...</form>",
- "parameters": {
- "merchantId": "12345",
- "signature": "xyz789"
}
}
}Get deposit status by deposit public ID
Retrieve the current status of a deposit using the deposit public ID
Authorizations:
path Parameters
| depositPublicId required | string^dep_[a-zA-Z0-9]+$ Example: dep_abc123xyz789 Deposit public ID (e.g., dep_abc123xyz789) |
Responses
Response samples
- 200
- 401
- 404
- 500
{- "publicId": "dep_abc123xyz789",
- "status": "requested",
- "amount": "100.00",
- "currency": "EUR",
- "paymentGateway": "piq",
- "paymentMethod": "visamc",
- "createdAt": "2024-01-15T10:30:00Z",
- "updatedAt": "2024-01-15T10:35:00Z",
- "providerTransactionId": "2883208724",
- "providerStatus": "TRANSFERRED"
}Get deposit form schema
Retrieve the dynamic form schema for deposit based on selected payment method (public endpoint)
Authorizations:
Request Body schema: application/jsonrequired
| paymentMethod required | string Payment method code |
| isSavedAccount | boolean Whether this is for a saved payment account |
Responses
Request samples
- Payload
{- "paymentMethod": "visamc",
- "isSavedAccount": false
}Response samples
- 200
- 400
- 500
{- "fields": [
- {
- "code": "cardHolder",
- "name": "Card Holder",
- "fieldType": "string",
- "dataType": "string",
- "required": false,
- "width": 100,
- "encryptionRequired": true,
- "hidden": false,
- "validators": [
- {
- "key": "minLength",
- "name": "minLength",
- "invalid_message": "min_length_not_met",
- "description": "Checks if input value length is greater than targetLength. In case it is less, method will return an error",
- "parameters": {
- "targetLength": 4
}
}
]
}
], - "encryptor": {
- "functionName": "encryptField"
}
}Get withdrawal form schema
Retrieve the dynamic form schema for withdrawal based on selected payment method (public endpoint)
Request Body schema: application/jsonrequired
| paymentMethod required | string Payment method code |
| isSavedAccount | boolean Whether this is for a saved payment account |
Responses
Request samples
- Payload
{- "paymentMethod": "visamc",
- "isSavedAccount": false
}Response samples
- 200
- 400
- 500
{- "fields": [
- {
- "code": "cardHolder",
- "name": "Card Holder",
- "fieldType": "string",
- "dataType": "string",
- "required": false,
- "width": 100,
- "encryptionRequired": true,
- "hidden": false,
- "validators": [
- {
- "key": "minLength",
- "name": "minLength",
- "invalid_message": "min_length_not_met",
- "description": "Checks if input value length is greater than targetLength. In case it is less, method will return an error",
- "parameters": {
- "targetLength": 4
}
}
]
}
], - "encryptor": {
- "functionName": "encryptField"
}
}Initialize withdrawal with flat request structure
Initialize a new withdrawal request with a flat request structure.
This endpoint uses a flat request structure where all payment method specific fields are at the top level and optional.
For bank transfer withdrawals (bankiban):
- New account: Provide beneficiaryName, accountNumber, and bic
- Saved account: Provide paymentAccountId
Authorizations:
Request Body schema: application/jsonrequired
| amount | string Withdrawal amount as decimal string |
| currency required | string^[A-Z]{3}$ Currency code for the withdrawal |
| paymentAccountId | string Payment account ID for previously saved payment account |
| paymentMethod required | string Payment method code |
| paymentGateway required | string Enum: "piq" "fpiq" "trumo" Payment gateway identifier |
| successUrl | string <uri> URL to redirect to after successful withdrawal |
| failureUrl | string <uri> URL to redirect to after failed withdrawal |
| pendingUrl | string <uri> URL to redirect to when withdrawal is pending |
| cancelUrl | string <uri> URL to redirect to when withdrawal is cancelled |
| beneficiaryName | string Beneficiary name (for bank transfer withdrawals) |
| accountNumber | string Bank account number or IBAN (for bank transfer withdrawals) |
| bic | string BIC/SWIFT code (for bank transfer withdrawals) |
Responses
Request samples
- Payload
{- "amount": "100.00",
- "currency": "EUR",
- "paymentAccountId": "799",
- "paymentMethod": "bankiban",
- "paymentGateway": "piq",
- "beneficiaryName": "John Doe",
- "accountNumber": "DE89370400440532013000",
- "bic": "DEUTDEFF"
}Response samples
- 200
- 400
- 401
- 402
- 500
{- "withdrawalPublicId": "w1705312200000000000",
- "playerPublicId": "player_456",
- "status": "requested",
- "amount": "100.00",
- "createdAt": "2024-01-15T10:30:00Z"
}Initialize deposit with flat request structure
Initialize a new deposit request with a flat request structure.
This endpoint is similar to /v1/deposit/request but uses a flat request structure where all payment method specific fields are at the top level and optional.
For credit card payments, provide the card details directly in the request body. For saved payment accounts, provide the paymentAccountId.
Authorizations:
Request Body schema: application/jsonrequired
| amount | string Payment amount as decimal string |
| currency required | string^[A-Z]{3}$ Currency code for the payment |
| paymentAccountId | string Payment account ID for previously saved payment account |
| bonusPublicId | string Optional bonus public ID to apply to the deposit |
| paymentMethod required | string Payment method code |
| paymentGateway required | string Enum: "piq" "fpiq" "trumo" Payment gateway identifier |
| successUrl | string <uri> URL to redirect to after successful payment |
| failureUrl | string <uri> URL to redirect to after failed payment |
| pendingUrl | string <uri> URL to redirect to when payment is pending |
| cancelUrl | string <uri> URL to redirect to when payment is cancelled |
| cardHolder | string Name of the card holder (for credit card payments) |
| encCreditcardNumber | string Encrypted credit card number (for new credit card payments) |
| expiryMonth | string = 2 characters Card expiry month in MM format (for credit card payments) |
| expiryYear | string = 2 characters ^\d{2}$ Card expiry year in YY format (for credit card payments) |
| encCvv | string Encrypted CVV code (for credit card payments) |
| accountHolder | string Account holder name (for bank transfer payments) |
| accountNumber | string Bank account number or IBAN (for bank transfer payments) |
Responses
Request samples
- Payload
{- "amount": "100.00",
- "currency": "EUR",
- "paymentAccountId": "799",
- "bonusPublicId": "bonus_67890",
- "paymentMethod": "visamc",
- "paymentGateway": "piq",
- "cardHolder": "John Doe",
- "encCreditcardNumber": "encrypted_card_data",
- "expiryMonth": "12",
- "expiryYear": "25",
- "encCvv": "encrypted_cvv_data",
- "accountHolder": "John Doe",
- "accountNumber": "DE89370400440532013000"
}Response samples
- 200
- 400
- 401
- 500
{- "success": true,
- "redirect": {
- "method": "POST",
- "html": "<form action='https://payment-provider.com' method='POST'>...</form>",
- "parameters": {
- "merchantId": "12345",
- "signature": "xyz789"
}
}
}Create withdrawal request
Create a new withdrawal request for the authenticated player
Authorizations:
Request Body schema: application/jsonrequired
| amount required | string^\d+\.\d{2}$ Withdrawal amount as decimal string (e.g., "100.00") |
| paymentMethod required | string (PaymentMethod) Enum: "visamc" "bankiban" "bankid" Payment method identifier |
| paymentAccountId | string Payment account ID to use for withdrawal (optional) |
object (BankIbanData) Bank IBAN data for withdrawals |
Responses
Request samples
- Payload
{- "amount": "100.00",
- "paymentMethod": "visamc",
- "paymentAccountId": "123",
- "bankIbanData": {
- "beneficiaryName": "John Doe",
- "iban": "DE89370400440532013000",
- "bic": "DEUTDEFF"
}
}Response samples
- 201
- 400
- 401
- 402
- 500
{- "withdrawalPublicId": "w1705312200000000000",
- "playerPublicId": "player_456",
- "status": "requested",
- "amount": "100.00",
- "createdAt": "2024-01-15T10:30:00Z"
}Get player withdrawals
Retrieve withdrawal history for the authenticated player
Authorizations:
query Parameters
| status | string Enum: "requested" "validated" "accepted" "approved" "executed" "failed" Filter by withdrawal status |
| limit | integer [ 1 .. 100 ] Default: 20 Maximum number of withdrawals to return |
| offset | integer >= 0 Default: 0 Number of withdrawals to skip |
Responses
Response samples
- 200
- 401
- 500
{- "withdrawals": [
- {
- "withdrawalPublicId": "w1705312200000000000",
- "playerPublicId": "player_456",
- "status": "requested",
- "amount": "100.00",
- "createdAt": "2024-01-15T10:30:00Z"
}
], - "total": 100,
- "limit": 20,
- "offset": 0
}Get withdrawal details
Retrieve detailed information about a specific withdrawal
Authorizations:
path Parameters
| withdrawalId required | string Withdrawal ID |
Responses
Response samples
- 200
- 401
- 404
- 500
{- "withdrawalPublicId": "w1705312200000000000",
- "playerPublicId": "player_456",
- "status": "requested",
- "amount": "100.00",
- "createdAt": "2024-01-15T10:30:00Z"
}Cancel withdrawal
Cancel a withdrawal request by ID
Authorizations:
path Parameters
| withdrawalId required | string Withdrawal ID to cancel |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
- 500
{- "withdrawalPublicId": "w1705312200000000000",
- "playerPublicId": "player_456",
- "status": "requested",
- "amount": "100.00",
- "createdAt": "2024-01-15T10:30:00Z"
}Get player deposits
Retrieve deposit history for the authenticated player
Authorizations:
query Parameters
| status | string (DepositStatus) Enum: "requested" "waiting_user_input" "funded" "failed" "refund_requested" "refunded" Example: status=requested Filter by deposit status |
| limit | integer [ 1 .. 100 ] Default: 20 Maximum number of deposits to return |
| offset | integer >= 0 Default: 0 Number of deposits to skip |
Responses
Response samples
- 200
- 401
- 500
{- "deposits": [
- {
- "externalId": "dep_1705312200000000000",
- "amount": "100.00",
- "paymentMethod": "visamc",
- "status": "requested",
- "createdAt": "2024-01-15T10:30:00Z"
}
], - "total": 100,
- "limit": 20,
- "offset": 0
}Get cashier history
Retrieve combined deposit and withdrawal history for the authenticated player with optional filters
Authorizations:
Request Body schema: application/jsonoptional
| from | string <date-time> Start date for filtering transactions (inclusive) |
| to | string <date-time> End date for filtering transactions (inclusive) |
| transactionType | string Enum: "deposit" "withdrawal" Filter by transaction type |
| limit | integer [ 1 .. 100 ] Default: 20 Maximum number of transactions to return |
| offset | integer >= 0 Default: 0 Number of transactions to skip |
Responses
Request samples
- Payload
{- "from": "2024-01-01T00:00:00Z",
- "to": "2024-12-31T23:59:59Z",
- "transactionType": "deposit",
- "limit": 20,
- "offset": 0
}Response samples
- 200
- 400
- 401
- 500
{- "transactions": [
- {
- "date": "2024-01-15T14:30:00Z",
- "publicId": "dep_xyz789abc123",
- "amount": "100.00",
- "currency": "EUR",
- "status": "completed",
- "transactionType": "deposit"
}
], - "total": 150,
- "limit": 20,
- "offset": 0
}Response samples
- 200
- 400
- 401
- 404
- 500
{- "paymentMethods": [
- {
- "gateway": "piq",
- "method": "visamc",
- "depositEnabled": true,
- "withdrawalEnabled": true,
- "settings": {
- "version": "1.0.0",
- "displayName": "Visa/Mastercard",
- "isPnP": false,
- "countriesAllowed": [
- "MT",
- "IT",
- "DE",
- "FR",
- "ES"
], - "countriesExcluded": [
- "US",
- "CA"
], - "depositMinAmount": "10",
- "depositMaxAmount": "5000",
- "depositFeeFixed": "0.50",
- "depositFeePercent": "2.5",
- "quickDepositOptions": [
- 1000,
- 2500,
- 5000,
- 10000,
- 25000
], - "withdrawalMinAmount": "20",
- "withdrawalMaxAmount": "2000",
- "withdrawalFeeFixed": "1.00",
- "withdrawalFeePercent": "1.0",
- "attributes": {
- "encryptor": {
- "fn": "encryptData"
}
}
}
}
]
}Initialize KYC verification
Initialize a KYC (Know Your Customer) verification session with Sumsub. Returns a verification URL that the player should open in their browser or webview to complete the identity verification process.
Authorizations:
Request Body schema: application/jsonoptional
| verificationType required | string Enum: "idcheck" "poa" Type of KYC verification to perform |
| successUrl | string URL to redirect to after successful KYC verification |
| failureUrl | string URL to redirect to after failed KYC verification |
Responses
Request samples
- Payload
{- "verificationType": "idcheck",
}Response samples
- 200
- 401
- 500
{- "accessToken": "sbx:abc123xyz789..."
}Get KYC verification status
Retrieve the current KYC verification status for the authenticated player. Returns an array of verification types (ID check, proof of address) with their status.
Authorizations:
Responses
Response samples
- 200
- 401
- 500
{- "verifications": [
- {
- "type": "idcheck",
- "status": "approved",
- "validUntil": "2025-12-31T23:59:59Z",
- "allowed": true
}
]
}Get pending KYC verification
Retrieve active KYC verification data from SumSub for the authenticated player. Returns verification object or null if no active verification found.
Authorizations:
Responses
Response samples
- 200
- 401
- 500
- 503
{- "id": "68f8cfe217687b136a9ea582",
- "externalUserId": "5726346",
- "createdAt": "2024-01-15T10:30:00Z",
- "reviewStatus": "onHold",
- "stage": "in_progress",
- "reviewAnswer": "GREEN",
- "reviewDate": "2019-08-24T14:15:22Z",
- "levelName": "nvp-stage-basic",
- "attemptCount": 0,
- "info": {
- "firstName": "string",
- "lastName": "string",
- "dob": "2019-08-24",
- "country": "string",
- "addresses": [
- {
- "country": "string",
- "formattedAddress": "string",
- "postCode": "string",
- "town": "string",
- "street": "string",
- "source": "proofOfAddress"
}
], - "idDocs": [
- {
- "idDocType": "ID_CARD",
- "number": "string",
- "issuedDate": "2019-08-24",
- "validUntil": "2019-08-24",
- "address": {
- "formattedAddress": "string",
- "street": "string",
- "town": "string",
- "country": "string",
- "source": "string"
}
}
]
}
}List all games
Retrieve a list of all active games available in the platform
query Parameters
| limit | integer [ 1 .. 2000 ] Default: 2000 Maximum number of games to return |
| offset | integer >= 0 Default: 0 Number of games to skip for pagination |
Responses
Response samples
- 200
- 400
- 500
{- "games": [
- {
- "gameId": "holmes_and_the_stolen_stones_megaways",
- "gateway": "st8",
- "publicId": "st8:holmes_and_the_stolen_stones_megaways",
- "name": "Holmes and the Stolen Stones Megaways",
- "provider": "Yggdrasil Gaming",
- "isWagerBonusAllowed": true,
- "wageringContribution": "100.00",
- "isActive": true,
- "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-01T00:00:00Z",
- "allowBonusPlay": true,
- "categories": [
- "slots",
- "video-slots",
- "megaways"
], - "rtp": 96.8,
- "volatility": "high",
- "minBet": "0.10",
- "maxBet": "100.00",
- "funMode": true,
- "bonusTypes": [
- "free_spins",
- "multipliers"
], - "features": [
- "autoplay",
- "freeSpins",
- "multipliers"
], - "themes": [
- "adventure",
- "egypt",
- "ancient"
], - "developer": "Yggdrasil Gaming",
- "releaseDate": "2023-01-15",
- "deprecationDate": "2025-12-31",
- "maxPayoutCoeff": "5000.00",
- "extraSettings": {
- "paylines": "117649",
- "maxWin": "20000x",
- "freeSpins": true,
- "multipliers": true,
- "autoplay": true,
- "cascadingReels": true
}
}
], - "total": 150,
- "limit": 100,
- "offset": 0
}Launch a game
Request a game launch URL for a specific player and game via ST8
Authorizations:
Request Body schema: application/jsonrequired
| gameId required | string Game public identifier in format "gateway:external_id" (e.g., "st8:holmes_and_the_stolen_stones_megaways") |
| currency required | string Currency code (ISO 4217) |
| language | string Language code (ISO 639-3). ISO 639-1 and common language names are also accepted and will be converted automatically. |
| device | string Enum: "DESKTOP" "MOBILE" "TABLET" Device type |
| returnUrl | string URL to return to after game session |
| depositUrl | string URL for cashier/deposit functionality |
Responses
Request samples
- Payload
{- "gameId": "st8:holmes_and_the_stolen_stones_megaways",
- "currency": "EUR",
- "language": "eng",
- "device": "DESKTOP",
}Response samples
- 200
- 400
- 401
- 500
{- "success": true,
- "errorMessage": "string"
}Launch a demo game
Request a demo game launch URL without authentication and traffic splitter registration
Request Body schema: application/jsonrequired
| gameId required | string Game public identifier in format "gateway:external_id" (e.g., "st8:holmes_and_the_stolen_stones_megaways") |
| language | string Language code (ISO 639-3). ISO 639-1 and common language names are also accepted and will be converted automatically. |
| returnUrl | string URL to return to after game session |
| depositUrl | string URL for cashier/deposit functionality |
Responses
Request samples
- Payload
{- "gameId": "st8:holmes_and_the_stolen_stones_megaways",
- "language": "eng",
}Response samples
- 200
- 400
- 500
{- "success": true,
- "errorMessage": "string"
}Request password reset
Send a password reset email to the specified email address
Request Body schema: application/jsonrequired
| email required | string <email> Email address to send password reset to |
Responses
Request samples
- Payload
{- "email": "player@example.com"
}Response samples
- 200
- 400
- 500
{- "message": "Password reset email sent successfully",
- "success": true
}Confirm password reset
Complete password reset with the provided token and new password
Request Body schema: application/jsonrequired
| token required | string Password reset token received via email |
| newPassword required | string <password> >= 8 characters New password for the account |
| confirmPassword required | string <password> Confirmation of the new password |
Responses
Request samples
- Payload
{- "token": "abc123def456...",
- "newPassword": "newSecurePassword123",
- "confirmPassword": "newSecurePassword123"
}Response samples
- 200
- 400
- 401
- 500
{- "message": "Password reset email sent successfully",
- "success": true
}Get player game history
Retrieve casino action history for the authenticated player from casino actions
Authorizations:
Request Body schema: application/jsonoptional
| gameCode | string Filter by specific game code |
| actionType | string Enum: "credit" "debit" "cancel" Filter by casino action type |
| from | string <date-time> Filter actions from this date (ISO 8601 format) |
| to | string <date-time> Filter actions to this date (ISO 8601 format) |
| limit | integer [ 1 .. 1000 ] Default: 100 Maximum number of actions to return |
| offset | integer >= 0 Default: 0 Number of actions to skip for pagination |
Responses
Request samples
- Payload
{- "gameCode": "slot_adventure",
- "actionType": "credit",
- "from": "2025-01-01T00:00:00Z",
- "to": "2025-01-31T23:59:59Z",
- "limit": 100,
- "offset": 0
}Response samples
- 200
- 400
- 401
- 500
{- "actions": [
- {
- "gateway": "st8",
- "externalId": "tx_abc123def456",
- "actionType": "credit",
- "gameCode": "slot_adventure",
- "gameName": "Adventure Slots",
- "roundId": "round_789xyz",
- "roundClosed": true,
- "transactionId": "tx_unique_123",
- "amount": "25.50",
- "currency": "EUR",
- "realPreviousBalance": "100.00",
- "realNewBalance": "125.50",
- "bonusPreviousBalance": "0.00",
- "bonusNewBalance": "0.00",
- "sessionId": "glt_OJxNA042JNxFhQiY",
- "gameLaunchId": 555444333,
- "createdAt": "2025-01-15T14:30:00Z"
}
], - "total": 250,
- "limit": 100,
- "offset": 0
}