> For the complete documentation index, see [llms.txt](https://docs.channex.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.channex.io/api-v.1-documentation/hotels-collection/get-property-api.md).

# Get Property API

## Retrieve a property

> Retrieve a property by its identifier.

```json
{"openapi":"3.1.0","info":{"title":"Channex.io — Properties","version":"0.0.0"},"tags":[{"name":"Properties","description":"Manage Properties — the physical premises you sell: hotels, motels, lodges, cabins, chalets, apartments and the like. Each property has its own address and details, so create one property per premises rather than combining several into a single entry."}],"servers":[{"url":"https://app.channex.io/api/v1","description":"Production server","variables":{}},{"url":"https://staging.channex.io/api/v1","description":"Staging server","variables":{}}],"security":[{"UserApiKeyAuth":[]}],"components":{"securitySchemes":{"UserApiKeyAuth":{"type":"apiKey","in":"header","name":"user-api-key","description":"API key for programmatic access, sent in the `user-api-key` header."}},"schemas":{"Common.Scalars.id":{"type":"string","format":"uuid"},"Properties.PropertyResource":{"type":"object","required":["type","id","attributes","relationships"],"properties":{"type":{"type":"string","enum":["property"]},"id":{"$ref":"#/components/schemas/Common.Scalars.id"},"attributes":{"$ref":"#/components/schemas/Properties.Property"},"relationships":{"$ref":"#/components/schemas/Properties.PropertyRelationships"}},"description":"A property as returned by the single-property endpoints."},"Properties.Property":{"type":"object","required":["id","is_active","expected_removal_date","acc_channels_count","property_category","max_count_of_room_types","max_count_of_rate_plans","max_count_of_occupancies","max_count_of_users","title","currency","email","phone","zip_code","country","state","city","address","longitude","latitude","timezone","property_type","logo_url","website","hotel_policy_id","default_cancellation_policy_id","default_tax_set_id","location_precision","min_stay_type","settings","content"],"properties":{"id":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.id"}],"description":"Unique property identifier."},"is_active":{"type":"boolean","description":"Whether the property is active."},"is_demo":{"type":"boolean","enum":[true],"description":"Marks a demo property, pre-filled with sample data.\nPresent on a demo property only — a property created through `POST /properties`\ncarries no such attribute."},"expected_removal_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Date the property is expected to be removed, or null."},"acc_channels_count":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.nonNegativeInt"}],"description":"Count of connected channels. Read-only aggregate."},"property_category":{"anyOf":[{"$ref":"#/components/schemas/Properties.PropertyCategory"},{"type":"null"}],"description":"Classification category of the property, or null when it is not set. Read-only."},"max_count_of_room_types":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.nonNegativeInt"}],"description":"Maximum number of room types allowed. Read-only limit."},"max_count_of_rate_plans":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.nonNegativeInt"}],"description":"Maximum number of rate plans allowed. Read-only limit."},"max_count_of_occupancies":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.nonNegativeInt"}],"description":"Maximum number of occupancy options allowed. Read-only limit."},"max_count_of_users":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.nonNegativeInt"}],"description":"Maximum number of users allowed. Read-only limit."},"title":{"type":"string","maxLength":255,"description":"Property title, as shown in the system."},"currency":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.currency"}],"description":"Default currency for nested entities, and the property's default currency for connected third-party services."},"email":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.email"},{"type":"null"}],"description":"Contact email. Passed to connected third-party services as the property's contact email. Optional at setup, required before connecting a 3rd-party service."},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"maxLength":32,"description":"Contact phone. Digits, spaces, brackets and special characters; max 32 chars. Passed to connected third-party services as the property's contact phone. Optional at setup, required before connecting a 3rd-party service."},"zip_code":{"anyOf":[{"type":"string"},{"type":"null"}],"maxLength":32,"description":"ZIP/postal code (max 32 chars). Part of the contact address passed to connected third-party services. Optional at setup, required before connecting a 3rd-party service."},"country":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.country"},{"type":"null"}],"description":"Country of the property. ISO 3166-1 alpha-2 country code. Part of the contact address passed to connected third-party services. Optional at setup, required before connecting a 3rd-party service."},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"maxLength":255,"description":"State/region (max 255 chars). Part of the contact address passed to connected third-party services. Optional at setup, required before connecting a 3rd-party service."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"maxLength":255,"description":"City (max 255 chars). Part of the contact address passed to connected third-party services. Optional at setup, required before connecting a 3rd-party service."},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"maxLength":255,"description":"Street address (max 255 chars). Part of the contact address passed to connected third-party services. Optional at setup, required before connecting a 3rd-party service."},"longitude":{"anyOf":[{"type":"string"},{"type":"null"}],"maxLength":12,"description":"Longitude as a decimal string in the range −180..180 (max 7 decimals). Derived from the address when the property is saved without one. Part of the property coordinates passed to connected third-party services. Optional at setup, required before connecting a 3rd-party service."},"latitude":{"anyOf":[{"type":"string"},{"type":"null"}],"maxLength":11,"description":"Latitude as a decimal string in the range −90..90 (max 7 decimals). Derived from the address when the property is saved without one. Part of the property coordinates passed to connected third-party services. Optional at setup, required before connecting a 3rd-party service."},"timezone":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.timezone"},{"type":"null"}],"description":"Time zone of the property, or null when it is not set. Sending `null` clears it.\n\nTime zone name from the IANA Time Zone Database (the \"tz database\"), published at\nhttps://www.iana.org/time-zones — background at\nhttps://en.wikipedia.org/wiki/Tz_database. See the `/timezones` endpoint for the\nvalues this API accepts."},"property_type":{"anyOf":[{"$ref":"#/components/schemas/Properties.PropertyType"},{"type":"null"}],"description":"Type of the property, or null when it is not set. Sending `null` clears it.\n\n**Set this value — it affects billing. Use `hotel` for a hotel and `apartment`\nfor a vacation rental.**"},"logo_url":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}],"description":"URL to the property logo; copied into Channex media storage."},"website":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}],"description":"URL to the property website."},"hotel_policy_id":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.id"},{"type":"null"}],"description":"UUID of the property's hotel policy, or null. Sending `null` clears it."},"default_cancellation_policy_id":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.id"},{"type":"null"}],"description":"UUID of the property's default cancellation policy, or null."},"default_tax_set_id":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.id"},{"type":"null"}],"description":"UUID of the property's default tax set, or null."},"location_precision":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.nonNegativeInt"},{"type":"null"}],"description":"Location precision, or null."},"min_stay_type":{"allOf":[{"$ref":"#/components/schemas/Properties.MinStayType"}],"description":"Simplified Min Stay restriction handling for the property. Mirrors `settings.min_stay_type`: writing either attribute updates both.","deprecated":true},"settings":{"$ref":"#/components/schemas/Properties.PropertySettings"},"content":{"$ref":"#/components/schemas/Properties.PropertyContent"}},"description":"A property (hotel, apartment, etc.) as returned in responses: every attribute is present."},"Common.Scalars.nonNegativeInt":{"type":"integer","format":"int32","minimum":0},"Properties.PropertyCategory":{"type":"string","enum":["camping","hotel","vacation_rental"],"description":"Classification category of the property."},"Common.Scalars.currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 alphabetic currency code. See the `/currencies` endpoint for supported values."},"Common.Scalars.email":{"type":"string","format":"email"},"Common.Scalars.country":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code."},"Common.Scalars.timezone":{"type":"string","description":"Time zone name from the IANA Time Zone Database (the \"tz database\"), published at\nhttps://www.iana.org/time-zones — background at\nhttps://en.wikipedia.org/wiki/Tz_database. See the `/timezones` endpoint for the\nvalues this API accepts."},"Properties.PropertyType":{"type":"string","enum":["apart_hotel","apartment","boat","camping","capsule_hotel","chalet","country_house","farm_stay","guest_house","holiday_home","holiday_park","homestay","hostel","hotel","inn","lodge","motel","resort","riad","ryokan","tent","villa"],"description":"Type of property. Affects billing — set `hotel` for hotels or `apartment` for vacation rentals."},"Properties.MinStayType":{"type":"string","enum":["both","arrival","through"],"description":"Simplified handling of Min Stay restrictions. `both` keeps Min Stay Arrival and Min Stay Through separate. Set `arrival` or `through` when a system works with only one Min Stay type: min stay changes are then accepted under a single `min_stay` key and applied as that type in channel mappings."},"Properties.PropertySettings":{"type":"object","required":["allow_availability_autoupdate_on_confirmation","allow_availability_autoupdate_on_modification","allow_availability_autoupdate_on_cancellation","min_stay_type","state_length","cut_off_time","cut_off_days","max_day_advance","min_price","max_price"],"properties":{"allow_availability_autoupdate_on_confirmation":{"type":"boolean","description":"Decrease availability on new bookings. Effectively read-only — cannot be set to `false`. Always equal to `true`."},"allow_availability_autoupdate_on_modification":{"type":"boolean","description":"Increase/decrease availability on booking modification. Default is `false`, which is the recommended setting."},"allow_availability_autoupdate_on_cancellation":{"type":"boolean","description":"Decrease availability on booking cancellation. Default is `false`, which is the recommended setting."},"min_stay_type":{"allOf":[{"$ref":"#/components/schemas/Properties.MinStayType"}],"description":"Simplified Min Stay restriction handling for the property."},"state_length":{"type":"integer","format":"int32","minimum":100,"maximum":730,"description":"Length of the inventory table in days (100-730). Default is 500."},"cut_off_time":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Cut-off time in 30-minute steps, e.g. `\"00:00:00\"`, or null when no cut-off is set. At this time each day, availability is closed for today plus `cut_off_days`."},"cut_off_days":{"anyOf":[{"type":"integer","format":"int32"},{"type":"null"}],"minimum":0,"maximum":30,"description":"Number of days closed by the cut-off task (0-30), or null when no cut-off is set."},"max_day_advance":{"anyOf":[{"type":"integer","format":"int32"},{"type":"null"}],"description":"Max number of days open for sale, or null. Applying this overwrites availability with 0 beyond the window; the overwritten values are only recoverable through a full sync."},"min_price":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.decimalString"},{"type":"null"}],"description":"Minimum price per property, or null. Prices below it are raised to it."},"max_price":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.decimalString"},{"type":"null"}],"description":"Maximum price per property, or null. Prices above it are lowered to it."}},"description":"Property-level settings as returned in responses: every setting is present."},"Common.Scalars.decimalString":{"type":"string","description":"A decimal number as a string, e.g. `100.00`. Every monetary amount the API returns takes this form."},"Properties.PropertyContent":{"type":"object","required":["description","important_information","photos"],"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Property description. Null by default."},"important_information":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Important information, included in booking confirmation emails."},"photos":{"type":"array","items":{"$ref":"#/components/schemas/Photos.Photo"},"description":"Photos attached to the property. A property holds at most 30 of them, counted separately from the photos of its room types. See the Photos resource for the full model and management endpoints."}},"description":"Property content as returned in responses: every field is present."},"Photos.Photo":{"type":"object","required":["id","property_id","room_type_id","kind","position","author","description","url"],"properties":{"id":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.id"}],"description":"Unique photo identifier."},"property_id":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.id"}],"description":"UUID of the Property the photo belongs to. Cannot be changed after the photo is created."},"room_type_id":{"anyOf":[{"$ref":"#/components/schemas/Common.Scalars.id"},{"type":"null"}],"description":"UUID of the Room Type the photo belongs to, or null when the photo is attached at property level. Cannot be changed after the photo is created."},"kind":{"allOf":[{"$ref":"#/components/schemas/Photos.PhotoKind"}],"description":"Kind of photo: `photo` for the property or room type itself, `ad` for an advertising image, `menu` for a restaurant menu. Defaults to `photo`."},"position":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.nonNegativeInt"}],"description":"Position in the photo list of the property or, for a room type photo, of that room type. Positions run from `0` without gaps and `0` designates the cover photo. On create the photo is inserted at this position, or appended when omitted; on update it is moved there. The other photos shift to keep the positions contiguous, and a value past the end places the photo last."},"author":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Photo author, or null. An empty string is stored as `null`."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Photo description, or null. An empty string is stored as `null`."},"url":{"type":"string","format":"uri","description":"URL of the image as served by Channex. The create response carries a placeholder image URL; once the source image has been fetched and stored, typically within a few seconds, the photo carries the URL of the stored copy — read the photo back to obtain it. A source image that cannot be fetched leaves the placeholder in place."}},"description":"A photo as returned in responses: every attribute is present."},"Photos.PhotoKind":{"type":"string","enum":["photo","ad","menu"],"description":"Kind of photo: `photo` for the property or room type itself, `ad` for an advertising image, `menu` for a restaurant menu. Defaults to `photo`."},"Properties.PropertyRelationships":{"type":"object","required":["users","groups","facilities","hotel_policies","cancellation_policies","tax_sets"],"properties":{"users":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Authentication.EmbeddedUser"}}},"required":["data"],"description":"Users with access to the property."},"groups":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["group"]},"id":{"$ref":"#/components/schemas/Common.Scalars.id"},"attributes":{"$ref":"#/components/schemas/Common.JsonApi.OptionAttributes"}},"description":"A lightweight JSON:API resource returned by `/options` endpoints — id + title only, no relationships or pagination."}}},"required":["data"],"description":"Groups the property belongs to."},"facilities":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Facilities.FacilityResource"}}},"required":["data"],"description":"Facilities associated with the property."},"hotel_policies":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/HotelPolicies.EmbeddedHotelPolicy"}}},"required":["data"],"description":"Hotel policies associated with the property."},"cancellation_policies":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["cancellation_policy"]},"id":{"$ref":"#/components/schemas/Common.Scalars.id"},"attributes":{"$ref":"#/components/schemas/Common.JsonApi.OptionAttributes"}},"description":"A lightweight JSON:API resource returned by `/options` endpoints — id + title only, no relationships or pagination."}}},"required":["data"],"description":"Cancellation policies associated with the property."},"tax_sets":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["tax_set"]},"id":{"$ref":"#/components/schemas/Common.Scalars.id"},"attributes":{"$ref":"#/components/schemas/Common.JsonApi.OptionAttributes"}},"description":"A lightweight JSON:API resource returned by `/options` endpoints — id + title only, no relationships or pagination."}}},"required":["data"],"description":"Tax sets associated with the property."}},"description":"Relationships of a single property: the list blocks plus the facilities, policies and tax sets of the property."},"Authentication.EmbeddedUser":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["user"]},"id":{"$ref":"#/components/schemas/Common.Scalars.id"},"attributes":{"$ref":"#/components/schemas/Authentication.EmbeddedUserAttributes"}},"description":"A user embedded in another resource's relationships, carrying identifier, name and email."},"Authentication.EmbeddedUserAttributes":{"type":"object","required":["id","name","email"],"properties":{"id":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.id"}],"description":"User identifier. Mirrors the resource id."},"name":{"type":"string","description":"Display name of the user."},"email":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.email"}],"description":"Email address the account is registered with."}},"description":"Identifier, display name and email address of an embedded user."},"Common.JsonApi.OptionAttributes":{"type":"object","required":["id","title"],"properties":{"id":{"$ref":"#/components/schemas/Common.Scalars.id"},"title":{"type":"string"}},"description":"Attributes of a lightweight `/options` item: identifier and display title."},"Facilities.FacilityResource":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["facility"]},"id":{"$ref":"#/components/schemas/Common.Scalars.id"},"attributes":{"$ref":"#/components/schemas/Facilities.Facility"}},"description":"A facility resource object (JSON:API), returned by both list and options endpoints."},"Facilities.Facility":{"type":"object","required":["id","category","title"],"properties":{"id":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.id"}],"description":"Unique facility identifier. Mirrors the resource `id`."},"category":{"type":"string","description":"Grouping code the facility belongs to, in lower snake case. The property and\nroom type dictionaries have separate vocabularies: a code valid for one is\nrejected by the other. `filter[category]` takes this value."},"title":{"type":"string","description":"Human-readable facility name."}},"description":"Attributes of a facility (amenity) available at a property or room type."},"HotelPolicies.EmbeddedHotelPolicy":{"type":"object","required":["type","id","attributes"],"properties":{"type":{"type":"string","enum":["hotel_policy"]},"id":{"$ref":"#/components/schemas/Common.Scalars.id"},"attributes":{"$ref":"#/components/schemas/HotelPolicies.EmbeddedHotelPolicyAttributes"}},"description":"A hotel policy embedded in another resource's relationships."},"HotelPolicies.EmbeddedHotelPolicyAttributes":{"type":"object","required":["id","title","pets_policy","smoking_policy","checkin_from_time","checkin_to_time","checkout_from_time","checkout_to_time"],"properties":{"id":{"allOf":[{"$ref":"#/components/schemas/Common.Scalars.id"}],"description":"Unique hotel policy identifier."},"title":{"type":"string","description":"Hotel policy title."},"pets_policy":{"$ref":"#/components/schemas/HotelPolicies.PetsPolicy"},"smoking_policy":{"$ref":"#/components/schemas/HotelPolicies.SmokingPolicy"},"checkin_from_time":{"type":"string","description":"Earliest check-in time (`HH:MM`)."},"checkin_to_time":{"type":"string","description":"Latest check-in time (`HH:MM`)."},"checkout_from_time":{"type":"string","description":"Earliest check-out time (`HH:MM`)."},"checkout_to_time":{"type":"string","description":"Latest check-out time (`HH:MM`)."}},"description":"Attributes of a hotel policy embedded in another resource's relationships."},"HotelPolicies.PetsPolicy":{"type":"string","enum":["allowed","not_allowed","by_arrangements","assistive_only"],"description":"Policy towards pets."},"HotelPolicies.SmokingPolicy":{"type":"string","enum":["no_smoking","permitted_areas_only","allowed"],"description":"Policy towards smoking."},"Common.Errors.Unauthorized":{"type":"object","required":["errors"],"properties":{"errors":{"type":"object","required":["code","title"],"properties":{"code":{"type":"string","enum":["unauthorized"]},"title":{"type":"string","enum":["Unauthorized"]}},"description":"Shape of a single JSON:API error object: a stable machine code plus a human-readable title."}},"description":"Authentication credentials are missing or invalid."},"Common.Errors.NotFound":{"type":"object","required":["errors"],"properties":{"errors":{"type":"object","required":["code","title"],"properties":{"code":{"type":"string","enum":["resource_not_found"]},"title":{"type":"string","enum":["Resource Not Found"]}},"description":"Shape of a single JSON:API error object: a stable machine code plus a human-readable title."}},"description":"The requested resource does not exist."},"Common.Errors.InvalidArguments":{"type":"object","required":["errors"],"properties":{"errors":{"$ref":"#/components/schemas/Common.Errors.InvalidArgumentsObject"}},"description":"The request has missing or invalid arguments; `details` lists the messages per argument."},"Common.Errors.InvalidArgumentsObject":{"type":"object","required":["code","title","details"],"properties":{"code":{"type":"string","enum":["bad_request"]},"title":{"type":"string","enum":["Bad Request"]},"details":{"type":"object","unevaluatedProperties":{"type":"array","items":{"type":"string"}},"description":"Maps each invalid argument to the list of validation messages for that argument."}},"description":"Error object for invalid request arguments, adding per-argument messages."}}},"paths":{"/properties/{id}":{"get":{"operationId":"Properties_read","summary":"Retrieve a property","description":"Retrieve a property by its identifier.","parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/Common.Scalars.id"}}],"responses":{"200":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Properties.PropertyResource"}},"description":"JSON:API document wrapping a single resource."}}}},"401":{"description":"Authentication credentials are missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Common.Errors.Unauthorized"}}}},"404":{"description":"The requested resource does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Common.Errors.NotFound"}}}},"422":{"description":"The request has missing or invalid arguments; `details` lists the messages per argument.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Common.Errors.InvalidArguments"}}}}},"tags":["Properties"]}}}}
```
