API Documentation

BigBang Casino API is a B2B game aggregator that lets you integrate 45+ game providers and 6,000+ casino games — in two tiers, Standard (in-house / emulated) and Premium (Reeltrix real-money providers) — through a single REST API. Filter any catalog call with ?type=standard or ?type=premium. The exact catalog and providers your key can access depend on your plan and shop configuration — always read the live catalog from the API rather than hard-coding it.

Quick start: Sign up at /portal, grab your API key, call GET /api/v1/games to browse the catalog, then POST /api/v1/games/launch to generate a signed game URL. Pick a wallet model (managed transfer or seamless callbacks) and go live.

Authentication

Every API request requires an API key, passed in the X-API-Key header (a query/body parameter api_key is also accepted as a fallback). Generate and rotate keys from the Dashboard. All calls should be server-to-server.

# Every request must include your API key curl https://api.bigbangcasino.bet/api/v1/games \ -H "X-API-Key: YOUR_API_KEY"
HeaderValueRequired
X-API-KeyYour API key (fallback: ?api_key= query param)Required
Content-Typeapplication/jsonRequired for POST
Key typeFormatAccess
LiveOpaque token (e.g. 87UcWmlKrtVTQXte…) — no fixed prefixStandard + Premium tiers (Premium requires a funded balance)
SandboxPrefixed with ek_test_Standard providers only; Premium (Reeltrix) games are blocked

Keys can be scoped from the Dashboard: an IP allow-list, a domain lock (Origin/Referer host), per-key permission flags (can_read_games, can_launch_games, can_manage_balance, can_view_stats), and provider / game allow-and-block lists. A request that violates any of these returns 401 or 403.

Keep your key secret. Never expose it in client-side code. All API calls should be made server-to-server. The key doubles as the HMAC secret for signed launch URLs and wallet callbacks — if it is compromised, rotate it immediately from the Dashboard.

Base URL

All REST endpoints live under the /api/v1 prefix:

https://api.bigbangcasino.bet/api/v1

All requests and responses use JSON. Monetary amounts are numeric (2-decimal) values in the player's account currency. Every response is wrapped in a success envelope (see Error Handling).

Rate Limits

Each key carries a technical per-minute and per-hour request throttle (configurable per plan from the Dashboard). Billing is on GGR (a % of monthly bets−wins per provider) — not per request or per launch, so game launches are unlimited:

KeyThrottleGame launches
Sandbox (ek_test_)Per-key limitFree — 100,000 virtual balance (auto)
LivePer-plan limitUnlimited — billed on GGR
EnterpriseCustomUnlimited — custom GGR rates

When you exceed the throttle the API returns 429 Too Many Requests.

Error Handling

The API uses standard HTTP status codes. Every response carries a success boolean; errors add an error object whose code mirrors the HTTP status:

{ "success": false, "error": { "code": 401, "message": "Invalid API key" } }
StatusMeaning
200Success (201 on user creation)
400Bad request — validation failed, game/user not found, insufficient balance
401Unauthorized — missing, invalid, inactive or expired API key
403Forbidden — key lacks permission, IP/domain blocked, or Premium game on a sandbox key
404Not found — game, user or resource does not exist
429Rate limit exceeded
500Internal server error

List Games

GET /api/v1/games

Returns the game catalog visible to your key, deduplicated by name and filterable. Requires the can_read_games permission.

Query Parameters

ParamTypeDescription
categorystringOptional Filter by category title, slug/href or id (e.g. Pragmatic)
providerstringOptional Filter by provider; resolves to a category, else matches games whose name starts with it
searchstringOptional Substring match on game name
type / modestringOptional standard or premium. Each game also returns a mode field and is_premium boolean.
limitintegerOptional Results per page (default 100, max 5000)
offsetintegerOptional Row offset for pagination (default 0)

Example Request

curl "https://api.bigbangcasino.bet/api/v1/games?provider=Habanero&limit=20" \ -H "X-API-Key: YOUR_API_KEY" # Premium tier only (Reeltrix real-money providers) curl "https://api.bigbangcasino.bet/api/v1/games?type=premium&limit=20" \ -H "X-API-Key: YOUR_API_KEY"

Example Response

