Event ticket check-in
Door staff scan each ticket. A green screen means "let them in"; a red one says why not. Several phones can work several gates at once, because every answer comes from the same API.
How it works#
- Each ticket carries a QR code with a ticket code that your system issued.
- The staff member scans it. The app sends the code and the phone's
deviceIdto your API. - Your API marks the ticket as used and answers green, or answers red with the reason.
- The scanner reopens by itself after a moment, ready for the next person.
What your API checks#
- The ticket exists and belongs to this event and this day.
- It hasn't been used yet. If it has, say when and where: that answers the guest's question on the spot.
- Optionally, that this gate is allowed for this ticket type. Map each
deviceIdto a gate once, before doors open.
Example answers#
A valid ticket:
{ "status": "ok", "title": "Welcome", "message": "Standard ticket · Jana Nováková" }A VIP ticket, with its own colour so staff notice it:
{ "status": "ok", "title": "VIP", "message": "Wristband from the VIP desk", "backgroundColor": [120, 60, 170] }A ticket that was already used:
{ "status": "failed", "title": "Already used", "message": "Checked in at 18:42, gate B" }Settings#
Only QR codes are accepted, so a stray barcode on a phone case can't be scanned by mistake. The scanner reopens 1.5 seconds after each answer.
{ "app": "scan2check.com", "settings": { "apiUrl": "https://api.example.com/tickets/check-in", "symbols": [ "qr" ], "autoScanTimeout": 1500, "headers": { "X-API-KEY": "your-key" } }}Open in configurator — loads these settings so you can put in your own API URL and generate the QR code. Add the headers there yourself; they are left out of the link on purpose.
Watch out for#
- Two gates, one ticket. If two phones scan the same ticket at the same moment, both must not get green. Mark the ticket as used and check it in one database step.
- Guessable codes. Sequential ticket numbers can be made up. Use long random codes or signed ones.
- The network drops at the busiest moment. No answer means no check-in. Agree in advance what staff do then (for example, a printed list or a second connection).
- Timeouts. A timeout shows red, but your API may already have marked the ticket as used, so the next scan says "already used". If the same device scanned it within the last few seconds, answer green instead.