Working With Ticket Classes and Ticket Groups
A Ticket Class is a ticket type. Usually, multiple different types of tickets for an Event are available. There are three Eventbrite Ticket Classes:
- Free. No cost or currency. An Event with only free Ticket Classes is a free Event and doesn't require payout information.
- Paid. Ticket Classes with an associated cost in the Event's currency. Currency is specified in the Event object and is duplicated in the Ticket Class object as the return value of a currency type.
- Donation. Order owner is prompted to enter at their own discretion an amount to donate during checkout. There is no fixed cost of donation.
Ticket Class price can be communicated in a way that either includes fees and taxes in the total displayed price or shows these costs split out from the base ticket price. The User determines how costs are communicated.
Ticket Classes can be grouped using the Ticket Group object, most commonly to apply a Discount to multiple Ticket Classes.
For information on creating a Ticket Class, refer to Creating Events.
Authenticating Your Access to the Eventbrite API
To work with Ticket Classes and Ticket Groups, you must authenticate your access to the Eventbrite API. To learn how, refer to Authenticating Your Access.
Getting Information on an Event's Ticket Class
If you want information on an Event's Ticket Classes, use the expansion
expand=ticket_classes
parameter by appending it to the GET request URL.
GET https://www.eventbriteapi.com/v3/events/EVENT_ID/?expand=ticket_classes
Creating Ticket Classes in Tiered Events
Tiered Events are events which use Eventbrite’s new inventory management system, which allows the creation of inventory tiers (“tiers”). You can think of the tiers as an intermediate layer between event-level capacity enforcement and ticket-level capacity.
Tiered Event example:
Name | Object Type |
---|---|
Sunset Fest | Event |
General Admission (200 capacity) | Inventory Tier |
Presale (100 capacity) | Ticket Class |
Main Sale (not limited) | Ticket Class |
Day-of Sale (not limited) | Ticket Class |
VIP (50 capacity) | Inventory Tier |
Presale( 30 capacity) | Inventory Ticket Class |
Main Sale (not limited) | Ticket Class |
Parking (Add-on, 40 capacity) | Inventory Tier, non-admission |
Parking (not limited) | Ticket Class |
In this event, the tickets under General Admission, in total, can never exceed 200 capacity, and may go on sale at different times, have different prices, purchase restrictions, etc. For Ticket Classes which have a lower capacity than their tier (such as “Presale” or “VIP Presale”), the inventory check first confirms that there is capacity at the ticket level, then also confirms that there’s availability at the tier level. Tickets which are “not limited” will only sell up to the capacity of their tier. Most ticket classes do not have a capacity restriction.
Tiered events cannot enforce an event capacity different from the sum of their admission tier capacities. This restriction was introduced because General Admission Holds (entirely different concept) could interact badly with this restriction.
Lastly, Add-ons are tiers with the additional property of “does not count towards event capacity”. In this example “Parking” is a tier of 40 capacity, with a Ticket Class (also called Parking). Events which do not have tiers at the admission level (known in-product as “General Admission Sections”) can still have add-ons, and add-ons are tiers with at least one ticket class.
How to create Ticket Classes for Tiered Events
1. Determine if the Event is tiered
GEThttps://www.eventbriteapi.com/v3/events/EVENT_ID/?expand=basic_inventory_info
The basic_inventory_info expansion will retrieve an event’s inventory types. If the basic_inventory_info.has_admission_tiers: true, ticket classes must be created with an inventory tier. To do this, find or create an inventory tier and assign the inventory_tier_id when creating the ticket class.
2. List Inventory Tiers
GET https://www.eventbriteapi.com//v3/events/EVENT_ID/inventory_tiers/
3. Create new Inventory Tier (Optional)
POST https://www.eventbriteapi.com/v3/events/EVENT_ID/inventory_tiers/
For more information on inventory tiers, refer the Create Inventory Tiers.
Example Request Body:
{
"inventory_tier": {
"name": "VIP",
"count_against_event_capacity": true,
"quantity_total": "10"
}
}
4. Create Ticket Class with an Inventory Tier
POST https://www.eventbrite.com/api/v3/events/EVENT_ID/ticket_classes/
Example Request Body:
{
"ticket_class": {
"name": "Booth",
"free": false,
"donation": false,
"quantity_total": "",
"minimum_quantity": "1",
"maximum_quantity": "10",
"cost": "USD,2000",
"hidden": false,
"auto_hide": false,
"auto_hide_before": "",
"auto_hide_after": "",
"sales_channels": ["online","atd"],
"hide_sale_dates": false,
"delivery_methods": ["electronic"],
"inventory_tier_id": "520007",
"include_fee": false,
"sales_start": "2019-12-09T08:00:00Z",
"sales_end": "2021-02-01T03:00:00Z"
}
}
Determining Remaining (Unsold) Ticket for an Event
You can determine the remaining tickets for an Event's Ticket Class from the
information returned on that Ticket Class object. To do so, note the amount
identified in the quantity_total
and quantity_sold
fields, and then use the
equation quantity_total
- quantity_sold
= remaining tickets for this Ticket
Class.
Using the example above, the remaining tickets for the Event is 100 - 23 = 77 tickets unsold.
Using Ticket Groups
Use the Ticket Group object to group multiple Ticket Classes. This allows you to, for example, apply a Discount to multiple Ticket Classes.
To create a Ticket Group, use the POST request URL. Since Ticket Groups are created under an Organization, you must have an Organization ID to create a Ticket Group.
Note: The
event_ticket_ids
is following a specific format of"{"event_id": ["ticket_id_1", "ticket_class_id_2"]}
.
POSThttps://www.eventbriteapi.com/v3/organizations/ORGANIZATION_ID/ticket_groups/
Example Request Body:
{
"ticket_group":{
"name": "Ticket Group Example",
"status": "live",
"event_ticket_ids": "{"12345": ["14123", "123123"]}"
}
}
The following fields are required when creating a Ticket Group:
Field | Type | Description |
---|---|---|
name | string | Ticket Group name. A name containing more than 20 characters is automatically truncated. |
status | string | Ticket Group status. Can be transfer , live , deleted or archived . By default, the status is live . |
event_ticket_ids | dict | Dictionary showing the Ticket Class IDs associated with a specific Event ID. Displayed in the form "{"event_id": ["ticket_id_1", "ticket_class_id_2"]} |
Adding Ticket Classes to a Ticket Group
Once you have a Ticket Group, you add Ticket Classes to many Ticket Groups to take advantage of the group object. Use the POST request URL to add a Ticket Class to multiple Ticket Groups. You need to have the ID of the Organization to which the Ticket Group belongs, the Event ID of the Ticket Class, the ID of the Ticket Class and the IDs of the Ticket Groups.
{
"ticket_group_ids": ["11", "20"]
}