GraphQL

Interfaces & Types

Each element type Events adds has a GraphQL interface, which every query on the Queries page returns. Along with the fields below, each interface has Craft’s element fields (opens new window), such as id, uid, title, slug, url, enabled, status, dateCreated and dateUpdated.

Events also creates a concrete type for each event type, named after the event type’s handle, such as conference_Event, conference_Session, conference_TicketType, conference_Ticket and conference_PurchasedTicket. These types add the custom fields from the event type’s field layouts. Request custom fields with an inline fragment on the concrete type.

{
  eventsEvents(type: "conference") {
    title
    ... on conference_Event {
      venue
      summary
    }
  }
}

Use __typename to see which concrete type an element is.

Events

The EventInterface Interface

The interface implemented by every Event element.

capacity

The number of seats shared across all of the event’s sessions and ticket types. This is null when the event has no overall limit. See Capacity for how the limits combine.

endDate

The date and time the event ends, which is the end date of its last enabled session. This is null when the event has no sessions.

eventTypeHandle

The handle of the event type the event belongs to.

eventTypeId

The ID of the event type the event belongs to.

purchasedTickets

The tickets customers have bought for the event. This field is only in the schema when it has a purchased tickets permission, and only returns purchased tickets for event types it has both permissions for.

sessions

The event’s enabled sessions, in the order they appear on the event.

startDate

The date and time the event starts, which is the start date of its first enabled session. This is null when the event has no sessions.

ticketTypes

The event’s enabled ticket types, in the order they appear on the event.

tickets

The event’s enabled tickets, one for each combination of session and ticket type.

This example fetches an event with its sessions and the tickets a customer can buy.

{
  eventsEvent(slug: "craft-summit-2026") {
    title
    capacity
    sessions {
      title
      startDate
    }
    tickets {
      id
      title
      price
    }
  }
}

Sessions

The SessionInterface Interface

The interface implemented by every session.

allDay

Whether the session runs all day, rather than between set times.

capacity

The number of seats shared by every ticket type in the session. This is null when the session has no limit of its own.

endDate

The date and time the session ends.

event

The event the session belongs to. This is null when the schema can’t read the event’s type.

startDate

The date and time the session starts.

{
  eventsSessions(eventId: 1024) {
    title
    startDate @formatDateTime(format: "D j M, g:ia")
    allDay
    event {
      title
    }
  }
}

Ticket Types

The TicketTypeInterface Interface

The interface implemented by every ticket type.

capacity

The number of seats that can be sold for this ticket type in each session. This is null when the ticket type has no limit of its own.

event

The event the ticket type belongs to. This is null when the schema can’t read the event’s type.

price

The price of a ticket of this type.

{
  eventsTicketTypes(eventId: 1024) {
    title
    price
    capacity
  }
}

Tickets

The TicketInterface Interface

The interface implemented by every ticket. A ticket is the purchasable for one ticket type in one session.

event

The event the ticket belongs to. This is null when the schema can’t read the event’s type.

price

The price of the ticket.

session

The session the ticket is for. This is null when the schema can’t read it.

sku

The ticket’s SKU, used to identify it in Commerce.

type

The ticket type the ticket is for. This is null when the schema can’t read it.

{
  eventsTickets(eventId: 1024) {
    id
    sku
    price
    session {
      title
    }
    type {
      title
    }
  }
}

Purchased Tickets

The PurchasedTicketInterface Interface

The interface implemented by every purchased ticket. It’s only available to schemas with a purchased tickets permission, described in Configure Schema Access.

Its uid and title fields return null unless the schema also has the check-in permission for the event’s type, because the uid identifies the ticket for check-in and the title can include it.

cancelledAt

The date and time the reservation was cancelled. This is null for an active reservation.

cancelledReason

The reason given when the reservation was cancelled. This is null for an active reservation, or when no reason was given.

checkedIn

Whether the ticket holder has checked in.

checkedInDate

The date and time the ticket holder checked in. This is null until they check in.

event

The event the ticket was bought for. This is null when the schema can’t read it.

isActive

Whether the reservation is active, meaning it holds a place at the event.

isCancelled

Whether the reservation has been cancelled.

reservationStatus

The reservation’s status, which is active or cancelled.

session

The session the ticket was bought for. This is null when the schema can’t read it.

ticket

The ticket that was bought. This is null when the schema can’t read it.

ticketType

The ticket type that was bought. This is null when the schema can’t read it.

{
  eventsPurchasedTickets(eventId: 1024) {
    id
    reservationStatus
    checkedIn
    checkedInDate
    ticketType {
      title
    }
  }
}