{ "success": true, "data": [ { "id": 4821, "name": "SGHotHotFruit", "provider": "Habanero", "category": "Habanero", "category_title": "Habanero", "thumbnail": "https://bigbangcasino.bet/frontend/Vegas/ico/Habanero/SGHotHotFruit.webp?v=1699999999", "mode": "standard", "is_premium": false, "is_demo": false } ], "pagination": { "total": 1420, "limit": 20, "offset": 0 } }

thumbnail is a fully-qualified URL (or null if no icon exists). With no category/provider/search filter, results are shuffled by a daily seed so "all games" looks mixed while pagination stays stable.

Game Detail

GET /api/v1/games/:id

Returns metadata for a single game by its numeric ID. Requires can_read_games. Returns 404 if the game does not exist for your shop, or 403 if it is not enabled for your key.

Example Response

{ "success": true, "data": { "id": 4821, "name": "SGHotHotFruit", "provider": "Habanero", "category": "Habanero", "category_title": "Habanero", "thumbnail": "https://bigbangcasino.bet/frontend/Vegas/ico/Habanero/SGHotHotFruit.webp?v=1699999999", "description": "", "is_demo": false } }

List Providers

GET /api/v1/categories

Returns the providers (categories) available to your key. Requires can_read_games. The slug is the exact value you pass to ?category= or ?provider= on GET /games. Sandbox keys never see Premium categories.

Example Response

{ "success": true, "data": [ { "id": 38, "name": "Pragmatic", "slug": "Pragmatic", "premium": false }, { "id": 39, "name": "Greentube", "slug": "Greentube", "premium": false }, { "id": 91, "name": "Pragmatic Play", "slug": "PragmaticPlay", "premium": true } ] }

Launch Game

POST /api/v1/games/launch

Generates a signed, ready-to-embed game URL for a player. Requires the can_launch_games permission. The returned game_url loads the game in an iframe; money then moves through your chosen wallet model. Note: a short alias POST /launch proxies to this same endpoint.

Request Body

FieldTypeDescription
game_idintegerRequired Numeric game ID (from GET /games)
user_tokenstringRequired for real mode. Your unique player identifier (matched against the player you created). Use "demo" or "guest" — or omit with demo:true — for demo mode.
demobooleanOptional true launches fun mode (virtual balance, no wallet)
languagestringOptional ISO 639-1 code (default en)
return_urlstringOptional URL to redirect to when the player exits
devicestringOptional Premium/Reeltrix only — desktop (default) or mobile
home_urlstringOptional Premium/Reeltrix only — lobby URL for the in-game home button

Example Request

curl -X POST "https://api.bigbangcasino.bet/api/v1/games/launch" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "game_id": 4821, "user_token": "player_42", "language": "en", "return_url": "https://your-site.com/casino" }'

Example Response (standard game)

{ "success": true, "game_url": "https://bigbangcasino.bet/api/game/Habanero/SGHotHotFruit/1481/player_42/1699999999/ab12cd…", "session_id": "9f8e7d6c5b4a…", "game_id": 4821, "game_name": "SGHotHotFruit" }

The game_url is HMAC-signed with your API key and carries the player session into the game engine. Premium (Reeltrix) launches return a game_url pointing at the aggregator plus a provider field, and no session_id.

Embedding: Load game_url in an iframe (allow="autoplay; fullscreen"). If the player does not exist yet, create them first via POST /users/create — a real-money launch for an unknown user_token returns 400 "User not found" (unless your key has a seamless user_data endpoint that auto-provisions them).

Demo Mode

Set demo: true (or user_token: "demo"). No wallet is involved — the game runs on a virtual balance. Useful for storefronts, review sites and testing.

curl -X POST "https://api.bigbangcasino.bet/api/v1/games/launch" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "game_id": 4821, "demo": true }' // Response { "success": true, "game_url": "https://bigbangcasino.bet/demo/launch/Habanero/SGHotHotFruit?currency=EUR", "demo": true, "game_id": 4821, "game_name": "SGHotHotFruit" }

Create Player

POST /api/v1/users/create

Registers a player under your account. Idempotent — creating an existing user_token returns 200 with "message": "User already exists"; a new player returns 201.

Request Body

FieldTypeDescription
user_tokenstringRequired Your unique player identifier (max 255)
usernamestringOptional Display username (defaults to user_token)
countrystringOptional ISO country code
{ "success": true, "data": { "user_token": "player_42", "username": "player_42", "balance": 0.00, "currency": "EUR" } }

Get Player

GET/api/v1/users/:user_token

Returns a player's profile and balance.

