Get Event Product
Returns the full detail for a single ticket product associated with a published event. Used during the event checkout flow to confirm product availability and price before purchase.
Authentication
No authentication required.
Path Parameters
The integer ID of the event. Obtained as Id from GET /api/public/events or GET /api/public/events/{id}.
The integer ID of the ticket product. Obtained as EventProducts[].Id from GET /api/public/events/{id}.
Query Parameters
Comma-separated list of field paths to include in the response. When provided, only the
specified fields are returned — useful for reducing payload size. Supports nested paths
using dot notation.
Response
Returns an EventProduct object.
Core Fields
Unique identifier for the ticket product.
Display name of the ticket type (e.g. “General Admission”, “VIP Pass”).
Optional description shown to customers during checkout.
Ticket price. 0 for free tickets.
ISO 4217 currency code (e.g. "GBP", "USD", "EUR").
Localised price string including currency symbol (e.g. "£12.00"). Use this for display rather than formatting Price manually.
Full currency object from the business configuration.
Availability
When true, the ticket is within its sale window and has stock remaining.
When true, all available spots for this ticket type have been claimed.
Remaining ticket count. 0 when sold out.
When true, fewer than a threshold number of tickets remain — used to display urgency messaging.
Maximum number of tickets a single customer can purchase. null means no limit.
Total initial allocation for this ticket type.
Sale Window
Local datetime from which this ticket type goes on sale (ISO 8601).
Local datetime after which this ticket type is no longer available (ISO 8601).
Human-readable formatted start date.
Human-readable formatted end date.
When true, the sale window has passed and tickets can no longer be purchased.
When true, the sale window has not yet opened.
Operator-defined ordering position for display in ticket lists.
Timestamps
All datetime fields are ISO 8601 strings. *On fields are in the location’s local timezone; *OnUtc fields are UTC.
Local datetime the ticket product was created.
UTC datetime the ticket product was created.
Local datetime of the last update.
UTC datetime of the last update.
Examples
Fetch a ticket product
GET /api/public/events/412/product/88
{
"Id": 88,
"Name": "General Admission",
"Description": "Standard entry ticket. Includes refreshments.",
"Price": 15.0,
"PriceCurrencyCode": "GBP",
"PriceFormatted": "£15.00",
"Currency": { "Code": "GBP", "Symbol": "£" },
"IsAvailableNow": true,
"SoldOut": false,
"TicketsLeft": 13,
"LastFew": false,
"MaxTicketsPerAttendee": 2,
"Quantity": 20,
"StartDate": "2026-01-01T00:00:00",
"EndDate": "2026-03-23T08:15:00",
"StartDateFormatted": "1 Jan 2026",
"EndDateFormatted": "23 Mar 2026",
"Expired": false,
"Future": false,
"DisplayOrder": 1,
"UniqueId": "d4e5f6a7-b8c9-0123-def0-234567890123",
"IdString": "88",
"CreatedOn": "2025-11-01T09:00:00",
"UpdatedOn": "2026-03-01T12:00:00",
"CreatedOnUtc": "2025-11-01T09:00:00Z",
"UpdatedOnUtc": "2026-03-01T12:00:00Z",
"IsNull": false
}
TypeScript Integration
import endpoints from '@/api/endpoints'
import { EventProduct } from '@/types/endpoints/EventList'
import { useData } from '@/api/fetchData'
const endpoint = endpoints.events.product(412, 88)
const { resource: product } = useData<EventProduct>(httpClient, endpoint.url)
Error Responses
No event with eventId or no ticket product with productId exists, or the product does not belong to the specified event.
| Method | Endpoint | Description |
|---|
GET | /api/public/events/{id} | Full event detail including all ticket products |
GET | /api/public/events | Paginated list of published events |
POST | /api/public/events/{id}/joinWaitingList | Join the waiting list for a sold-out event |