1CLAWGAME STUDIO

FOR OPERATORS / API V1

A simple path
to play.

Launch a game. Follow a round. Grant free spins.
One focused integration, backed by a seamless wallet.

01 / Two sides of one integration

Your backend calls the 1CLAW Operator API using its own server-only API key. The game communicates with our game gateway using a player session. Our server calls your wallet to authenticate players and apply debits and credits.

The API key and wallet signing secret are separate credentials. Keep both on your server.

02 / Operator endpoints

Base URL: https://api.1claw.bet/operator/v1. Send Authorization: Bearer YOUR_OPERATOR_API_KEY and JSON. Each key is bound to one operator, wallet and allowed game catalogue.

GET /games

List the games available to your integration.

POST /launches

Create a game URL. A session key comes from your wallet and must identify the player when we call /authenticate.

{
  "game": "3-mummy-piggies",
  "sessionKey": "your-short-lived-player-key",
  "language": "en",
  "device": "mobile"
}

Response: { "url": "https://…" }. Open it in your game iframe. Use HTTPS and avoid logging the URL: it contains the player's launch key.

GET /players/{playerId}/rounds?limit=10

Completed rounds, newest first, across your allowed games. playerId is your native wallet player ID. Optional game filter and opaque cursor pagination; maximum 100 rounds per page.

{
  "data": [{
    "roundId": "a-round-uuid", "time": "2026-10-30T12:00:00.000Z",
    "game": "3-mummy-piggies", "currency": "usd",
    "bet": "1.00", "win": "0.00"
  }],
  "nextCursor": null
}

Money is returned as decimal strings in wallet currency. Zero-win rounds are included. Get one settled round with GET /players/{playerId}/rounds/{roundId}. Unsettled rounds are excluded.

POST /free-spins

Grant promotional fixed-bet spins to a player who has launched at least once. The bet must be supported by the game, and the currency must match the player's wallet.

{
  "reference": "welcome-2026-player-42",
  "playerId": "player-42",
  "game": "3-mummy-piggies",
  "count": 10,
  "bet": "0.20",
  "currency": "USD",
  "expiresAt": "2026-11-30T23:59:59Z"
}

Your reference is the idempotency key. Repeating identical parameters returns the same grant; changing parameters returns 409 REFERENCE_CONFLICT. A reference is scoped to your wallet and operator and must never be reused. Only one active or settling grant per player and game is allowed; a second returns 409 ACTIVE_GRANT_CONFLICT.

Poll GET /free-spins/{reference} for used, remaining, pending, win and status. Grant progress is current, so an identical creation retry can show updated counters. A grant covers normal spins at its exact bet; it is distinct from a game-triggered bonus. The client must present the promotional offer and remaining spins before this feature is enabled for players.

Expiry stops new promotional withdrawals; in-progress rounds can still settle. States: active, settling, completed, expired.

03 / Four wallet callbacks

You expose these endpoints under your agreed wallet URL. Every request carries X-Server-Authorization: a hexadecimal HMAC-SHA256 of the exact JSON request body, signed with your wallet secret. Validate the signature before parsing or processing. Player-scoped calls also carry Authorization: Bearer PLAYER_TOKEN.

POST /authenticate

Receive the launch key. Return your nativeId, a player token, lowercase currency, and numeric balance.

POST /balance

Return the player's current numeric balance.

PUT /transaction

Use transactionId for durable idempotency. type: withdraw debits the wager; type: deposit credits the win, including zero. Preserve roundId, roundFinished and campaign metadata. For campaignType: freeBets, record the withdrawal but do not debit cash; credit its wins normally. A cancellation of such a promotional withdrawal must not refund cash. Return the resulting numeric balance. Native wallet callbacks use JSON numbers; use fixed decimal arithmetic in your ledger.

DELETE /cancel

Reverse a withdrawal by transactionId, exactly once, and return numeric balance. Record cancellation tombstones so a late original withdrawal cannot debit again.

Retries must never debit or credit twice. Persist transaction results, including zero-value and rejected operations. Credit retries may arrive after the original player session expires. Settlement must remain available for existing rounds.

04 / Predictable errors

{ "error": { "code": "INVALID_REQUEST", "message": "Check request fields" } }

Operator API: 400 invalid input, 401 invalid API key, 404 unavailable game/player/grant/round, 409 reference conflict, 429 rate limit, 503 temporary failure. Retry temporary failures with backoff; retain the same free-spin reference and body.

Wallet callback errors use the native codes PLAYER_UNAUTHORIZED, SERVER_UNAUTHORIZED, SESSION_EXPIRED, INSUFFICIENT_FUNDS, TRANSACTION_FAILED, TRANSACTION_NOT_FOUND or UNKNOWN.

Download OpenAPI ↓

Version 1.0 · Integration preview · Environment URLs and credentials are shared securely during onboarding.