{ "success": true, "data": { "user_token": "player_42", "username": "player_42", "balance": 100.50, "currency": "EUR", "status": 1, "country": "DE" } }

Player History

GET/api/v1/users/:user_token/history

Returns a player's bet/win history. Requires can_view_stats.

Query Parameters

ParamTypeDescription
fromdatetimeOptional Include rounds on/after this time
todatetimeOptional Include rounds on/before this time
game_idstringOptional Filter by game name
limitintegerOptional Max rows (default 50, max 200)
{ "success": true, "data": [ { "id": 55012, "game": "SGHotHotFruit", "bet": 1.00, "win": 2.50, "date_time": "2026-07-21T14:03:00+00:00" } ] }

Get Balance

GET/api/v1/balance/:user_token

Returns a player's current balance (managed-wallet accounts).

{ "success": true, "data": { "user_token": "player_42", "balance": 100.50, "currency": "EUR" } }

Deposit

POST/api/v1/balance/deposit

Credits a managed-wallet player's balance. Requires can_manage_balance. Use a unique transaction_id for idempotency/audit.

Request Body

FieldTypeDescription
user_tokenstringRequired
amountnumberRequired ≥ 0.01
transaction_idstringRequired Your unique reference
{ "success": true, "data": { "user_token": "player_42", "balance_before": 100.50, "balance_after": 150.50, "amount": 50.00, "transaction_id": "txn_abc123" } }

Withdraw

POST/api/v1/balance/withdraw

Debits a managed-wallet player's balance. Requires can_manage_balance. Returns 400 "Insufficient balance" if the amount exceeds the balance. Same request body and response shape as deposit (balance_before / balance_after / amount / transaction_id).

Seamless Wallet (Callbacks)

BigBang supports two wallet models, chosen by how your API key is configured in the Dashboard:

  • Managed / transfer wallet (default) — the balance lives with us. You pre-fund it with POST /balance/deposit and reclaim it with POST /balance/withdraw. No callback endpoints to build.
  • Seamless wallet — the balance stays authoritative on your side. You register two callback URLs on your key (user_data and balance_change); BigBang calls them during gameplay to read the balance and apply each bet/win in real time.
Money flow (seamless): Game engine → BigBang → your user_data URL (read balance) and balance_change URL (apply bet/win). Configure both URLs on your API key from the Dashboard; they are not passed per launch.

Signature

Every seamless callback carries a signature field. It is an HMAC-SHA256 hex digest, keyed with your API key, over the concatenated payload fields (not the raw body):

const crypto = require('crypto'); // balance_change signature = HMAC_SHA256(username + amount + game + game_category + transaction_id, API_KEY) function sign(p, apiKey) { const base = p.username + p.amount + p.game + p.game_category + p.transaction_id; return crypto.createHmac('sha256', apiKey).update(base).digest('hex'); }

user_data — balance read

Called (HTTP GET) when a session needs the player's balance/identity. Return the current balance.

// Request from BigBang → your user_data URL GET https://your-site.com/wallet/user?username=player_42 // Your response — any of these balance keys is accepted (top-level or under "data") { "username": "player_42", "balance": "1250.00", "currency": "EUR" }

balance_change — bet / win

Called (HTTP POST) for every balance movement. amount is negative for a bet (debit) and positive for a win (credit). Apply it idempotently on transaction_id and return the new balance. Failed calls are retried up to 3× with exponential backoff.

// Request from BigBang → your balance_change URL { "username": "player_42", "amount": -2.50, "game": "SGHotHotFruit", "game_category": "Habanero", "transaction_id": "66a3f1b2c…", "signature": "hmac_sha256_hex…" } // Your response — return the new balance (keys: balance / new_balance / user_balance, top-level or under "data") { "status": "ok", "balance": "1247.50" }
Idempotency: If you receive a duplicate transaction_id, do not apply it again — return the same balance. Sandbox (ek_test_) callbacks include "sandbox": true; your endpoint should skip real balance changes when it is set.

API Keys

Manage keys from the Dashboard:

  • Live key — an opaque token (no fixed prefix) for production traffic.
  • Sandbox key (ek_test_…) — for development and testing; Standard providers only, free on all plans.

Rotating a key immediately invalidates the old one. The key value is also the HMAC secret used to sign launch URLs and to verify seamless-wallet callbacks — treat it as a secret.

Sandbox Mode

