Back to Cinema Partner Portal
Cinema POS Integration Guide

CinePass Box-Office POS Live Sync API

How theaters synchronize their central Point-of-Sale (Vista ERP, RTS, Qube, offline counter) with CinePass in real-time to guarantee Zero Double Bookings across all channels.

Sub-10ms Webhook

Whenever a ticket is sold on any offline or online counter, CinePass updates active seat maps instantly.

Two-Way Lock Protocol

When a CinePass user selects a seat, it locks on your central POS for 8 minutes to prevent race conditions.

Universal POS Support

Compatible with Vista Cinema ERP, TicketNew RTS, Qube Wire, and Custom Cinema Counter Software.

POST/api/pos/webhook/seat-sync
Inbound Webhook (Cinema $\rightarrow$ CinePass)

Your Cinema POS calls this endpoint immediately whenever a seat is sold, held, or released on another channel (Counter window, BMS, Paytm, etc.).

Request Body Parameters

FieldTypeDescription
theaterIdstringUnique cinema theater identifier
showIdstringIdentifier of the showtime
seatIdsstring[]Array of seat labels, e.g. ["A1", "A2", "H07"]
actionenumBOOKED (permanent sale) | LOCKED (temporary hold) | RELEASED (unlocked)
sourcestringOrigin, e.g. "COUNTER_WINDOW", "VISTA_ERP"
cURL Request Example
curl -X POST http://127.0.0.1:4000/api/pos/webhook/seat-sync \
  -H "Content-Type: application/json" \
  -H "x-api-key: your-theater-pos-api-key" \
  -d '{
    "theaterId": "th-101",
    "showId": "show-101",
    "seatIds": ["A1", "A2"],
    "action": "BOOKED",
    "source": "VISTA_ERP"
  }'
Node.js Box-Office Integration Code
// Node.js / JavaScript Example for Cinema Box Office Server
const axios = require('axios');

async function syncSoldSeats(showId, seatIds, source = 'COUNTER_WINDOW') {
  try {
    const res = await axios.post('http://127.0.0.1:4000/api/pos/webhook/seat-sync', {
      theaterId: 'th-101',
      showId: showId,
      seatIds: seatIds,
      action: 'BOOKED',
      source: source // 'COUNTER_WINDOW' | 'BOOKMYSHOW' | 'VISTA_ERP'
    }, {
      headers: {
        'Content-Type': 'application/json',
        'x-api-key': 'your-theater-pos-api-key'
      }
    });

    console.log('✓ CinePass Sync Successful:', res.data.message);
  } catch (err) {
    console.error('Sync failed:', err.response?.data || err.message);
  }
}

// Call whenever ticket is printed at cinema counter
syncSoldSeats('show-101', ['H07', 'H08']);
GET/api/pos/shows/:showId/live-inventory
Outbound Query (Instant Seat Status)

Returns current seat occupancy, booked seat counts, held seats, and occupancy percentages in real-time.

// Response: 200 OK
{
  "success": true,
  "showId": "show-101",
  "totalSeats": 112,
  "availableCount": 98,
  "bookedCount": 12,
  "lockedCount": 2,
  "occupancyPercent": 10.7
}

Want to test live in your browser?

Open the seat map and click "Simulate BMS / Counter Sale" to see this API in action.

Open Live Seat Map