Skip to main content

Availability and Pricing Endpoints

Spektrix doesn't store availability or prices. It reads them from your connector whenever it needs them, so these endpoints should return up-to-date data from the source system.

Prices are returned per price band and ticket type. Each amount is the full price the agent pays the source system for one ticket, including any fees, in the source system's currency. That currency must match the Spektrix client's currency.

Get instance summaries​

GET instances/status?ids={instanceIds}

Returns the headline availability and prices of several instances at once. Spektrix uses this for event lists and calendars, where it needs a quick summary of many instances.

Query parameterRequiredDescription
idsYesComma-separated instance ids.

Response: 200 OK

[
{
"instanceId": "2AEBCDFG",
"available": 230,
"pricesByBand": [
{
"priceBandId": "7AEBCDFG",
"prices": [
{ "isDefault": true, "amount": 35.00, "ticketTypeId": "5AEBCDFG" },
{ "isDefault": false, "amount": 28.00, "ticketTypeId": "6AEBCDFG" }
]
}
]
}
]
FieldTypeDescription
instanceIdstringThe instance this summary is for. Return one entry for each requested instance.
availableintegerThe number of tickets the agent can still buy across the whole instance, reserved and unreserved.
pricesByBandarrayFor each price band on sale, a price for each ticket type. See prices.

Prices​

pricesByBand has the same shape in both availability endpoints:

FieldTypeDescription
priceBandIdstringThe price band.
prices[].ticketTypeIdstringThe ticket type this price is for.
prices[].amountnumberThe full price for one ticket.
prices[].isDefaultbooleantrue for the ticket type offered first in this band. Spektrix also shows this price where it needs a single price for the band. Mark one price in each band as the default.

Get instance status​

GET instances/{instanceId}/status

Returns the live, seat-by-seat availability and prices of a single instance. Spektrix calls this when it shows a seating plan and while adding seats to a basket.

Response: 200 OK

{
"pricesByBand": [
{
"priceBandId": "7AEBCDFG",
"prices": [
{ "isDefault": true, "amount": 35.00, "ticketTypeId": "5AEBCDFG" }
]
},
{
"priceBandId": "8AEBCDFG",
"prices": [
{ "isDefault": true, "amount": 20.00, "ticketTypeId": "5AEBCDFG" }
]
}
],
"availableSeats": [
{ "priceBandId": "7AEBCDFG", "seatIds": [ "11AEBCDF", "12AEBCDF", "16AEBCDF" ] }
],
"allocatedSeats": [
{
"allocationId": "15AEBCDF",
"allocationName": "Press hold",
"seatIds": [ "16AEBCDF" ]
}
],
"unavailableSeats": [ "14AEBCDF" ],
"seatInformation": [
{ "label": "Restricted view", "seatIds": [ "12AEBCDF" ] }
],
"areas": [
{
"areaId": "25AEBCDF",
"available": 120,
"capacity": 150,
"priceBandIds": [ "8AEBCDFG" ]
}
]
}

The response has three parts: prices, which apply to the whole instance, then reserved seats and unreserved areas.

Instance prices​

FieldTypeDescription
pricesByBandarrayThe prices of every band on sale in the instance. It covers both reserved seats and unreserved areas. See prices.

Reserved seats​

Reserved seats are reported for the whole instance, not area by area. Seat ids are unique across the plan, so Spektrix already knows which area each seat belongs to from the seating plan.

Every seat the agent can see must appear in exactly one of these lists:

ListMeaning
availableSeatsSeats the agent can buy, grouped by price band. This includes allocated seats the agent may sell.
unavailableSeatsSeats the agent can't buy because they're sold, reserved, in another basket or held for someone else. Include seats that are already in this agent's own basket.

A seat that's in neither list is hidden from the plan for this instance. Use this for seats that aren't on sale at all for the instance.

FieldTypeDescription
availableSeats[].priceBandIdstringThe price band of these seats.
availableSeats[].seatIdsstring[]Available seats in this band.
allocatedSeats[].allocationIdstringYour id for a named allocation, or hold, that some available seats belong to.
allocatedSeats[].allocationNamestringThe allocation's name. Staff see it when mapping the allocation to a Spektrix lock type. This field will be removed in a future version: see the note below.
allocatedSeats[].seatIdsstring[]Seats from availableSeats that are in this allocation.
unavailableSeatsstring[]Seats the agent can't buy.
seatInformationarrayOptional. Labels shown against seats, regardless of whether they're available. Leave it out, or return an empty list, if there are none.
seatInformation[].labelstringRequired for each entry. The label to show, such as Restricted view.
seatInformation[].seatIdsstring[]The seats the label applies to.
Allocations

allocatedSeats lets the source system hold back seats for particular purposes, such as press seats or wheelchair spaces. Staff map each allocation to a Spektrix lock type, which controls how the seats are displayed and who can sell them. Seats in an allocation that hasn't been mapped aren't offered for sale.

Upcoming change: allocationName

A future version of Spektrix Connect will add a catalogue endpoint that lists every allocation type, with its id and name. Spektrix will then get allocation names from that endpoint, and allocationName will be removed from this response. Keep returning allocationName for now. When the new endpoint is available, you'll need to implement it, and allocatedSeats will only need allocationId and seatIds.

Unreserved areas​

Unreserved areas have no seats, so their availability is reported as a count. Include an entry in areas for every Unreserved area in the plan. You can include entries for reserved areas, but Spektrix ignores them.

FieldTypeDescription
areas[].areaIdstringThe area's id from the seating plan.
areas[].availableintegerThe number of tickets the agent can still buy in the area.
areas[].capacityintegerThe area's total capacity.
areas[].priceBandIdsstring[]The price band the area's tickets are priced from. An unreserved area has one band.