---
title: "CreateProperty"
method: POST
path: "/CreateProperty"
tags: ["Content"]
---

# CreateProperty

`POST /CreateProperty`

Can be used to create a new property (including rooms) on your OTA based on
the details that we have in Cloudbeds (eg. property name, address, images,
room details, etc). This call needs to be activated explicitly from our side
before you can use it. Please talk to your Cloudbeds contact before
implementing this call!

Rate plan information was added at a later date and is only transmitted for
new build-to-us implementations or if the feature has been enabled
explicitly. Note that every room has a default rate plan, and the ID
(even across different rooms) is always `0`.

Once approved please provide us with your terms & conditions for us to
display to a property. You should provide them as a HTML file with only
basic styling.

We cannot guarantee that all of the following request fields will always be
filled in, as many are optional within Cloudbeds.

## Request body

- object
  - `mya_property_id` integer, required — Property ID on the Cloudbeds channel manager
  - `ota_property_id` string, required — Username, login or property ID on the OTA
  - `ota_property_password` string, required — Password for property on your OTA. In case the OTA does not use passwords this will be an empty string.
  - `ota_property_sub_id` string, required — Property ID on the OTA, if OTA supports multiple properties under one `ota_property_id`/`ota_property_password` combination. See `GetSubProperties` for more details.
  - `guid` string, required — Request reference ID, used for debugging and support requests.
  - `shared_secret` string, required — Authentication between the OTA and the channel. Identical for all requests. Not to be shared with customers.
  - `ota_cid` string, required — OTA ID as given by Cloudbeds
  - `verb` 'CreateProperty', required
  - `Property` object, required
    - `name` string, required — Property name
    - `country` string, required — 2-letter ISO 3166-1 alpha-2 country code. This is the country the property is located in.
    - `currency` string, required — 3-letter ISO 4217 currency code. This is the default currency of the property.
    - `timezone` string, required — Timezone the property is located in. Check (this document)[https://apidocs.myallocator.com/timezone-list.html] for valid values.
    - `email_default` string, email, required — The default property email address. Defaults to default user email.
    - `email_channel_booking` string, email, required — The email address used when forwarding channel booking emails. Defaults to default user email.
    - `email_contact` string, email, required — The email address of the contact person responsible for the property creation.
    - `default_min_los` integer, required — Default minimum length of stay setting for this property. See the description for `min_los` in the `ARIUpdate` call for more details on this restriction.
    - `default_max_los` integer, required — Default maximum length of stay setting for this property. See the description for `max_los` in the `ARIUpdate` call for more details on this restriction. `0` means there is no restriction.
    - `breakfast` '' | 'IN' | 'EX', required — Default breakfast setting for the property. Empty string means no breakfast is available, `IN` means breakfast is included in the day rates and `EX` means breakfast is excluded from day rates. Note that this setting is likely not very useful and too broad.
    - `weekend` string[], required — List of weekdays that the property considers to be their weekend. Note that this setting is likely not very useful.
    - `firstname` string, required — First name of property owner/manager.
    - `lastname` string, required — First name of property owner/manager.
    - `address` object, required — Address of the property.
      - `address_line_1` unknown
      - `address_line_2` unknown
      - `city` unknown
      - `zip` unknown
      - `state` unknown
      - `country` string, required — 2-letter ISO 3166-1 alpha-2 country code. This is the country the property is located in. Same as `country` on the top level.
      - `website` unknown
      - `lon` unknown
      - `lat` unknown
      - `phone` unknown
      - `fax` unknown
    - `business_contact` object, required — Contact information for invoicing
      - `main_contact_name` unknown
      - `company_name` unknown
      - `account_manager_name` unknown
      - `vat_id` unknown
      - `address_line_1` unknown
      - `address_line_2` unknown
      - `state` unknown
      - `zip` unknown
      - `city` unknown
      - `country` string, required — 2-letter ISO 3166-1 alpha-2 country code. This is the country the the company or property owner is located in.
    - `images` object[], required — List of property-level images
      - `url` string — Publicly accessible URL to the full resolution image
      - `description` string — Description of the image to show on a channel (max. 2000 characters)
      - `sort_order` integer — Number indicating the displayed sort order. Lower numbers means further left/top. Defaults to 0.
    - `rooms` object[], required — List of rooms configured for the property
      - `mya_room_id` integer, required — Room ID on the Cloudbeds channel manager.
      - `units` integer, required — How many rooms of this type there are.
      - `beds` integer, required — Number of people that can stay in this room.
      - `max_adults` integer — Maximum number of adults that can stay in this room.
      - `max_children` integer — Maximum number of children that can stay in this room.
      - `dormitory` boolean, required — If `true` it's a dormitory (shared room), `false` for private rooms.
      - `gender` 'MALE' | 'FEMALE' | 'MIXED' — Gender. Required for dormitory
      - `label` string, required — Short string that describes the room for displaying purposes.
      - `description` unknown, required
      - `images` object[], required — List of room-level images.
        - `url` string, required — Publicly accessible URL to the full resolution image
        - `description` unknown, required
        - `sort_order` integer, required — Number indicating the displayed sort order. Lower numbers means further left/top. Defaults to 0.
      - `rateplans` object[] — List of rate plans configured for the room
        - `mya_rate_id` integer, required — Rate plan ID on the Cloudbeds channel manager. Every room has a default rate plan, and the ID (even across different rooms) is always `0`. Any non-default rate plans have a higher ID.
        - `label_public` unknown, required
        - `label_private` unknown, required
        - `meal_codes` integer[] — Combination (list) of meal codes that are available for this rate plan. `1` for All-Inclusive, `19` for Breakfast, `21` for Lunch, `22` for Dinner
        - `refundable` boolean — If present specifies if rate plan is refundable
        - `refundable_until_days` integer — Minimal number of days before check-in required for a rate plan to be refundable
    - `property_description` unknown
    - `check_in_time` unknown
    - `check_out_time` unknown
    - `i18n` object — Localized values for supported fields. Keys are IETF locale codes (e.g. `en_US`, `pt_BR`). Each locale maps to an object containing translated field values. Only present if localized data exists for the property.
    - `taxes` TaxInfo[] — Property taxes and fees.
      - `id` integer, required — Tax/fee ID in Cloudbeds' system
      - `is_fee` boolean — `true` if it's a fee, otherwise it's a tax.
      - `is_inclusive` boolean, required — `true` when tax/fee included in rate.
      - `is_per_night` boolean, required — `true` when tax/fee is per night, otherwise per stay.
      - `is_percent` boolean, required — `true` when amount represents percentage, otherwise absolute value.
      - `is_refundable` boolean, required — For example, refundable damage deposit fee will set this `true`.
      - `amount` number — Tax/fee amount. Either amount in currency or percent, depending on `is_percent` field. For example 20.5 can mean 20.5% or $20.5. Only one element either `amount` or `amounts` is supposed to be active, not both.
      - `amounts` object[] — Array of tax/fee amounts. Multiple amounts may apply at the same time depending on the conditions for each item. Only one element either `amount` or `amounts` is supposed to be active, not both.
        - `amount` number, required — Tax/fee amount. Either amount in currency or percent, depending on is_percent field. For example 20.5 can mean 20.5% or $20.5.
        - `conditions` object[] — Array of conditions that determine if this amount will be applied.
          - `min_start` string — Amount of parameter above which tax is applied. For example, if `condition_parameter` is "total-price" and here we have 200, this means that tax/fee is applied when total price is more or equal 200.
          - `max_end` string — Amount of parameter below which tax is applied. For example, if `condition_parameter` is "total-price" and here we have 200, this means that tax/fee is applied when total price is less or equal 200.
          - `one_of` string[] — List of values of a parameter. For example, if `condition_parameter` is "day-of-week" then ["SAT","SUN"] might be here.
          - `max_end_inclusive` boolean — Whether the `max_end` parameter is inclusive (less or equal) or not (strictly less).
          - `min_start_inclusive` boolean — Whether the `min_start` parameter is inclusive (greater or equal) or not (strictly greater).
          - `condition_parameter` 'adult-age' | 'booking-date' | 'checkin-date' | 'checkout-date' | 'child-age' | 'date-in-range' | 'day-of-week' | 'length-of-stay' | 'length-of-stay-progressive' | 'length-of-stay-retroactive' | 'night-number' | 'nightly-rate' | 'nights-booked-in-advance' | 'number-of-guests' | 'number-of-nights' | 'number-of-pets' | 'payment-type' | 'product-code-id' | 'rate-type' | 'room-id' | 'stay-dates-intersect' | 'total-price', required — Parameter that determines whether this tax/fee will be applied or not.
      - `category` 'municipal_tax' | 'occupancy_tax' | 'other_fee' | 'other_tax' | 'resort_tax' | 'sales_tax' | 'service_charge' | 'tourism_tax' | 'vat', required — Tax category.
      - `code` string — Issued by federal government tax/fee code.
      - `external_id` string — Optional custom field to store an external system ID. Not guaranteed to be unique.
      - `name` string, required — Tax/fee name.
      - `applies_per` 'adult' | 'all-adults' | 'booking' | 'booking-external-item' | 'child' | 'children' | 'guest' | 'pet' | 'pets' | 'rateplan' | 'room' | 'room-type' | 'service', required — To which entity tax/fee is applied.
      - `conditions` object[] — Array of conditions that determine if this amount will be applied.
        - `min_start` string — Amount of parameter above which tax is applied. For example, if `condition_parameter` is "total-price" and here we have 200, this means that tax/fee is applied when total price is more or equal 200.
        - `max_end` string — Amount of parameter below which tax is applied. For example, if `condition_parameter` is "total-price" and here we have 200, this means that tax/fee is applied when total price is less or equal 200.
        - `one_of` string[] — List of values of a parameter. For example, if `condition_parameter` is "day-of-week" then ["SAT","SUN"] might be here.
        - `max_end_inclusive` boolean — Whether the `max_end` parameter is inclusive (less or equal) or not (strictly less).
        - `min_start_inclusive` boolean — Whether the `min_start` parameter is inclusive (greater or equal) or not (strictly greater).
        - `condition_parameter` 'adult-age' | 'booking-date' | 'checkin-date' | 'checkout-date' | 'child-age' | 'date-in-range' | 'day-of-week' | 'length-of-stay' | 'length-of-stay-progressive' | 'length-of-stay-retroactive' | 'night-number' | 'nightly-rate' | 'nights-booked-in-advance' | 'number-of-guests' | 'number-of-nights' | 'number-of-pets' | 'payment-type' | 'product-code-id' | 'rate-type' | 'room-id' | 'stay-dates-intersect' | 'total-price', required — Parameter that determines whether this tax/fee will be applied or not.
      - `tax_basis_includes_fees` object[]
        - `fee_id` integer, required — ID of a fee
      - `calculation_basis` 'fees' | 'fees-per-night' | 'rate' | 'rate-and-fees' | 'rate-and-fees-per-night' | 'rate-per-night' — To what value percentage will be applied in order to calculate tax amount in currency. Only applicable if `is_percent` is `true`.

## Response `200`

CreateProperty

- union
  - object
    - `success` true, required
    - `ota_property_id` string, required — New property ID on the OTA
    - `ota_property_password` string — If the OTA uses passwords this will authenticate the property on the OTA. We'll automatically save the password.
    - `ota_property_sub_id` string — If the channel supports multiple properties under one account, this sub-property ID will be saved and included in future API calls for this property.
    - `instruction_text` string — The instruction text will be displayed to the hotel after the property creation is complete. We will escape any HTML characters, so please only return plain text. You can include linebreaks (`\n`) which will be converted into actual line breaks for HTML display.
    - `instruction_link` string — If an instruction link is provided we will display the clickable link below the instruction text (if present).
    - `room_mappings` object[] — Returning this field will help Cloudbeds to automatically map the OTA room IDs to the Cloudbeds channel manager room IDs. This is required to automatically send a full refresh after successful property creation. We strongly recommend that you return this field. If you do not support rate plans you do not need to return `ota_rate_id` and `mya_rate_id`.
      - `ota_room_id` string, required — New OTA room ID
      - `mya_room_id` integer, required — Room ID on the Cloudbeds channel manager
      - `ota_rate_id` string — New OTA rate plan ID
      - `mya_rate_id` integer — Rate plan ID on the Cloudbeds channel manager
  - ResponseError
    - `errors` object[], required — Array of error objects.
      - `id` integer, required — Error code. Check the "Error Codes" section of the specification for valid codes.
      - `msg` string — Optional error string to give more details about the error. Myallocator localises errors into different langauges, so this field is generally ignored and only useful for debugging.
    - `success` false, required

---

[API](https://skmtc.net/cloudbeds/apis/cloudbeds-api.md) · [All operations](https://skmtc.net/cloudbeds/apis/cloudbeds-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cloudbeds/cloudbeds-api/revisions/2faa857793e8/schema)
