Skip to main content
Glama

create_ticket_class

Create a new Eventbrite ticket class by defining its name, price, quantity, and sales settings for free, paid, or donation tickets.

Instructions

Create a new Ticket Class.

ENDPOINT: POST /events/{event_id}/ticket_classes/

TICKET CLASS OBJECT: The Ticket Class object represents a possible ticket class (i.e. ticket type) for an Event. Typically, multiple different types of tickets for an Event can be purchased in one transaction. These ticket types do not necessarily map directly to the one Attendee per one ticket model.

TICKET CLASS TYPES:

  • Free: Ticket Classes that have 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

  • Donation: Order owner is prompted to enter at their own discretion an amount to donate during checkout. There is no fixed cost of donation

IMPORTANT NOTES:

  • After May 7, 2020, you must provide an inventory_tier_id as part of your request for any ticket_classes you are creating or updating for a tiered event

  • Add-On creation: First create an Add-On Inventory Tier with count_against_event_capacity set to false, then provide the inventory_tier_id when creating a new Ticket Class

REQUIRED PARAMETERS:

  • event_id (string, required): Event ID

  • name (string, optional): Name of this ticket type

  • quantity_total (number, optional): Total available number of this ticket, required for non-donation and non-tiered ticket classes. For normal ticket, null or 0 is not allowed. For donation ticket, null or 0 means unlimited. For tiered inventory ticket, null or 0 means capacity is only limited by tier capacity and/or event capacity

OPTIONAL PARAMETERS:

  • cost (string, optional): Cost of the ticket (currently currency must match event currency). Format: "USD,4500" for $45.00. The value is in minor currency units (cents for USD)

  • description (string, optional): Description of the ticket

  • sorting (number, optional): Unsigned integer in the order ticket classes are sorted by

  • capacity (number, optional, nullable): Total available number of this ticket. For normal ticket, null or 0 is not allowed. For donation ticket, null or 0 means unlimited. For tiered inventory ticket, null or 0 means capacity is only limited by tier capacity and/or event capacity

  • donation (boolean, optional): Is this a donation? (user-supplied cost)

  • free (boolean, optional): Is this a free ticket?

  • include_fee (boolean, optional): Absorb the fee into the displayed cost

  • split_fee (boolean, optional): Absorb the payment fee, but show the eventbrite fee

  • hide_description (boolean, optional): Hide the ticket description on the event page

  • sales_channels (array, optional): A list of all supported sales channels (["online"], ["online", "atd"], ["atd"])

  • sales_start (datetime, optional): When the ticket is available for sale (leave empty for 'when event published')

  • sales_end (datetime, optional): When the ticket stops being on sale (leave empty for 'one hour before event start'). Cannot be set on series parent tickets

  • sales_end_relative (object, optional): Relative values used to calculate ticket sales_end. Can only be used for series parent tickets • relative_to_event (enum, required): start_time or end_time • offset (number, required): The amount of time in seconds that the ticket sales are offset before the event start or end. Nonnegative number

  • sales_start_after (string, optional): The ID of another ticket class - when it sells out, this class will go on sale

  • minimum_quantity (number, optional): Minimum number per order

  • maximum_quantity (number): Maximum number per order

  • auto_hide (boolean, optional): Hide this ticket when it is not on sale

  • auto_hide_before (datetime, optional): Override reveal date for auto-hide

  • auto_hide_after (datetime, optional): Override re-hide date for auto-hide

  • has_pdf_ticket (boolean, optional): Whether to include pdf ticket or not

  • hidden (boolean, optional): Hide this ticket

  • order_confirmation_message (string, optional): Order message per ticket type

  • delivery_methods (string, optional): A list of the available delivery methods for this ticket class

  • inventory_tier_id (string, optional): Optional ID of Inventory Tier with which to associate the ticket class

