Power Your Gaming Platform with a Single API
ArcadeAPI connects your betting or casino platform to a world-class game network — casino, slots, live dealer, crash, sports, and more. 17,000+ games. Transparent GGR billing. Military-grade encryption. We handle everything.
From sign-up to live in days
Three steps separate you from running a fully-featured gaming platform.
Enterprise game access was broken for most operators
Here's the problem we set out to solve — and why it matters for your platform.
You get the same world-class game catalogue, same uptime, same quality — at a fraction of the barrier to entry. Get started →
Everything your platform needs to win
Built specifically for gaming operators who resell to end-user platforms.
Integrate in under an hour
One endpoint. One AES key. Every game type on the network. Our relay API abstracts enterprise-level complexity into a single encrypted POST call.
// ─── ArcadeAPI PHP Client ────────────────────────────────────── class ArcadeApiClient { private string $endpoint = 'https://api.arcadeapi.com/api/game/v1'; private string $agencyUid; private string $aesKey; public function __construct(string $agencyUid, string $aesKey) { $this->agencyUid = $agencyUid; $this->aesKey = $aesKey; } public function getGameUrl(string $playerId, string $gameCode, string $gameType): string { $payload = json_encode([ 'agency_uid' => $this->agencyUid, 'member_account' => $playerId, 'game_code' => $gameCode, 'game_type' => $gameType, 'lang' => 'en', 'serial_number' => uniqid('arc_', true), ]); $encrypted = base64_encode(openssl_encrypt( $payload, 'AES-256-ECB', $this->aesKey, OPENSSL_RAW_DATA )); $response = \Http::post($this->endpoint, ['data' => $encrypted])->json(); if ($response['code'] !== 0) { throw new \RuntimeException('Game launch failed: ' . $response['msg']); } return $response['data']['url']; // ← embed in your iframe } } // Usage: $client = new ArcadeApiClient('YOUR_AGENCY_UID', 'YOUR_AES_KEY'); $gameUrl = $client->getGameUrl('player_123', 'JDB-SLOT-001', 'slot'); // → "https://game.arcadeapi.com/launch?token=eyJ..."
// ─── ArcadeAPI Node.js Client ───────────────────────────────── import crypto from 'crypto'; import axios from 'axios'; class ArcadeApiClient { #endpoint = 'https://api.arcadeapi.com/api/game/v1'; #agencyUid; #aesKey; constructor(agencyUid, aesKey) { this.#agencyUid = agencyUid; this.#aesKey = Buffer.from(aesKey); } async getGameUrl(playerId, gameCode, gameType) { const payload = JSON.stringify({ agency_uid: this.#agencyUid, member_account: playerId, game_code: gameCode, game_type: gameType, lang: 'en', serial_number: Date.now().toString(), }); const cipher = crypto.createCipheriv('aes-256-ecb', this.#aesKey, null); const encrypted = Buffer.concat([cipher.update(payload), cipher.final()]) .toString('base64'); const { data: res } = await axios.post(this.#endpoint, { data: encrypted }); if (res.code !== 0) throw new Error(res.msg); return res.data.url; // ← embed in your iframe } } // Usage: const client = new ArcadeApiClient('YOUR_AGENCY_UID', 'YOUR_AES_KEY'); const url = await client.getGameUrl('player_123', 'JDB-SLOT-001', 'slot'); // → "https://game.arcadeapi.com/launch?token=eyJ..."
# ─── ArcadeAPI cURL example ──────────────────────────────────── # Step 1: Encrypt your payload with AES-256-ECB + Base64 PAYLOAD='{"agency_uid":"YOUR_UID","member_account":"player_123", "game_code":"JDB-SLOT-001","game_type":"slot","lang":"en", "serial_number":"arc_1747200000"}' ENCRYPTED=$(echo -n "$PAYLOAD" | \ openssl enc -aes-256-ecb -nosalt -K $HEX_KEY | base64) # Step 2: POST to the API relay endpoint curl -s -X POST https://api.arcadeapi.com/api/game/v1 \ -H "Content-Type: application/json" \ -d "{\"data\": \"$ENCRYPTED\"}" # Step 3: Expected response { "code": 0, "msg": "success", "data": { "url": "https://game.arcadeapi.com/launch?token=eyJ...", "serial": "arc_1747200000" } }
Simple, transparent plans
One-time setup fee. GGR-based monthly billing. No hidden charges.
+ 100 USDT upgrade for Priority Provider support channel on any plan · Full pricing breakdown →