Eventlayer / Understand the model
Ticket Types
Define categories of tickets for your events.
Ticket types represent categories of tickets for an event, such as "General Admission", "VIP", or "Early Bird". Every ticket must belong to a ticket type.
A default "General Admission" ticket type is automatically created for every new event. You can disable this by setting disableDefaultTicketType: true when creating the event.
Why ticket types?
Ticket types let you define different tiers of access for an event. Rather than treating every ticket the same, you can differentiate between seating areas, experience levels, or pricing tiers.
The key feature is status control: setting a ticket type to inactive prevents check-in for all tickets of that type. This is useful for pausing check-in for a tier (e.g. closing VIP entry while general admission remains open) without modifying individual tickets.
Recommended workflow
Open the event in the dashboard, select Ticket Types, and configure the tiers an organizer needs. This is the normal setup path because you can review the types alongside the event, tickets, and Wallet assignments.
Use the Ticket Types API when tiers are synchronized from another platform or created dynamically by your product.

How ticket types work
Each ticket type belongs to an event and has a name, description, and status:
active— Tickets of this type can be created, assigned, and checked in.inactive— Existing assigned tickets remain assigned, but check-in is blocked.
Deleting a ticket type permanently removes all tickets of that type. Use deactivation instead if you want to block check-in without deleting tickets.
Automating ticket types with the API
A "General Admission" ticket type is created by default when you create an event. You can list it like any other ticket type:
eventlayer.ticketTypes.list({ eventId: "ev_123" }); // items[0] is the default "General
Admission" ticket type ```
</Tab>
</Tabs>
You can also create additional ticket types, or disable the automatic creation by setting `disableDefaultTicketType: true` when creating the event.
<Tabs items={["TypeScript SDK"]}>
<Tab value="TypeScript SDK">
```ts
// Create an additional ticket type
const { data: ticketType, error: ticketTypeError } =
await eventlayer.ticketTypes.create({
eventId: "ev_123",
name: "VIP",
description: "Priority seating and backstage access.",
});
if (ticketTypeError) throw ticketTypeError;
// Deactivate to block check-in
await eventlayer.ticketTypes.update({
ticketTypeId: ticketType.id,
status: "inactive",
});Creating tickets
When creating a ticket, ticketTypeId is optional. If the event has only one ticket type, it will be used automatically. If the event has multiple ticket types, ticketTypeId is required.
// ticketTypeId is optional when there's only one ticket type
const { data: ticket, error: ticketError } = await eventlayer.tickets.create({
eventId: "ev_123",
attendeeId: "atd_35d400aab1a52a2f",
});
if (ticketError) throw ticketError;See the Ticket Types API Reference for full request and response schemas.