Use your ek_test_… key in place of the live key — same endpoints, no code changes. Sandbox serves Standard providers only; Premium (real-money Reeltrix) games return 403.

FeatureSandboxLive
API keyek_test_… prefixOpaque token
Player balanceSynthetic 100,000 (auto)Managed balance or your seamless wallet
ProvidersStandard onlyStandard + Premium
CallbacksInclude "sandbox": trueNormal callbacks
Upfront balanceNot required (free)Required for Premium
CostFreeGGR %-based (Standard low · Premium higher)

Usage & Billing

A prepaid balance is required for live (real-money) play. Fund your account from the Dashboard. Billing is on GGR — a percentage of each provider's monthly Gross Gaming Revenue (bets − wins), floored at 0 per provider — settled monthly and drawn from that prepaid balance. There is no per-request or per-launch quota; game launches are unlimited. Standard providers carry a low rate; Premium (real-money) providers a higher one. The Sandbox key (ek_test_) needs no balance and serves Standard providers only.

Webhooks

Configure a webhook URL and secret in the Dashboard to receive event notifications (separate from the money path):

  • session.started — a player opened a game (fired on standard real-money launch)
  • session.ended — a session closed or timed out
  • round.completed — a game round finished (summary)

Webhooks are signed with HMAC-SHA256 using your webhook secret.

Providers List

The aggregator carries 45+ providers. The exact set your key can launch is plan- and shop-dependent — always read the live list from GET /api/v1/categories. A representative selection:

Pragmatic — Standard
Pragmatic Play — Premium
Greentube — Standard
EGT Digital — Standard
Amusnet / EGT — Standard
Playtech — Standard
Habanero — Standard
BGaming — Standard
3 Oaks Gaming — Standard
PG Soft — Standard
Hacksaw Gaming — Standard
Nolimit City — Standard
ELK Studios — Standard
NetEnt — Standard
Push Gaming — Standard
Blueprint — Standard
Spinomenal — Standard
PenguinKing (Octoplay) — Standard
Endorphina — Standard
Merkur — Standard
Amatic — Standard
Novamatic — Standard
Fugaso — Standard
RubyPlay — Standard
Booming Games — Standard
Gamomat — Standard
Gamzix — Standard
Playson — Standard
Synot — Standard
Mascot Gaming — Standard
ELA Games — Standard
Evoplay — Standard
Inout Games — Standard
Tomhorn Gaming — Standard
PatePlay — Standard
Fazi — Standard
Platipus — Standard
Kajot — Standard
Bellink — Standard
CrashGames — Standard
Spribe — Standard
JILI — Standard
Pragmatic Live — LIVE Casino
VegasLive — LIVE Casino

Premium (Reeltrix real-money) providers require a funded live key. Standard providers run on our in-house / emulated engines. Sandbox keys (ek_test_) are limited to Standard providers.

Currencies

A player's balance is denominated in the currency of their account, set when you provision the player (default EUR). It is not passed per launch. Session currencies currently in use:

CurrencyCodeType
EuroEURFiat (default)
US DollarUSDFiat
Indian RupeeINRFiat
Coin (social / virtual)COINVirtual

Additional currencies can be enabled per account on request. Crypto (USDT, BTC and others via NOWPayments) is used to fund your prepaid billing balance — it is not a per-player session currency.

Changelog

v1.6 — Jul 2026

  • Docs corrected to match the live /api/v1 contract (paths, request/response shapes, wallet models).
  • Catalog now exceeds 6,000 titles across 45+ providers (incl. Merkur, EGT Digital, Amatic, Novamatic, JILI, PG Soft, Nolimit City, ELK, Push Gaming).
  • Documented managed (deposit/withdraw) and seamless (user_data / balance_change) wallet models.

v1.5 — May 2026

  • Added PenguinKing / Octoplay and further premium (Reeltrix) providers.
  • Standard vs Premium catalog tiers exposed via ?type=.

v1.4 — May 2026

  • Added Gamzix and Hacksaw Gaming.
  • Player & balance management endpoints (/users/*, /balance/*).

v1.1 — Mar 2026

  • Added CrashGames and Tomhorn Gaming.
  • Demo-mode launches via the demo flag.

v1.0 — Jan 2026

  • Initial release: game catalog, HMAC-signed launch URLs, seamless wallet callbacks.

Need help? Contact support@bigbangcasino.bet or reach us on Telegram.