The Validation API enables custom check-in integrations, third-party scanner apps, and automated access control systems.
Validate Ticket
json
// POST /v1/tickets/validate
// Validates a ticket without checking in
Request:
{
"ticket_id": "TKT-ABC123-XYZ",
"event_id": "evt_abc123" // Optional, for faster lookup
}
Response (200 OK):
{
"valid": true,
"ticket": {
"id": "TKT-ABC123-XYZ",
"type": "General Admission",
"attendee_name": "Jane Doe",
"checked_in": false,
"checked_in_at": null
}
}
Response (400 Bad Request):
{
"valid": false,
"error": "ALREADY_CHECKED_IN",
"checked_in_at": "2025-07-15T09:15:00Z"
}Check-In Ticket
json
// POST /v1/tickets/checkin
// Validates AND marks ticket as checked in
Request:
{
"ticket_id": "TKT-ABC123-XYZ",
"scanner_id": "entrance_main", // Optional: tracking
"location": { // Optional: GPS
"lat": 34.8697,
"lng": -111.7610
}
}
Response (200 OK):
{
"success": true,
"ticket": {
"id": "TKT-ABC123-XYZ",
"type": "General Admission",
"attendee_name": "Jane Doe",
"checked_in": true,
"checked_in_at": "2025-07-15T09:30:00Z"
}
}API request tester
Interactive component coming soon
Error Codes
INVALID_TICKET
Ticket ID not found
HTTP: 404
ALREADY_CHECKED_IN
Ticket was already scanned
HTTP: 400
Includes: checked_in_at timestamp
WRONG_EVENT
Ticket belongs to different event
HTTP: 400
TICKET_CANCELLED
Ticket was refunded/cancelled
HTTP: 400
EVENT_NOT_STARTED
Check-in not open yet
HTTP: 400
Webhook Events
ticket.checked_in
Fires: When ticket is scanned
Data: ticket_id, attendee, timestamp, scanner_id
ticket.check_in_reverted
Fires: When check-in is undone
Data: ticket_id, reverted_by, reason
Use the /validate endpoint for pre-check (e.g., before event starts) and /checkin for actual entry. This prevents accidental early check-ins.