WINTO Games API
v1
WINTO Games logo
THIRD-PARTY GAME PROVIDER

Integrate WINTO games with your own users & wallet.

Your application remains authoritative for user accounts, login and wallet balances. WINTO owns game rounds, accepted bets, results and settlement decisions.

Production basehttps://limilive.weeklyoff.com/game-provider/v1

Architecture

Partner AppOwn users / UI
→
Partner BackendHMAC + session
→
WINTO APIRounds / bets / result
→
Partner Wallet APIOwn DB / coins
No direct database access is required. A partner may use any schema for users, wallets and transactions. WINTO identifies a player by partner_id + external_player_id.

Quick Start

  1. Receive your Partner Code and Partner Signing Secret from WINTO.
  2. Implement the partner wallet operations on your backend and give WINTO the HTTPS wallet base URL.
  3. Create a player session with POST /sessions using HMAC authentication.
  4. Use the returned bearer session token for state, history and bet requests.
  5. Use a stable bet_id. Never create a second ID merely because an HTTP response was lost.

Supported Game IDs

77Lucky 77
beachpartyBeach Party
greedyelephantGreedy Elephant
greedylionGreedy Lion
greedyproGreedy Pro
luckyproLucky Pro
olapartydiamondOla Party Diamond
teenpattiproTeen Patti Pro
teenpattigoldTeen Patti Gold
teenpattigreenTeen Patti Green

Authentication

Partner-authenticated requests use HMAC-SHA256. Session/game requests use a provider-issued bearer token.

Required HMAC headers

HeaderValue
X-Partner-IDAssigned partner code
X-TimestampUnix timestamp in seconds; ±300 seconds accepted
X-NonceUnique random value, 16–128 chars
X-SignatureLowercase 64-character HMAC-SHA256 hex

Canonical string

METHOD
PATH
TIMESTAMP
NONCE
SHA256(BODY)

signature = hex(HMAC-SHA256(partner_signing_secret, canonical_string))

Backend only. Never embed a partner signing secret or wallet signing secret in Android, iOS, Flutter, JavaScript or other client code.

Partner Credentials

FieldProvided byPurpose
Partner codeWINTOIdentifies the integrating company/backend.
Partner signing secretWINTOPartner → WINTO HMAC signing.
Wallet base URLPartnerHTTPS URL of the partner's own wallet service.
Wallet signing secretAgreed securelyWINTO → partner wallet authentication.
Allowed source IPsPartnerPartner backend public IP address(es), when allow-listing is enabled.
POST/sessionsHMAC

User / Player Session

This is the user-data handoff. The partner keeps the full user record in its own database and sends only the game identity/profile fields WINTO needs.

FieldRequiredDescription
external_player_idYesStable player ID from the partner database.
game_idYesOne supported WINTO game ID.
display_nameNoPlayer display name.
avatar_urlNoHTTPS profile image URL.

Request

{
  "external_player_id": "USER-10001",
  "game_id": "olapartydiamond",
  "display_name": "Rahul",
  "avatar_url": "https://cdn.partner.example/users/10001.jpg"
}
Maximum provider request body: 16 KiB. The session response contains a provider session token. Treat it as sensitive and do not log it.
GET/session/meBearer

Current Session

Returns the authenticated provider session/player context. Send Authorization: Bearer <SESSION_TOKEN>.

GET/game/stateBearer

Game State

Returns the current public game/round state for the game scoped to the session. Use server-provided round and timing information rather than inventing authoritative round state client-side.

GET/game/history?limit=20Bearer

Game History

Returns recent public completed-round history for the game scoped to the session. limit is optional.

POST/game/betBearer

Place Bet

The server resolves partner/player identity from the bearer session. Do not send a client-authoritative user ID, balance, winner or payout.

{
  "round_id": 12345,
  "bet_id": "partner-order-000001",
  "bets": [
    { "target": 1, "amount": 10 }
  ]
}
Game-specific targets: the valid target set depends on the selected game. The sample target 1 is illustrative and must not be copied blindly to every game.

Amounts are integer coins. bet_id is a stable partner request identifier. Repeating the exact accepted logical request with the same ID is idempotent.

Partner Wallet API

The wallet API is hosted by the partner, not WINTO. wallet_base_url in WINTO's partner configuration points to this HTTPS service. It queries/updates the partner's own wallet tables.

WINTOresult / transaction
→
Partner Wallet APIbalance / debit / credit / refund / lookup
→
Partner DBown schema
Contract note: the operation semantics below are the required integration model. The exact production wallet URL paths, signing headers and response envelope must be confirmed during onboarding against the wallet adapter configured for that partner. Do not assume the sandbox/mock path is the production partner path.

Wallet — Balance

Partner-hosted

Returns the authoritative current wallet balance for an external player.

{
  "external_player_id": "USER-10001"
}

Wallet — Debit

Partner-hosted

Deducts a bet amount exactly once. The transaction ID must be unique and idempotent.

{
  "external_player_id": "USER-10001",
  "transaction_id": "bet-partner-order-000001",
  "amount": 100
}

Wallet — Credit

Partner-hosted

Credits a WINTO-determined payout exactly once using a stable transaction ID.

{
  "external_player_id": "USER-10001",
  "transaction_id": "win-partner-order-000001",
  "amount": 150
}

Wallet — Refund

Partner-hosted

Reverses an eligible original debit. The partner must make duplicate refund requests idempotent.

{
  "external_player_id": "USER-10001",
  "transaction_id": "refund-partner-order-000001",
  "original_transaction_id": "bet-partner-order-000001"
}

Wallet — Transaction Status

Partner-hosted

Authoritative lookup used to resolve ambiguous network outcomes. It must answer whether the stable transaction ID exists and its final state without creating a new financial operation.

An UNKNOWN debit is never blindly retried. A lost HTTP response does not prove that the debit failed.

Settlement Model

LOSE

WINTO finalizes the bet locally. No payout credit is required.

WIN

WINTO determines the payout and invokes the partner wallet credit flow.

REFUND

WINTO invokes the partner refund flow for an eligible reversal.

Native WINTO round workers are the authority for result generation. The client/partner must never submit the authoritative winner or payout.

HTTP & Error Behavior

StatusMeaning
200Successful request / health response.
201Session successfully created.
400Invalid request or validation failure.
401Invalid/missing bearer token, HMAC signature, expired timestamp or signed request mismatch.
409Conflict, including consumed HMAC nonce replay.
413Request body too large.
5xxServer/upstream failure. For financial ambiguity, reconcile by stable transaction ID; do not assume failure.

Security Requirements

  • HTTPS only; keep TLS certificate verification enabled.
  • Keep all signing secrets server-side and outside source control.
  • Synchronize backend clocks with NTP.
  • Use a cryptographically random, one-time nonce for every HMAC request.
  • Sign the exact HTTP method, path and raw body sent on the wire.
  • Never log secrets, bearer tokens or complete Authorization headers.
  • Never accept client-provided winner, payout, wallet balance or settlement status as authority.
  • Use stable transaction IDs for financial idempotency and reconciliation.

Production Go-Live Checklist

  • Partner code and signing secret exchanged securely.
  • Partner HTTPS wallet base URL configured.
  • Separate wallet authentication secret configured securely.
  • Source IP allow-list agreed where required.
  • HMAC valid, replay, expired timestamp and tamper tests passed.
  • Session creation and bearer-token handling passed.
  • State/history verified for every enabled game.
  • Stable bet IDs and duplicate-request behavior tested.
  • Balance/debit/credit/refund/transaction-status behavior tested.
  • Win, loss, refund, timeout and reconciliation tested before production.