ERROR RESPONSES:

  • 400 AUTO_HIDE_NOT_SET: You must select an auto hide setting

  • 400 BAD_QUANTITIES: The sum of tickets across ticket classes is not equal to the sum of total tickets available

  • 400 COST_GREATER_THAN_FEE: The cost of the ticket class must be greater than the fee

  • 400 CURRENCY_MISMATCH: Event currency ticket currency must match

  • 400 DONATION_AND_COST: A ticket cannot be a donation and a charged ticket

  • 400 DONATION_AND_FREE: A ticket cannot be a donation and a free ticket

  • 400 DONATION_AND_MIN_QUANTITY: Please set a minimum quantity for donation ticket

  • 400 FREE_AND_COST: A ticket cannot be a free ticket and a charged ticket

  • 400 INSUFFICIENT_PACKAGE: You need to upgrade your package to create more than one ticket

  • 400 INVALID_DELIVERY_METHOD: A ticket under this event organization cannot have this delivery method

  • 400 INVALID_EVENT: This event is not qualified to have tickets

  • 400 INVALID_EVENT_ID: Event id must match the event id associated with the ticket

  • 400 INVALID_INVENTORY_TIER_ID: You cannot change the inventory tier of a ticket

  • 400 INVALID_TICKET: You cannot update a child ticket directly

  • 400 NO_COST: A price must be set for a charged ticket

  • 400 NO_QUANTITY_TOTAL: A quantity total must be set for this ticket

  • 400 SPLIT_AND_INCLUDE: You cannot split fees and include them in the price of the ticket

  • 400 SPLIT_FEES_DEPRECATED: This functionality is being deprecated

  • 400 SALES_END_RELATIVE_TOO_FAR_IN_PAST: The ticket sales_end relative can't result in a date < 2000

AUTHENTICATION: Requires: Authorization: Bearer PERSONAL_OAUTH_TOKEN

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
costNoCost of the ticket in minor currency units (e.g., cents for USD). Example: 1000 = $10.00. Must match event currency
freeNoIs this a free ticket? (optional)
nameYesName of this ticket type (optional)
hiddenNoHide this ticket (optional)
eventIdYesEvent ID (required)
autoHideNoHide this ticket when it is not on sale (optional)
currencyNoCurrency code (e.g., USD, EUR, GBP). Must match event currency
donationNoIs this a donation? User-supplied cost (optional)
salesEndNoWhen the ticket stops being on sale (optional, ISO 8601 datetime format). Leave empty for "one hour before event start". Cannot be set on series parent tickets
splitFeeNoAbsorb the payment fee, but show the eventbrite fee (optional)
includeFeeNoAbsorb the fee into the displayed cost (optional)
salesStartNoWhen the ticket is available for sale (optional, ISO 8601 datetime format). Leave empty for "when event published"
descriptionNoDescription of the ticket (optional)
hasPdfTicketNoWhether to include pdf ticket or not (optional)
quantityTotalYesTotal available number of this ticket (required for non-donation and non-tiered ticket classes). For normal ticket, null or 0 is not allowed. For donation ticket, null or 0 means unlimited. For tiered inventory ticket, null or 0 means capacity is only limited by tier capacity and/or event capacity
hideDescriptionNoHide the ticket description on the event page (optional)
inventoryTierIdNoOptional ID of Inventory Tier with which to associate the ticket class
maximumQuantityNoMaximum number per order (optional)
minimumQuantityNoMinimum number per order (optional)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.6

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers auth requirements (Bearer token) plus a detailed error catalog (FREE_AND_COST, DONATION_AND_FREE, COST_GREATER_THAN_FEE, etc.) that reveals real behavioral constraints. It does not disclose idempotency, rate limits, or side effects, so it is thorough but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and organized into labeled sections, which helps scanning. However it repeats the full parameter list already in the schema, adds a very long error catalog, and contradicts the schema by marking name and quantity_total as optional when the schema marks them required.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter mutation with no annotations and no output schema, the description supplies the type taxonomy, required-field behavior, tier/add-on flow, and failure modes an agent needs. It falls short only on response shape and edge behaviors like idempotency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema baseline is 3, but the description adds beyond it: type-specific semantics for quantity_total (null/0 behavior per free/paid/donation/tiered), the meaning of each ticket type, and even fields absent from the schema (sales_end_relative, sales_start_after, sorting, sales_channels). Minor inconsistency: it lists cost as string 'USD,4500' while the schema types it as a number in minor units.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create a new Ticket Class') and backs it with the endpoint (POST /events/{event_id}/ticket_classes/) and a definition of what a ticket class represents. The create verb plus the surrounding create/update/get/list sibling names make the operation unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear conditional guidance: inventory_tier_id is required for tiered events after May 7 2020, and it spells out the add-on creation sequence (create tier with count_against_event_capacity=false, then supply inventory_tier_id). It never names alternatives like update_ticket_class explicitly, but the preconditions are strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools