Online Check-in

Just like with an airline, except for tours and activities

To use this capability add ventrata/checkin to your X-Capabilities header.

Some products require online checkin after booking confirmation and before the guest is allowed to use their tickets. This is typically the case when:

  • The product has waivers that must be signed by each guest.

  • The product has required questions that need answering (such as dietary requirements).

  • The product is a multi-part package where each part needs a travel date and time chosen.

If the checkin process is skipped the guest will still be able to complete the check-in process when they arrive, it just may delay their experience.

This capability also provides a way to find an existing booking using either the booking reference number or customer email or mobile.

post
Lookup

https://api.ventrata.com/octo/checkin/lookup
Takes either an email, mobile or reference number and searches for the booking.
Request
Response
Request
Body Parameters
email
optional
string
The customer's email
mobile
optional
string
The customer's mobile
reference
optional
string
Any reference of the booking
verification
optional
string
A verification code
Response
200: OK
{
"message": "A SMS has been sent to +447840739436",
"verified": false,
"bookings": []
}
400: Bad Request
{
"error": "No booking found with those details"
}

Your first step is to pick with of the 3 pieces of information you'd like to use to lookup the customer's booking:

  • Email We'll then send a verification code to the customer's email which you'll need to repeat in the request to verify the guest's identity.

  • Mobile We'll then send a verification code to the customer's email which you'll need to repeat in the request to verify the guest's identity.

  • Reference If the booking exists we will then ask for a last name to verify the the guest's identity.

Some example requests for each type are shown below:

Email
Mobile
Reference
Reference with no last name
Email
POST /checkin/lookup HTTP/1.1
Content-Type: application/json
Host: api.ventrata.com/octo
{
"email": "test@example.com"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"message": "A verification email has been sent to test@example.com",
"verified": false,
"bookings": []
}
Mobile
POST /checkin/lookup HTTP/1.1
Content-Type: application/json
Host: api.ventrata.com/octo
{
"mobile": "+447840739430"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"message": "A verification SMS has been sent to +44 (0) 7840 739430",
"verified": false,
"bookings": []
}
Reference
POST /checkin/lookup HTTP/1.1
Content-Type: application/json
Host: api.ventrata.com/octo
{
"reference": "X1P2FY"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"message": "Customer last name required for verification",
"verified": false,
"bookings": []
}
Reference with no last name

The same as reference, except if this time the booking no last name to verify with, the request is immediately verified:

HTTP/1.1 200 OK
Content-Type: application/json
{
"message": null,
"verified": true,
"bookings": [
{
// ... rest of the booking object
"checkedIn": false,
"checkinAvailable": true,
"checkinUrl": "https://website.com/en/checkin?order_token=6d2d9d36-8001-41c6-b716-fccfb5117cf9&booking=1ec5dae4-230e-495d-80b7-0fd5def983f5"
}
]
}

If no booking was found using the email, mobile or reference provided we will instead return a 400 Bad Request response with an appropriate error message.

At this point, provided the request is not already verified, we will have sent a verification code to via Email or SMS, or request a last name. You should prompt the guest to enter this and then repeat the request with the verification parameter provided.

Email
Mobile
Reference
Email
POST /checkin/lookup HTTP/1.1
Content-Type: application/json
Host: api.ventrata.com/octo
{
"email": "test@example.com",
"verification": "815924"
}
Mobile
POST /checkin/lookup HTTP/1.1
Content-Type: application/json
Host: api.ventrata.com/octo
{
"mobile": "+447840739430",
"verification": "057823"
}
Reference
POST /checkin/lookup HTTP/1.1
Content-Type: application/json
Host: api.ventrata.com/octo
{
"reference": "X1P2FY",
"verification": "last_name"
}

Provided that the verification code is correct, we'll then respond with a verified response that looks like this:

{
"message": null,
"verified": true,
"bookings": [
{
// ... rest of the booking object
"checkedIn": false,
"checkinAvailable": true,
"checkinUrl": "https://website.com/en/checkin?order_token=6d2d9d36-8001-41c6-b716-fccfb5117cf9&booking=1ec5dae4-230e-495d-80b7-0fd5def983f5"
}
]
}

We've omitted many of the booking object fields to simply the documentation, but all the fields documented here will be included.

Also note it's possible that the information provided might have returned more than one booking. We'll return them in order of date confirmed (most recent at the top).

get
Checkin Status

