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:

NameObject Type
Sunset FestEvent
       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:

FieldTypeDescription
namestringTicket Group name. A name containing more than 20 characters is automatically truncated.
statusstringTicket Group status. Can be transfer, live, deleted or archived. By default, the status is live.
event_ticket_idsdictDictionary 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.

POSThttps://www.eventbriteapi.com/v3/organizations/ORGANIZATION_ID/events/EVENT_ID/ticket_classes/TICKET_CLASS_ID/ticket_groups/

{
    "ticket_group_ids": ["11", "20"]
}

Next steps

These are the next articles to continue with your building

Getting Information on an Event

Including an Image with Your Event Listing