Skip to main content
The Seamless Wallet API lets PlayStarters use your existing player balances as the source of truth during gameplay. You expose a single POST endpoint that handles all operation types, identified by the type field in the request body.

Endpoint contract

PropertyValue
URLProvided by you (e.g. https://api.yoursite.com/wallet-callback).
HTTP methodAlways POST.
AuthenticationAuthorization: Bearer <your_wallet_key> (agreed during setup).
Request bodyJSON, with type indicating the operation.
Successful responseHTTP 200 OK with the updated balance: { "balance": 100.50 }.

Supported operation types

typeDescriptionReference
BALANCERead the current balance for a player.Balance Read
BETDeduct the bet amount from the player’s balance.Transactions
WINCredit the win amount to the player’s balance.Transactions
VOIDRefund a previously placed bet (round cancelled).Transactions

Common request fields

Every call from PlayStarters to your endpoint includes the following fields:
player_id
string
Your unique identifier for the player (the same value you passed as playerId to POST /operator/launch).
type
string
Operation type. One of BALANCE, BET, WIN, VOID.
amount
number
Transaction amount in the player’s currency. 0 for BALANCE operations.
currency
string
ISO 4217 currency code (e.g. EUR).
request_id
string
Unique identifier for this request. Use it for idempotency.
game_id
string
UUID of the game the transaction belongs to. Empty string for BALANCE.
parent_transaction_id
string
Present only on WIN and VOID. Correlates the transaction with the original BET’s request_id.

Successful response

Always return HTTP 200 OK with the player’s updated balance:
{ "balance": 100.50 }

Error response

The only error response PlayStarters expects is insufficient funds on a BET. See Transactions for the exact format.
Always verify the Authorization header on every incoming request. Never trust the body fields without authenticating the caller first.