Skip to main content
GET
/
api
/
public
/
events
/
{eventId}
/
product
/
{productId}
{
  "Id": 123,
  "Name": "<string>",
  "Description": "<string>",
  "Price": 123,
  "PriceCurrencyCode": "<string>",
  "PriceFormatted": "<string>",
  "Currency": {},
  "IsAvailableNow": true,
  "SoldOut": true,
  "TicketsLeft": 123,
  "LastFew": true,
  "MaxTicketsPerAttendee": {},
  "Quantity": 123,
  "StartDate": "<string>",
  "EndDate": "<string>",
  "StartDateFormatted": "<string>",
  "EndDateFormatted": "<string>",
  "Expired": true,
  "Future": true,
  "DisplayOrder": 123,
  "CreatedOn": "<string>",
  "CreatedOnUtc": "<string>",
  "UpdatedOn": "<string>",
  "UpdatedOnUtc": "<string>",
  "404 Not Found": {}
}

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

eventId
number
required
The integer ID of the event. Obtained as Id from GET /api/public/events or GET /api/public/events/{id}.
productId
number
required
The integer ID of the ticket product. Obtained as EventProducts[].Id from GET /api/public/events/{id}.

Query Parameters

_shape
string
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

Id
number
required
Unique identifier for the ticket product.
Name
string
required
Display name of the ticket type (e.g. “General Admission”, “VIP Pass”).
Description
string
Optional description shown to customers during checkout.
Price
number
Ticket price. 0 for free tickets.
PriceCurrencyCode
string
ISO 4217 currency code (e.g. "GBP", "USD", "EUR").
PriceFormatted
string
Localised price string including currency symbol (e.g. "£12.00"). Use this for display rather than formatting Price manually.
Currency
Currency
Full currency object from the business configuration.

Availability

IsAvailableNow
boolean
When true, the ticket is within its sale window and has stock remaining.
SoldOut
boolean
When true, all available spots for this ticket type have been claimed.
TicketsLeft
number
Remaining ticket count. 0 when sold out.
LastFew
boolean
When true, fewer than a threshold number of tickets remain — used to display urgency messaging.
MaxTicketsPerAttendee
number | null
Maximum number of tickets a single customer can purchase. null means no limit.
Quantity
number
Total initial allocation for this ticket type.

Sale Window

StartDate
string
Local datetime from which this ticket type goes on sale (ISO 8601).
EndDate
string
Local datetime after which this ticket type is no longer available (ISO 8601).
StartDateFormatted
string
Human-readable formatted start date.
EndDateFormatted
string
Human-readable formatted end date.
Expired
boolean
When true, the sale window has passed and tickets can no longer be purchased.
Future
boolean
When true, the sale window has not yet opened.
DisplayOrder
number
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.
CreatedOn
string
Local datetime the ticket product was created.
CreatedOnUtc
string
UTC datetime the ticket product was created.
UpdatedOn
string
Local datetime of the last update.
UpdatedOnUtc
string
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

404 Not Found
error
No event with eventId or no ticket product with productId exists, or the product does not belong to the specified event.
MethodEndpointDescription
GET/api/public/events/{id}Full event detail including all ticket products
GET/api/public/eventsPaginated list of published events
POST/api/public/events/{id}/joinWaitingListJoin the waiting list for a sold-out event