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.
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
| Field | Type | Description |
|---|---|---|
| theaterId | string | Unique cinema theater identifier |
| showId | string | Identifier of the showtime |
| seatIds | string[] | Array of seat labels, e.g. ["A1", "A2", "H07"] |
| action | enum | BOOKED (permanent sale) | LOCKED (temporary hold) | RELEASED (unlocked) |
| source | string | Origin, e.g. "COUNTER_WINDOW", "VISTA_ERP" |
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 / 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']);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.