Skip to content

Xenia Connect API (1.0.1)

Situ's API for seamless integration with Situ's workflow.

Download OpenAPI description
Overview
Situ Technical Support
Languages
Servers
Mock server
https://docs.xenia.staysitu.com/_mock/xenia-connect/spec/
Production
https://api-xenia.staysitu.com/
Sandbox
https://api-xenia-cisandbox.staysitu.com/

Bookings

Bookings are the next step in the booking journey after an enquiry has been created. Bookings are created when a quote is accepted by the client.

Webhooks

Enquiries

Enquiries are the start point in the booking journey. Providing as much information as possible upfront about an enquiry will increase its conversion rate and reduce touchpoints. We are constantly looking for what we can add to our set of information to make our process easier for everybody. If you have any suggestions get in contact!

OperationsWebhooks

Quotes

Quotes are the 2nd stage of the booking journey. Quotes are created when a specialist has found properties that match the enquiry requirements and send shortlisted properties to the client.

OperationsWebhooks

Get a paginated list of quotes

Request

Get a paginated list of quotes, optionally filtered by Situ enquiry id or the external id provided when calling the create enquiry endpoint.

Security
apiKey
Query
cursorstring or null

Optional cursor used to pull the next or previous page for pagination.

Default "null"
Example: cursor=MTIzZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDAwfDIwMjQtMDctMDFUMTQ6MzA6MDBafE5leHQ=
pageSizeinteger[ 1 .. 100 ]

The maximum number of items to return.

Default 10
Example: pageSize=10
orderstring(paginationOrder)

Indicates whether to order the items in ascending or descending order.

Default "desc"
Enum"desc""asc"
Example: order=desc
sortstring(quoteListSortField)

Used in conjunction with the order parameter and determines which field we're ordering by.

Default "createdAt"
Enum"createdAt""updatedAt"
Example: sort=createdAt
xeniaEnquiryReferencestring or null

Optionally filter quotes by the xenia enquiry ID.

Default "null"
Example: xeniaEnquiryReference=R4E2F3A4
enquiryExternalIdstring or null(enquiryExternalIdFilter)[ 3 .. 255 ] characters

Optionally filter quotes by the client supplied external enquiry ID.

Default "null"
Example: enquiryExternalId=e234abcef
curl -i -X GET \
  'https://docs.xenia.staysitu.com/_mock/xenia-connect/spec/external-api/v1/quotes?cursor=MTIzZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDAwfDIwMjQtMDctMDFUMTQ6MzA6MDBafE5leHQ%3D&pageSize=10&order=desc&sort=createdAt&xeniaEnquiryReference=R4E2F3A4&enquiryExternalId=e234abcef' \
  -H 'X-Api-Key: YOUR_API_KEY_HERE'

Responses

Paginated list of quotes.

Bodyapplication/json
dataArray of objects(quoteResponse)required

Array of quotes.

data[].​idstringrequired

The unique identifier of the quote.

Example: "QT-2024-005678"
data[].​xeniaEnquiryReferencestring(enquiryXeniaReferenceId)required

Xenia's reference for the enquiry.

Example: "R4E2F3A4"
data[].​clientEnquiryReferencestring or nullrequired

The client's reference for the enquiry.

Example: "CLIENT-REF-123"
data[].​createdAtstring(date-time)required

When the quote was created.

Example: "2024-07-01T14:30:00Z"
data[].​updatedAtstring(date-time)required

When the quote was last updated.

Example: "2024-07-01T15:45:00Z"
data[].​invalidatedAtstring or null(date-time)required

When the quote was invalidated.

Example: "2024-07-02T10:30:00Z"
data[].​statestring(quoteState)required

The current state of the quote. An active quote can be booked, an invalidated quote cannot be booked. If a new quote is sent out, all existing quotes will become invalidated.

Enum"ACTIVE""INVALIDATED"
Example: "ACTIVE"
data[].​descriptionstring or nullrequired

The quote description. This is the same data if an email is also sent out.

Example: "Quote for 3-night stay in London"
data[].​itemsArray of objects(quoteItem)required

The quote items (properties and pricing).

data[].​items[].​idstringrequired

The unique id of the quote option item.

Example: "4e67c3eb-912a-4da2-91e9-dba4d8e2437e"
data[].​items[].​propertyobject(property)required

Property details for the quote item.

data[].​items[].​property.​propertyNamestringrequired

The name of the property.

Example: "The Savoy Hotel"
data[].​items[].​property.​propertyUrlstring(uri)^https:\/\/\S+$required

Link to building.

Example: "https://core.xenia.staysitu.com/properties/789"
data[].​items[].​property.​locationMapLinkstring(uri)<= 1000 characters^https:\/\/\S+$required

Link to google maps.

Example: "https://maps.app.goo.gl/ob21JeqFf6rdkLif7"
data[].​items[].​property.​overviewstring or null

Overview of the property.

Example: "A luxurious hotel in the heart of London"
data[].​items[].​property.​coordinatesobject(coordinates)

Latitude/Longitude coordinates

data[].​items[].​property.​locationOverviewstring or null

Overview of the property location.

Example: "Located in Westminster, near major attractions"
data[].​items[].​property.​additionalDetailsstring or null

Additional details about the property.

Example: "24-hour concierge service, spa facilities"
data[].​items[].​property.​termsOfStaystring or null

Terms and conditions for the stay.

Example: "Check-in after 3 PM, check-out before 11 AM. No smoking."
data[].​items[].​property.​imagesArray of objects(image)

Array of property images.

data[].​items[].​property.​unitsArray of objects(unit)

Array of unit details for the property.

data[].​items[].​property.​addressobject(address)

Address information.

data[].​items[].​property.​featuresArray of objects(feature)

