Wheelhouse Pricing API (1.0)

Download OpenAPI specification:Download

Typical Execution Flow

Image

Authentication

IntegrationApiKey

All integrations will be given an integration API key. Contact us to get one.

Security Scheme Type API Key
Header parameter name: X-Integration-API-Key

UserApiKey

Requests to the API must be made in a specific User's context. When a user is registered, we will return an API key for that specific user.

BOTH API key headers are required to make pricing API calls with the exception being that the new end user creation endpoint only requires IntegrationApiKey.

Security Scheme Type API Key
Header parameter name: X-User-API-Key

Rate Limit

By default, our API is limited to 100 requests / minute. This can be adjusted so please reach out to us with any questions.

Web Hook Callbacks

We do support webhook callbacks to alert API users when a listing's price recommndations have been updated or when a front end user requested a calendar refresh for a listing for which they have granted access to an SS API customer. Please reach out to us directly to inquire about this feature.

Users

Registering each end user is a requirement of using our API. It allows us to isolate billing information and may enable future APIs or integrations.

Once registered, each user will receive a specific API key that must be included in requests for that user's listings.

Additionally, if you have a customer who already has a Wheelhouse account with linked listing, the user can grant you API access to their listings by generating a User API token here: https://www.usewheelhouse.com/u/account/api_token. Once they have created this token, they give it to you and you can use it in the X-User-API-Key header to retrieve and update their listings and pull price recommendations.

Create a new end user

Request Body schema: application/json

A user

first_name
required
string

The user's first name

last_name
required
string

The user's last name

email
required
string

The email contact for this user

phone
required
string

The phone number for this user

integrators_user_id
required
string

The unique id used to identify this user within the integration partner

integrators_affiliate_name
string

The name of the affiliate if the end user is through an affiliate. Typically not required.

integrators_affiliate_user_id
string

The unique id used to identify this user within the integration partner. Typically not required.

password
string

Password for accessing Wheelhouse website. If not specified, user will not have access to Wheelhouse website.

allow_marketing_emails
boolean

Whether we are allowed to send marketing emails to the customer.

Responses

Request samples

Content type
application/json
{
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "phone": "string",
  • "integrators_user_id": "string",
  • "integrators_affiliate_name": "string",
  • "integrators_affiliate_user_id": "string",
  • "password": "string",
  • "allow_marketing_emails": true
}

Response samples

Content type
application/json
{
  • "first_name": "string",
  • "last_name": "string",
  • "email": "string",
  • "user_api_key": "string"
}

Listings

Listing information drives the baseline of our pricing recommendations. The more detail you can provide, the better our recommendations will be.

Retrieve all listings associated with a user.

query Parameters
offset
integer

The number of items to skip before starting to collect the result set. (Optional)

page
integer

The page of listings to retrieve. (Optional)

per_page
integer

Number of listings per page. Default is 50. (Optional)

Responses

Create or update a listing

Request Body schema: application/json

A listing

base_min_night_stay
integer >= 0

This sets a floor for any minimum night stays that we set.

currency
required
string

The ISO-4217 currency code this listing uses for pricing.

object (channel_ids)

A mapping of supported channel names to the channel's listing id. We use these to dedupe listings and it improves our demand modeling.

id
required
string

The PMS's unique identifier.

title
string

The listing's name to show in UI.

owner_name
string

The listing owner's name to show in UI.

unit_names
string

Used for hotel room or "unit type" inventory. This should be a comma delimited list of unit names available under this listing. If omitted, we assume there is only 1 unit. This enables scarcity pricing.

description
string

The listing's description

nickname
string

Internal listing name fetched from API

created_at
string <date-time>

The datetime the listing was created on your platform (ISO-8601).

required
object or object or object (location)

Attributes describing a location with enough accuracy to identify a postal code. Prefer more precision.

num_bathrooms
required
number >= 0

The number of bathrooms included in the unit. e.g. 1 or 1.5

num_bedrooms
required
integer >= 0

The number of bedrooms included in the unit. Whole numbers only.

room_type
required
string
Enum: "private" "shared" "entire_place" "apartment" "hotel_room"

One of 'private', 'shared', 'entire_place', 'apartment', 'hotel_room'

property_type
string

Description of the property this rental is in.

is_active
boolean

Whether the listing is active and valid on the channel.

required
object (listing_preference)

Settable attributes on the listing that help us compare apples to apples

object (meta)

Container for additional non-required attributes that will help price this listing

Responses

Request samples

Content type
application/json
{
  • "base_min_night_stay": 0,
  • "currency": "string",
  • "channel_ids": {
    },
  • "id": "string",
  • "title": "string",
  • "owner_name": "string",
  • "unit_names": "string",
  • "description": "string",
  • "nickname": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "location": { },
  • "num_bathrooms": 0,
  • "num_bedrooms": 0,
  • "room_type": "private",
  • "property_type": "string",
  • "is_active": true,
  • "listing_preferences": {
    },
  • "meta": {
    }
}

Response samples

Content type
application/json
{
  • "base_min_night_stay": 0,
  • "currency": "string",
  • "channel_ids": {
    },
  • "id": "string",
  • "title": "string",
  • "owner_name": "string",
  • "unit_names": "string",
  • "description": "string",
  • "nickname": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "location": { },
  • "num_bathrooms": 0,
  • "num_bedrooms": 0,
  • "room_type": "private",
  • "property_type": "string",
  • "is_active": true,
  • "listing_preferences": {
    },
  • "meta": {