Now with WebSocket Realtime + Canvas Renderer

Multiplayer Snake & Ladder
REST API Platform

Production-ready game engine for building Snake & Ladder experiences.
Power your WhatsApp bots, Telegram bots, and web apps with our realtime API.

2,400+ ACTIVE USERS
LIVE ROOMS
99.9% UPTIME SLA
<50ms AVG LATENCY

Everything you need to build
multiplayer games

From room management to canvas rendering — a complete backend so you can focus on building your client.

🎮
Realtime Game Engine
Full Snake & Ladder logic: dice rolls, snake/ladder events, turn management, winner detection. All via REST + WebSocket.
🎨
Canvas Board Renderer
Get a rendered game board image as PNG/JPG/WEBP. Player tokens with glow effects, custom board upload support.
WebSocket Realtime
Real-time player moves, chat, and game events pushed instantly to all room participants via persistent WS connection.
🔑
API Key Management
Secure API keys with per-key rate limits, usage analytics, abuse detection, and auto-suspension for bad actors.
📊
Usage Analytics
Track requests, success/failure rates, daily/monthly usage, and per-endpoint analytics in your dashboard.
🛡️
Enterprise Security
JWT auth, bcrypt passwords, rate limiting, anti-DDOS, request sanitization, CSRF protection, and suspicious activity detection.
🗑️
Zero Persistent Storage
All game data lives in Redis only. Auto-deleted when game ends or room goes inactive. Your bot manages stats, not us.
💳
Integrated Payments
QRIS and e-wallet payments via RonzzPay. Polling-based status checks, auto invoice management, no webhooks needed.
🚀
Production Ready
PM2 cluster mode, Docker support, nginx config, BullMQ job queues, auto-cleanup crons, and Winston logging.

Drop into any bot in minutes

Baileys WhatsApp Bot

Integrate directly into your Baileys or WhiskeySockets handler:

  • ✦ Create room with one command
  • ✦ Players join via room code
  • ✦ Get board image rendered per turn
  • ✦ Auto game state management
JS — Baileys WA Bot
const axios = require('axios');

const API = axios.create({
  baseURL: 'https://api.domain.com/api/game',
  headers: { 'X-API-Key': 'UTG-yourkey' }
});

// !buat - Create new room
if (cmd === 'buat') {
  const { data } = await API.post('/create-room', {
    name: `Room ${sender}`, maxPlayers: 4
  });
  sock.sendMessage(jid, {
    text: `🎲 Room dibuat!\nKode: *${data.roomCode}*`
  });
}

// !join ABC123 - Join by code
if (cmd === 'join') {
  const { data } = await API.post('/join-room', {
    roomCode: args[0], playerName: pushName
  });
  sock.sendMessage(jid, {
    text: `✅ ${pushName} bergabung!`
  });
}

// !dadu - Roll dice
if (cmd === 'dadu') {
  const { data } = await API.post('/roll',
    { roomId: userRoom }
  );
  // Send board image
  const img = await API.get(
    `/render/${data.roomId}`,
    { responseType: 'arraybuffer' }
  );
  sock.sendMessage(jid, {
    image: Buffer.from(img.data),
    caption: `🎲 Dadu: ${data.dice}\n📍 Posisi: ${data.newPosition}`
  });
}

node-telegram-bot-api

Works with any Telegram bot library. Session stored by your bot, game state by our API.

  • ✦ Inline keyboard for game actions
  • ✦ Send board as photo message
  • ✦ Player turn notifications
  • ✦ Winner announcement
JS — Telegram Bot
const TelegramBot = require('node-telegram-bot-api');
const bot = new TelegramBot(TOKEN, { polling: true });

bot.onText(/\/dadu/, async (msg) => {
  const chatId = msg.chat.id;
  const roomId = sessions[chatId]; // your session

  const { data } = await API.post('/roll',
    { roomId }
  );

  // Get rendered board image
  const img = await API.get(
    `/render/${roomId}?format=webp`,
    { responseType: 'stream' }
  );

  await bot.sendPhoto(chatId, img.data, {
    caption: [
      `🎲 *${data.playerName}* melempar dadu: *${data.dice}*`,
      data.moveEvent === 'snake'
        ? `🐍 Kena ular! ${data.eventDetail.from} → ${data.eventDetail.to}`
        : data.moveEvent === 'ladder'
        ? `🪜 Naik tangga! ${data.eventDetail.from} → ${data.eventDetail.to}`
        : `📍 Posisi baru: ${data.newPosition}`,
      data.winner ? `🏆 *${data.winner.name} MENANG!*` : ''
    ].filter(Boolean).join('\n'),
    parse_mode: 'Markdown',
  });
});

Web App + WebSocket

Use REST API for game actions + WebSocket for realtime updates:

  • ✦ Connect WS for realtime events
  • ✦ Display live board image from /render
  • ✦ Chat with other players
  • ✦ Spectator mode support
JS — Web Frontend
// Connect to room WebSocket
const ws = new WebSocket(
  `wss://api.domain.com/ws?token=${jwt}&roomId=${roomId}`
);

ws.onmessage = ({ data }) => {
  const msg = JSON.parse(data);

  switch (msg.event) {
    case 'dice_rolled':
      updateBoard(msg.players);
      // Refresh board image
      boardImg.src = `/api/game/render/${roomId}?t=${Date.now()}`;
      showToast(`${msg.playerName} rolled ${msg.dice}`);
      break;

    case 'snake':
      playSound('snake');
      showEffect('🐍 Hit a snake!');
      break;

    case 'ladder':
      playSound('ladder');
      showEffect('🪜 Climbed a ladder!');
      break;

    case 'game_started':
      hideWaitingScreen();
      showGame();
      break;
  }
};

Simple, transparent pricing

Start free, scale as you grow. All plans include full API access.

Free
Rp0
Forever free
  • 50 requests/day
  • 1.000 requests/month
  • All game endpoints
  • Canvas renderer
  • WebSocket realtime
Get Started
Unlimited
Rp99.000
Unlimited / 30 days
  • Unlimited requests
  • No rate limit
  • Priority support
  • Custom SLA
  • All features
Go Unlimited

Ready to build something
amazing?

Join thousands of developers building multiplayer games with our API.

🎲 Create Free Account