Eventlayer / Ticketing API

Tickets with a lifecycle,
not just a database row.

Issue, assign, cancel and check in tickets through one API. Eventlayer keeps the ticket lifecycle consistent as your product changes it.

Ticket lifecycle

One source of truth for access.

Assignment, admission and access removal all change the same ticket. Try a transition to see which operations are allowed.

Ticket lifecycle · interactive illustration

available
assign
assigned
check in
checked in

From any existing ticket
↓ remove access

Cancelled / deleted

A registered Wallet device keeps a cancelled record so the pass can be invalidated. Otherwise, the ticket is deleted.

Select an operation to explore the ticket lifecycle.

Show the API

Create inventory now. Assign it later. Or do both at once.

Use the event and attendee from your registration flow. Both paths reach the same assigned ticket; keep each returned ID so your backend can resume if a later call fails.

Explore the ticket API

TypeScript · server-side excerpt

const { data: ticket, error } = await eventlayer.tickets.create({
  eventId: event.id,
  attendeeId: attendee.id,
});
if (error) throw error;

console.log(ticket.status); // "assigned"

ticket.status → "assigned"

Build your ticket flow

Model the access your product sells.

General Admission, VIP and Staff are separate ticket types under the same event. Choose the type when issuing a ticket.

ticket_type / tt_ga

General Admission

Default access

ticket_type / tt_vip

VIP

Premium access

ticket_type / tt_staff

Staff

Team access

Example types. An event starts with General Admission; create the other types your product needs. Your app decides which types each door accepts.

Your product. Eventlayer underneath.

Build your ticket flow on Eventlayer.

Build your registration and checkout experience, with ticket state handled underneath.

Start building

Free during private beta. No credit card.