A single API to connect tours and
activities to resellers

+ MANY MORE Your System Single API

Example: Connecting to Galaxy Connect

1

Implement the OCTo Open API on your system

Use our self-service integration and testing tool
2

Create a new OCTO connection using the galaxy connect backend

The values of apiKey, supplierId and endpoint are provided by the galaxy connect team
POST /octo/connection
{
"name": "Bay Cruise, San Francisco",
"backend": {
"type": "galaxyconnect",
"apiKey": "1400937e-647e-4ef4-9f6f-7e090318a42g",
"supplierId": "0f74e244-9e9f-4c03-b541-92fefaf2c19e",
"endpoint": "https://api.galaxyconnect.com"
}

}

The response will give you a connection ID you can use to authenticate future requests.
{
"id": "cd58e17b-44a3-4904-985a-1ce2aebab458"
}
3

List all available products, options and units in OCTO format

Only one product is given in the example below but you will release a list of all the available products in OCTO format.
GET /octo/products
Authorization: Token cd58e17b-44a3-4904-985a-1ce2aebab458

[{
"id": "310121",
"internalName": "Adult Bay Cruise",
"reference": "310121",
"locale": "en",
"timeZone": "America/Los_Angeles",
"allowFreesale": false,
"availabilityType": "START_TIME",
"deliveryFormats": ["QRCODE"],
"deliveryMethods": ["TICKET"],
"redemptionMethod": "DIGITAL",
"options": [{
"id": "DEFAULT",
"default": true,
"internalName": "DEFAULT",
"reference": null,
"restrictions": {
"minUnits": 0,
"maxUnits": null
}
,

"units": [{
"id": "310121",
"internalName": "Adult Bay Cruise",
"reference": "adult",
"type": "ADULT",
"restrictions": {
"minAge": 18,
"maxAge": 99,
"idRequired": false,
"minQuantity": null,
"maxQuantity": null,
"paxCount": 1,
"accompaniedBy": []
}

}
]

}
]

}
]
4

Get availability over a given date range

The availability is fetched live from galaxy on each attempt and translated into OCTO format
POST /octo/availability
Authorization: Token cd58e17b-44a3-4904-985a-1ce2aebab458

{
"productId": "310121",
"optionId": "DEFAULT",
"localDateStart": "2021-07-01",
"localDateEnd": "2021-07-01"
}

The response below shows departure times, but we also support an day-based opening hour format which you can see in the OCTO spec.
[
{
"id": "451283",
"localDateTimeStart": "2021-07-01T11:30:00-05:00",
"localDateTimeEnd": "2021-07-01T23:30:00-05:00",
"allDay": false,
"status": "AVAILABLE",
"available": true,
"vacancies": 14,
"capacity": 24,
"maxUnits": 14,
"openingHours": []
}
,

{
"id": "572732",
"localDateTimeStart": "2021-07-01T12:00:00-05:00",
"localDateTimeEnd": "2021-07-02T00:00:00-05:00",
"allDay": false,
"status": "SOLD_OUT",
"available": true,
"vacancies": 0,
"capacity": 24,
"maxUnits": 0,
"openingHours": []
}

]
5

Make a booking reservation

This will hold the availability for you whilst you collect payment and customer contact information.
POST /octo/bookings
Authorization: Token cd58e17b-44a3-4904-985a-1ce2aebab458

{
"productId": "310121",
"optionId": "DEFAULT",
"availabilityId": "451283",
"unitItems": [
{
"unitId": "310121"
}
,

{
"unitId": "310121"
}

]

}

The response will include a ID for the booking and an indicator for how long the availability will be held for:
{
"uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"status": "ON_HOLD",
"utcExpiresAt": "2021-06-07T17:06:37Z"
}
6

Confirm the booking

After you've collected payment and contact information from the guest you can then confirm the booking and get the barcodes.
POST /octo/bookings/89fe0192-ddcd-430a-b285-e1396a4725d2/confirm
Authorization: Token cd58e17b-44a3-4904-985a-1ce2aebab458

{
"resellerReference": "YOUR-REFERENCE-0123",
"contact": {
"fullName": "Oliver Morgan",
"emailAddress": "[email protected]",
"phoneNumber": "+447840739436",
"country": "GB"
}

}

The response will contain a ticket barcode for each purchased unit:
{
"uuid": "89fe0192-ddcd-430a-b285-e1396a4725d2",
"status": "CONFIRMED",
"utcExpiresAt": null,
"unitItems": [
{
"supplierReference": "408H44",
"unitId": "310121",
"ticket": {
"redemptionMethod": "DIGITAL",
"utcRedeemedAt": null,
"deliveryOptions": [{
"deliveryFormat": "QRCODE",
"deliveryValue": "0825667283882929"
}
]

}

}
,

{
"supplierReference": "58FH24",
"unitId": "310121",
"ticket": {
"redemptionMethod": "DIGITAL",
"utcRedeemedAt": null,
"deliveryOptions": [{
"deliveryFormat": "QRCODE",
"deliveryValue": "0847271858673774"
}
]

}

}

]

}

And that's it! You can then generate the tickets and place the QR Code values on them.

What more to expect

Hosted in Cloudflare's Edge Network

OCTO Cloud is built using Cloudflare's Workers platform and is deployed in datacenters across 200 cities in 100 countries. This means our service is highly resilient and low-latency.

Proven at scale

Over 5,000 tickets are being sold every day through OCTO Cloud to a network of over 300 connected suppliers, and that number is growing every day.

Beautiful and easy to use dashboard

See all requests in realtime with analytics on performance and errors. Get instant email notifications when things go wrong and use our repeat button to repeat the request check if its fixed.

Configurable availability caching

Let us do the heavily lifting caching your availability where necessary for faster response times to partners. The cache parameters can be configured by product and supplier or turned off completely.

Always Online

Being built on Cloudflare's network also gives us all of Cloudflare's cachine and availability tools which we use to entire we can always deliver a responses, even if the origin server fails.

Automated on-boarding

OCTO Cloud's goal is to connect supplier partners in an entirely automated fashion, allowing you to go from nothing to fully connected without any human manual work.

Ready to get started?

I’m interested!