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.
List the games available to your integration.
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.
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.
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.
Receive the launch key. Return your nativeId, a player token, lowercase currency, and numeric
balance.
Return the player's current numeric balance.
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.
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.
Version 1.0 · Integration preview · Environment URLs and credentials are shared securely during onboarding.