Introduction
Welcome to our API documentation!
Authenticating requests
This API is not authenticated.
Auth
Login action
Endpoints
GET v1/heartbeat
Example request:
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
{
"status": "ok",
"now": 1732095259
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Orders
Orders List Returns a list of your orders, filters are available to help you narrow your search.
requires authentication
Example request:
Example response (200):
{
"data": [
{
"order_num": "TPEN1900235",
"created_at": 1551289807,
"status": "confirmed",
"customer": "Bill Bob",
"invoice": {
"invoice_num": "I401013",
"due_date": "14/03/2020",
"status": "Active",
"sub_total": 900,
"discount": -450,
"total_amount": 450,
"amount_due": 450,
"products": [
{
"id": 2203,
"name": "FC Barcelona - Getafe",
"tour_date": 1551289807,
"ticket_option": "West Upper Long Side",
"delivery_method": "Football - PL - Chelsea - Stadium Collection",
"qty": 2,
"total": 458,
"currency": "GBP"
}
],
"invoice": "URL path to download the invoice from",
"credit_note": [
"URLs to credit note"
],
"vouchers": [
"URLs path to download the voucher from"
]
},
"notes": []
}
],
"links": {
"first": "#DOMAIN#/v1/order?page[number]=1",
"last": "#DOMAIN#/v1/order?page[number]=61",
"prev": null,
"next": "#DOMAIN#/v1/order?page[number]=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 61,
"path": "#DOMAIN#/v1/order",
"per_page": 10,
"to": 10,
"total": 603
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Order Details Returns the full details for one of your bookings.
requires authentication
Example request:
Example response (200):
{
"data": {
"order_num": "O200968",
"created_at": 1565102927,
"status": "Pending Payment",
"customer": "Test API",
"invoice": {
"invoice_num": "I401011",
"due_date": "14/03/2020",
"status": "Active",
"sub_total": 900,
"discount": -450,
"total_amount": 450,
"amount_due": 450,
"products": [
{
"id": 10016,
"name": "Arsenal v Norwich City",
"start": {
"tz": "CET",
"local": "2020-04-04T00:00:00+01:00",
"utc": "2020-04-03T23:00:00+00:00",
"epoch": 1585954800
},
"time_confirmed": true,
"match": {
"home": 1001,
"away": 1033,
"competition": 401
},
"venue": 1003,
"ticket_option": {
"id": 35,
"name": "Club Level Ticket",
"price": 100,
"delivery_method": {
"id": 301,
"name": "E-Ticket UK"
}
},
"qty": 6,
"total": 900,
"currency": "GBP"
}
],
"invoice": "URL to invoice",
"credit_note": [
"URLS to credit notes"
],
"vouchers": [
"URLS to vouchers"
]
},
"notes": []
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Place Order
requires authentication
Create a new order for one or more Travel Connection products.
Example request:
Example response (200):
{
"order": {
"order_no": "TPEN1912345",
"total": 250,
"currency": "EUR",
"status": "confirmed"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update order's guests
requires authentication
Endpoint allows to update guests details for order placed earlier
Example request:
Example response (200):
{
"products": [
{
"product_id": 123,
"ticket_option": 789,
"guests": [
{
"first_name": "Tom",
"last_name": "Smith",
"email": "tom.smith@travelconnectionspain.com",
"phone": "+44 7549775544",
"dob": "01/01/1900",
"address_1": "1 Big Street",
"address_2": "",
"county": "Greater London",
"city": "London",
"postal_code": "WC1 10QS",
"country_id": 1,
"document": null,
"nationality_id": null,
"options": {
"man_uni_supporters_id": "3424232342"
},
"lead": 1
},
{
"first_name": "Adam",
"last_name": "Smith",
"email": "adam.smith@travelconnectionspain.com",
"phone": "+44 7549775543",
"dob": "01/01/1903",
"address_1": "1 Big Street",
"address_2": "",
"county": "Greater London",
"city": "London",
"postal_code": "WC1 10QS",
"country_id": 1,
"document": "EA 18222",
"nationality_id": 1,
"lead": 0
}
]
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Products
Search products Return list of products from a supplied request parameters (see below)
requires authentication
Example request:
Example response (200):
{
"data": [
{
"id": 12233,
"name": "Tottenham Hotspur v Everton",
"type": "football_match",
"slug": "tottenham-hotspur-v-everton",
"match": {
"start": {
"tz": "Europe/London",
"local": "2022-10-15T17:30:00+01:00",
"utc": "2022-10-15T16:30:00+00:00",
"epoch": 1665851400
},
"time_confirmed": true,
"home": 1017,
"away": 1008,
"competition": 401,
"status": "Upcoming"
},
"min_order": 1,
"max_order": 99,
"venue": 1025,
"event": null,
"event_dates": [],
"images": {
"main": "https://www.travelconnectionleisure.com/storage/files/images/products/main/tottenham/tottenham_game.png",
"thumb": "https://www.travelconnectionleisure.com/storage/files/images/products/thumb/tottenham/tottenham_everton.jpg"
}
},
{
"id": 12829,
"name": "Harry Styles",
"type": "event",
"slug": "harry-styles",
"match": null,
"event": {
"event": {
"start": {
"tz": "Europe/London",
"local": "2023-06-13T19:00:00+01:00",
"utc": "2023-06-13T18:00:00+00:00",
"epoch": 1686679200
},
"end": {
"tz": "Europe/London",
"local": "2023-06-17T23:59:00+01:00",
"utc": "2023-06-17T22:59:00+00:00",
"epoch": 1687042740
},
"status": "Upcoming"
},
"event_dates": [
{
"date_start": null,
"date_end": null
},
{
"date_start": null,
"date_end": null
},
{
"date_start": null,
"date_end": null
},
{
"date_start": null,
"date_end": null
}
]
},
"min_order": 1,
"max_order": 99,
"venue": 1001,
"event_dates": [
16,
17,
20,
22
],
"images": {
"main": "URL to image",
"thumb": "URL to image"
}
}
],
"links": {
"first": "#DOMAIN#/v1/product?page[number]=1",
"last": "#DOMAIN#/v1/product?page[number]=61",
"prev": null,
"next": "#DOMAIN#/v1/product?page[number]=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 61,
"path": "#DOMAIN#/v1/product",
"per_page": 10,
"to": 10,
"total": 603
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Product details Return full details of a product for a given Id.
requires authentication
NOTE: The ticket_options response data with ticket categories and pricing was deleted. Data cached for one minute. To get real-time ticket availability and pricing for a product you must use the inventory-status endpoint. This data returned by this endpoint will remain static until the product has been edited in some way.
Example request:
Example response (200):
{
"data": {
"id": 10100,
"name": "Manchester United v Aston Villa",
"type": "football_match",
"slug": "manchester-united-v-aston-villa",
"min_order": 1,
"max_order": 99,
"venue": 1002,
"match": {
"start": {
"tz": "Europe/London",
"local": "2019-12-01T16:30:00+00:00",
"utc": "2019-12-01T16:30:00+00:00",
"epoch": 1575217800
},
"time_confirmed": true,
"home": 1014,
"away": 1021,
"competition": 401,
"status": "Expired"
},
"event": null,
"event_dates": [],
"information": "",
"notes": "",
"timetable": "",
"currency": "GBP",
"categories": [
{
"id": 1001,
"name": "Football"
},
{
"id": 1002,
"name": "English Football"
},
{
"id": 1019,
"name": "Offers"
}
],
"images": {
"main": "#DOMAIN#",
"thumb": "#DOMAIN#/storage/files/images/products/thumb/manchester_united/manchester_united_villa.jpg"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch availability The *inventory-status* endpoint is the ONLY way to get real-time ticket availability and pricing.
Although similar information is supplied on the product details endpoint, the response data on that endpoint is heavily cached. By using the inventory-status endpoint, you can request ticket availability and pricing from 100+ products in a single request. This endpoint is designed to be performant for the data it provides.
Example request:
Example response (200):
{
"data": [
{
"id": 12198,
"ticket_options": [
{
"id": 5755,
"ticket_category": 25,
"name": "Main Stand Code Ticket L11",
"template_name": "Main Stand Code Ticket L11",
"price": 20,
"available": false,
"max_purchase_qty": 0,
"delivery_methods": [
301
]
},
{
"id": 5756,
"ticket_category": 26,
"name": "Main Stand Code Ticket L12",
"template_name": "Main Stand Code Ticket L12",
"price": 20,
"available": true,
"max_purchase_qty": 4,
"delivery_methods": [
301
]
}
]
}
],
"links": {
"first": "#DOMAIN#/v1/inventory-status?page%5Bnumber%5D=1",
"last": "#DOMAIN#/v1/inventory-status?page%5Bnumber%5D=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "#DOMAIN#/v1/inventory-status?page%5Bnumber%5D=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "#DOMAIN#/v1/inventory-status",
"per_page": 10,
"to": 1,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Reference Data
Fetch ticket categories The ticket categories endpoint will return all descriptive information about the ticket categories available at each venue.
requires authentication
Filters are available in order to narrow your search. Each venue may have different ticket categories based on the product type being hosted. For example, at Wembly there will be differet categories for football_match products as there will be for event products (such as a concert). Each ticket category can have different delivery methods for the tickets, however, since Covid, most tickets are delivered as e-tickets.
Example request:
Example response (200):
{
"data": [
{
"id": 1,
"product_type": 14,
"venue": 10525,
"name": "General Admission",
"description": "Description",
"color": "#ff8000",
"delivery_methods": [
123
]
},
{
"id": 2,
"product_type": 11,
"venue": 11025,
"name": "Travel Club Lounge Corner Seat",
"description": "Description",
"color": "#ff00ff",
"delivery_methods": [
321
]
}
],
"links": {
"first": "#DOMAIN#/v1/ticket-categories?page%5Bnumber%5D=1",
"last": "#DOMAIN#/v1/ticket-categories?page%5Bnumber%5D=7",
"prev": null,
"next": "#DOMAIN#/v1/ticket-categories?page%5Bnumber%5D=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 7,
"path": "#DOMAIN#/v1/ticket-categories",
"per_page": 10,
"to": 10,
"total": 70
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List countries Return collection of available (active) countries
requires authentication
Example request:
Example response (200):
{
"data": [
{
"id": 1,
"code": "gb",
"name": "united kingdom"
},
{
"id": 2,
"code": "es",
"name": "spain"
},
{
"id": 3,
"code": "us",
"name": "united states"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List competitions Return collection of competitions
requires authentication
Example request:
Example response (200):
{
"data": [
{
"id": 1,
"name": "La Liga"
},
{
"id": 2,
"name": "Premier League"
},
{
"id": 3,
"name": "Serie A"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List teams Return collection of teams. This data is largely static, mainly new teams are added, however, a team's name may change.
requires authentication
In the endpoints for Product search and details we return team ID values, so it is recommended to store or cache the Teams data collection for lookup.
Example request:
Example response (200):
{
"data": [
{
"id": 1,
"name": "FC Barcelona"
},
{
"id": 2,
"name": "Real Madrid"
},
{
"id": 3,
"name": "Atlético de Madrid"
},
{
"id": 4,
"name": "RCD Espanyol"
},
{
"id": 5,
"name": "Athletic Bilbao"
},
{
"id": 6,
"name": "Arsenal"
},
{
"id": 7,
"name": "Chelsea"
},
{
"id": 8,
"name": "Liverpool"
},
{
"id": 9,
"name": "Manchester United"
},
{
"id": 10,
"name": "Manchester City"
}
],
"links": {
"first": "#DOMAIN#/v1/teams?page=1",
"last": "#DOMAIN#/v1/teams?page=16",
"prev": null,
"next": "#DOMAIN#/v1/teams?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 16,
"path": "#DOMAIN#/v1/teams",
"per_page": 10,
"to": 10,
"total": 152
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Fetch team Return team details. Presently the same response object is returned as per the team list. We recommend that you load all teams and cache them locally.
requires authentication
Example request:
Example response (200):
{
"data": {
"id": 1,
"name": "FC Barcelona"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List venues Return collection of venues. Included is the address and geo coordinates of the venue as well as any available seating plans.
requires authentication
Example request:
Example response (200):
{
"data": [
{
"id": 1,
"name": "Camp Nou",
"address": "Carrer d'Aristidess Maillol, 12, 08028 Barcelona",
"description": "Stade du FC Barcelone, qui en est le club résident depuis son inauguration en 1957. Il est le plus grand stade d'Europe, avec une capacité de 99 354 places.",
"coordinates": {
"lat": 41.380924,
"lng": 2.122713
},
"postcode": "BCN",
"city": "Barcelona",
"country": null,
"images": {
"stadium": "URL to image",
"seating": "URL to image"
}
},
{
"id": 2,
"name": "Barcelona Ciclotour",
"address": "Plaça Catalunya 21 (Hard Rock Café) ",
"description": "Faites un parcours relaxant à travers la ville de Barcelone et visitez des espaces culturels et singuliers.",
"coordinates": {
"lat": 41.323053,
"lng": 2.091951
},
"postcode": "BCN",
"city": "Barcelona",
"country": null,
"images": {
"stadium": "URL to image",
"seating": "URL to image"
}
},
{
"id": 5,
"name": "PortAventura World",
"address": "Avenida Alcalde Pere Molas, 43480, Vila Seca",
"description": "PortAventura Park est un parc à thèmes espagnol situé au sud de Barcelone, entre Vila-seca et Salou dans la province de Tarragone. Il est composé d'une quarantaine d'attractions distribuées en six zones thématiques.",
"coordinates": {
"lat": 41.087628,
"lng": 1.157228
},
"postcode": "SAL",
"city": "Costa Daurada",
"country": null,
"images": {
"stadium": "URL to image",
"seating": "URL to image"
}
}
],
"links": {
"first": "#DOMAIN#/v1/venues?page[number]=1",
"last": "#DOMAIN#/v1/venues?page[number]=61",
"prev": null,
"next": "#DOMAIN#/v1/venues?page[number]=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 61,
"path": "#DOMAIN#/v1/venues",
"per_page": 10,
"to": 10,
"total": 603
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get venue by id
requires authentication
Includes address and geo coordinates and any available seating plans.
Example request:
Example response (200):
{
"data": {
"id": 1001,
"name": "Wembley Stadium",
"address": "London HA9 0WS, UK",
"description": "English National Stadium",
"coordinates": {
"lat": 51.5560208,
"lng": -0.2817128
},
"postcode": null,
"city": "London",
"country": 1,
"images": {
"stadium": "URL to image",
"seating": "URL to image"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
List delivery methods Return collection of delivery methods. Each ticket category for a venue may have different delivery method, however, since Covid, most tickets are delivered as e-tickets.
requires authentication
Example request:
Example response (200):
{
"data": [
{
"id": 1,
"name": "E-ticket",
"description": "An electronic ticket for entrance that is emailed to the customer",
"price": "0.00",
"requires_delivery": true
},
{
"id": 2,
"name": "Voucher",
"description": "A digital voucher with a barcode or QR code that is emailed to the customer for printing",
"price": "2.00",
"requires_delivery": false
}
],
"links": {
"first": "#DOMAIN#/v1/delivery-methods?page[number]=1",
"last": "#DOMAIN#/v1/delivery-methods?page[number]=10",
"prev": null,
"next": "#DOMAIN#/v1/delivery-methods?page[number]=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 10,
"path": "#DOMAIN#/v1/delivery-methods",
"per_page": 10,
"to": 10,
"total": 100
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.