https://api.ventrata.com/octo/bookings/:uuid
Returns the booking object
Request
Response
Request
Path Parameters
:uuid
optional
string
The UUID of the booking
Response
200: OK
{
"id": "93c335bc-07b9-4f10-84e2-3df8f2daa257",
"internalName": "Mega Pass",
"reference": null,
"locale": "en",
"timeZone": "America/Los_Angeles",
"allowFreesale": false,
"availabilityRequired": true,
"availabilityType": "OPENING_HOURS",
"deliveryFormats": [
"PDF_URL",
"QRCODE"
],
"deliveryMethods": [
"VOUCHER",
"TICKET"
],
"redemptionMethod": "DIGITAL",
"capabilities": [
{
"id": "ventrata/content",
"revision": 1,
"required": false,
"dependencies": []
},
{
"id": "ventrata/cart",
"revision": 1,
"required": false,
"dependencies": []
},
{
"id": "ventrata/pricing",
"revision": 1,
"required": false,
"dependencies": []
},
{
"id": "ventrata/pickups",
"revision": 1,
"required": false,
"dependencies": []
},
{
"id": "ventrata/offers",
"revision": 1,
"required": false,
"dependencies": [
"ventrata/pricing"
]
},
{
"id": "ventrata/cardPayments",
"revision": 1,
"required": false,
"dependencies": []
},
{
"id": "ventrata/checkin",
"revision": 1,
"required": false,
"dependencies": []
}
],
"options": [
{
"id": "6963c6a3-5d6a-4f15-924c-be2530589422",
"default": false,
"internalName": "Pick 3",
"reference": null,
"restrictions": {
"minUnits": 0,
"maxUnits": null
},
"units": [
{
"id": "adult",
"internalName": "Adult",
"reference": "adult",
"type": "ADULT",
"restrictions": {
"minAge": 0,
"maxAge": 99,
"idRequired": false,
"minQuantity": null,
"maxQuantity": null,
"paxCount": 1,
"accompaniedBy": []
},
"pricingFrom": [
{
"original": 7999,
"retail": 7999,
"net": null,
"currency": "USD"
}
]
},
{
"id": "child",
"internalName": "Child",
"reference": "child",
"type": "CHILD",
"restrictions": {
"minAge": 0,
"maxAge": 99,
"idRequired": false,
"minQuantity": null,
"maxQuantity": null,
"paxCount": 1,
"accompaniedBy": []
},
"pricingFrom": [
{
"original": 5999,
"retail": 5999,
"net": null,
"currency": "USD"
}
]
}
]
},
{
"id": "f39bde2f-2cc0-48c1-b404-af68ce2370ae",
"default": false,
"internalName": "Pick 4",
"reference": null,
"restrictions": {
"minUnits": 0,
"maxUnits": null
},
"units": [
{
"id": "adult",
"internalName": "Adult",
"reference": "adult",
"type": "ADULT",
"restrictions": {
"minAge": 0,
"maxAge": 99,
"idRequired": false,
"minQuantity": null,
"maxQuantity": null,
"paxCount": 1,
"accompaniedBy": []
},
"pricingFrom": [
{
"original": 9999,
"retail": 9999,
"net": null,
"currency": "USD"
}
]
},
{
"id": "child",
"internalName": "Child",
"reference": "child",
"type": "CHILD",
"restrictions": {
"minAge": 0,
"maxAge": 99,
"idRequired": false,
"minQuantity": null,
"maxQuantity": null,
"paxCount": 1,
"accompaniedBy": []
},
"pricingFrom": [
{
"original": 7999,
"retail": 7999,
"net": null,
"currency": "USD"
}
]
}
]
},
{
"id": "f996c316-7541-4cb4-a96f-4a6f08cea70a",
"default": false,
"internalName": "Pick 5",
"reference": null,
"restrictions": {
"minUnits": 0,
"maxUnits": null
},
"units": [
{
"id": "adult",
"internalName": "Adult",
"reference": "adult",
"type": "ADULT",
"restrictions": {
"minAge": 0,
"maxAge": 99,
"idRequired": false,
"minQuantity": null,
"maxQuantity": null,
"paxCount": 1,
"accompaniedBy": []
},
"pricingFrom": [
{
"original": 11499,
"retail": 11499,
"net": null,
"currency": "USD"
}
]
},
{
"id": "child",
"internalName": "Child",
"reference": "child",
"type": "CHILD",
"restrictions": {
"minAge": 0,
"maxAge": 99,
"idRequired": false,
"minQuantity": null,
"maxQuantity": null,
"paxCount": 1,
"accompaniedBy": []
},
"pricingFrom": [
{
"original": 9299,
"retail": 9299,
"net": null,
"currency": "USD"
}
]
}
]
}
],
"defaultCurrency": "USD",
"availableCurrencies": [
"USD"
],
"pickupAvailable": true,
"pickupRequired": true,
"pickupPoints": [
{
"id": "0274665c-f047-42bd-a971-f31fcff24862",
"name": "Cornell Hotel de France - 715 Bush St",
"directions": null,
"latitude": 37.7900142,
"longitude": -122.4091263
},
{
"id": "02f44fe5-c1e1-4173-b557-2f23c68e53ab",
"name": "SF Plaza Hotel - 510 Bush St",
"directions": null,
"latitude": 37.7906443,
"longitude": -122.4058728
},
{
"id": "07a1f50c-da65-4a82-9799-676c58946d15",
"name": "Hilton Financial District - 750 Kearny St",
"directions": "Meet at Hilton Fincial District at 750 Kearny St.",
"latitude": 37.7952284,
"longitude": -122.4040729
},
],
"checkedIn": false,
"checkinAvailable": true,
"checkinUrl": "https://website.com/en/checkin?order_token=6d2d9d36-8001-41c6-b716-fccfb5117cf9&booking=1ec5dae4-230e-495d-80b7-0fd5def983f5"
}

With this capability enabled we'll add checkedIn checkinAvailable and checkinUrl to each booking. A sample of just these changes are:

{
// ... rest of the booking object
"checkedIn": false,
"checkinAvailable": true,
"checkinUrl": "https://website.com/en/checkin?order_token=6d2d9d36-8001-41c6-b716-fccfb5117cf9&booking=1ec5dae4-230e-495d-80b7-0fd5def983f5"
}

Field

Definition

checkedIn

Whether the booking is checked in already

checkinAvailable

If true then check-in is available for this booking and you can offer it to the guest. We strongly encourage you to do this as it will speed up entry for the guest before they arrive.

checkinUrl

This is the URL to send the guest to complete their checkin. This value will be set if checkinAvailable is true otherwise it will be null