Array of property features.

data[].​items[].​distanceFromEnquiryLocationobject or null(distanceFromEnquiryLocation)

Distance information from the search location.

data[].​items[].​bookedboolean

Indicates whether the quote item is booked.

Example: false
data[].​bookedQuoteItemobject or null(bookedQuoteItem)required

Information about the quote item that selected for booking. Null if booking is not yet confirmed.

data[].​bookedQuoteItem.​bookingIdstringrequired

The unique identifier of the booking.

Example: "BK-2024-123456"
data[].​bookedQuoteItem.​quoteItemIdstringrequired

The unique identifier of the quote item that was booked.

Example: "4e67c3eb-912a-4da2-91e9-dba4d8e2437e"
data[].​bookedQuoteItem.​createdAtstring(date-time)required

When the booking was created.

Example: "2024-07-02T09:30:00Z"
paginationobject(pagination)required

Pagination navigation details

pagination.​nextstring or null

Link to next page of results

Example: "/v1/enquiries?cursor=MmFhZjkwMjktOWFhYS00OGM0LWFlNDgtZWI1ZDliMWIzOTEyfDIwMjUtMDctMDlUMTQ6MDU6MzYuNzQ0MTUzMCswMDowMA==&isBackwards=false&pageSize=10"
pagination.​previousstring or null

Link to previous page of results

Example: "/v1/enquiries?cursor=MmFhZjkwMjktOWFhYS00OGM0LWFlNDgtZWI1ZDliMWIzOTEyfDIwMjUtMDctMDlUMTQ6MDU6MzYuNzQ0MTUzMCswMDowMA==&isBackwards=true&pageSize=10"
Response
application/json
{ "data": [ {} ], "pagination": { "next": "/external-api/v1/quotes?cursor=NWZhNGJlMTEtZjZhYy00YmEzLTlhZmItNjRjNTJjOTQyMGJhfDIwMjQtMDctMDFUMTU6NDU6MDBafE5leHQ=&pageSize=10&order=DESCENDING&sort=createdAt", "previous": null } }

Quote CreatedWebhook

Request

This event payload is sent to the eligible registered webhooks when a new quote is created.

Headers
X-Signaturestringrequired

HMAC-SHA256 signature of the request body using the webhook secret key. Use this to verify the authenticity of the webhook payload.

Example: dGhpcyBpcyBhIHNhbXBsZSBzaWduYXR1cmU=
Bodyapplication/jsonrequired
eventTypestring(webhookEvent)

Supported webhook events.

Enum"ENQUIRY.CREATED""ENQUIRY.SPECIALIST_ASSIGNED""ENQUIRY.SHORTLISTING""ENQUIRY.CLOSED""ENQUIRY.REOPENED""ENQUIRY.QUOTED""QUOTE.CREATED""QUOTE.INVALIDATED""BOOKING.PENDING""BOOKING.CLIENT_CONFIRMATION_DETAILS_SENT"
Example: "ENQUIRY.CREATED"
eventIdstring(uuid)

Unique ID of the event. This can be used as the idempotent key.

Example: "123e4567-e89b-12d3-a456-426614174000"
createdAtstring(date-time)

When the event was created within Xenia's system.

Example: "2026-01-01T15:12:56Z"
dataobject(quoteWebhookEventData)

The data object for a booking event.

application/json
{ "eventType": "QUOTE.CREATED", "eventId": "123e4567-e89b-12d3-a456-426614174000", "createdAt": "2026-01-01T15:12:56Z", "data": { "externalId": "QT-2024-005678", "invalidatedAt": null, "createdAt": "2026-01-01T15:10:13Z", "enquiry": {} } }

Responses

The webhook was successfully received, Xenia will not try to process this again.

Quote InvalidatedWebhook

Request

This event payload is sent to the eligible registered webhooks when a quote is invalidated.

Headers
X-Signaturestringrequired

HMAC-SHA256 signature of the request body using the webhook secret key. Use this to verify the authenticity of the webhook payload.

Example: dGhpcyBpcyBhIHNhbXBsZSBzaWduYXR1cmU=
Bodyapplication/jsonrequired
eventTypestring(webhookEvent)

Supported webhook events.

Enum"ENQUIRY.CREATED""ENQUIRY.SPECIALIST_ASSIGNED""ENQUIRY.SHORTLISTING""ENQUIRY.CLOSED""ENQUIRY.REOPENED""ENQUIRY.QUOTED""QUOTE.CREATED""QUOTE.INVALIDATED""BOOKING.PENDING""BOOKING.CLIENT_CONFIRMATION_DETAILS_SENT"
Example: "ENQUIRY.CREATED"
eventIdstring(uuid)

Unique ID of the event. This can be used as the idempotent key.

Example: "123e4567-e89b-12d3-a456-426614174000"
createdAtstring(date-time)

When the event was created within Xenia's system.

Example: "2026-01-01T15:12:56Z"
dataobject(quoteWebhookEventData)

The data object for a booking event.

application/json
{ "eventType": "QUOTE.INVALIDATED", "eventId": "123e4567-e89b-12d3-a456-426614174000", "createdAt": "2026-01-01T16:45:30Z", "data": { "externalId": "QT-2024-005678", "invalidatedAt": "2026-01-01T16:45:30Z", "createdAt": "2026-01-01T15:10:13Z", "enquiry": {} } }

Responses

The webhook was successfully received, Xenia will not try to process this again.

Sandbox Operations

Operations that only exist within the sandbox environment. These are not available in production. You can use these operations to trigger state changes in the sandbox environment to test your webhooks and other operations.

Operations

Webhook Operations

Manage your webhooks with this set of operations. The maximum limit for webhooks per environment is 5. If you need more than this please contact us.

Operations