Skip to content
Documentation · Properties

API reference

Properties

Resource properties

Properties are the root resource. Create one first; pictures, checklists, bookings, and job requests reference it by propertyId or by your sourcePropertyId.

Create a property

POST /v1/properties 201 Created x-api-key

Creates a property and returns it inline. Persist the returned propertyId: dependent calls take either propertyId or your sourcePropertyId (the sourceId you set here).

Request body
Field Type Required Notes
sourceId string Required Your identifier for the property, 5–100 chars.
name string Required 3–100 chars.
countryCode string Required Exactly 2 chars (ISO 3166-1 alpha-2).
timeZone string Required IANA time zone, e.g. Europe/Berlin.
location object Required See Location.
beds integer Required —
bedrooms integer Required —
bathrooms integer Required —
type string Optional Property type label.
details object Optional See Property details.
tags string[] Optional 1–10 items; an empty list is rejected.
bedDetails object[] Optional See Bed details.
pictureUrl string Optional Legacy picture identifier (not a URL). Prefer POST /v1/propertyPictures.

Location

Location
Field Type Required Notes
latitude number Required -90 to 90.
longitude number Required -180 to 180.

Property details

Property details
Field Type Required Notes
information string Optional —
access string Optional —
garbage string Optional —
parking string Optional —
wifiName string Optional —
wifiPassword string Optional —
wifiDescription string Optional —
disableRemindersAutomation boolean Optional Default false. Accepted on create and update; never returned.
otherAttributes object[] Optional See Other attributes.

Other attributes

Other attributes
Field Type Required Notes
label string Required Max 100 chars.
value string | string[] Required A string of up to 500 chars, or an array of such strings.
group string Optional Max 100 chars.
pictures string[] Optional Picture URLs.

Bed details

Bed details
Field Type Required Notes
bedType string Required One of super-king, king, queen, twin, double, sofabed, child.
twinable boolean Required —
displayLabel string Required Max 100 chars.
quantity integer Required —
curl
curl -X POST https://platform.getproperly.com/v1/properties \
  -H "x-api-key: $PROPERLY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 018f6b1e-create-seaside-loft" \
  -d '{
    "sourceId": "pms-100234",
    "name": "Seaside Loft 2B",
    "countryCode": "US",
    "timeZone": "America/Los_Angeles",
    "location": { "latitude": 34.0119, "longitude": -118.4916 },
    "beds": 3,
    "bedrooms": 2,
    "bathrooms": 2,
    "tags": ["beach"],
    "details": { "access": "Lockbox code 4821", "wifiName": "SeasideLoft", "wifiPassword": "surf2026" },
    "bedDetails": [
      { "bedType": "queen", "twinable": false, "displayLabel": "Master bedroom", "quantity": 1 },
      { "bedType": "sofabed", "twinable": false, "displayLabel": "Living room", "quantity": 1 }
    ]
  }'

List properties

GET /v1/properties 200 OK x-api-key

Cursor-paginated listing ordered by propertyId ascending, in the collection envelope { "data": [ …property… ], "nextCursor": "<id>" | null, "hasMore": boolean }. Pass nextCursor as the next request's cursor; it is null on the last page.

Query parameters
Parameter Type Required Notes
cursor string Optional Opaque; the nextCursor from a previous page.
limit integer Optional 1–100, default 50.
Response fields
Field Type Required Notes
propertyId string Required The Properly id.
sourceId string Optional The identifier you supplied at create.
name string Optional —
note string Optional —
pictureUrls string[] Optional —
tags string[] Optional —
location object Optional { latitude, longitude }.
timeZone string Optional —
address string Optional —
type string Optional —
countryCode string Optional —
bedrooms integer Optional —
beds integer Optional —
bathrooms integer Optional —
bedDetails object[] Optional Same item shape as create.
details object Optional information, access, garbage, parking, wifiName, wifiPassword, wifiDescription, otherAttributes: exactly what you wrote. disableRemindersAutomation is accepted on create and update but never returned.
createdAt date-time Optional —
updatedAt date-time Optional —
curl
curl "https://platform.getproperly.com/v1/properties?limit=50" \
  -H "x-api-key: $PROPERLY_API_KEY"

Get a property

GET /v1/properties/{propertyId} 200 OK x-api-key

Returns one property with the same fields as the listing. Unknown id → 404.

curl
curl https://platform.getproperly.com/v1/properties/8jL2mQxT4a \
  -H "x-api-key: $PROPERLY_API_KEY"

Update a property

PATCH /v1/properties/{propertyId} 200 OK x-api-key

Partial update; returns the updated property. The body accepts any subset of the create fields. If location is sent, both latitude and longitude are required.

Request body
Field Type Required Notes
sourceId string Optional Your identifier for the property, 5–100 chars.
name string Optional 3–100 chars.
countryCode string Optional Exactly 2 chars (ISO 3166-1 alpha-2).
timeZone string Optional IANA time zone, e.g. Europe/Berlin.
location object Optional See Location.
beds integer Optional —
bedrooms integer Optional —
bathrooms integer Optional —
type string Optional Property type label.
details object Optional See Property details.
tags string[] Optional 1–10 items; an empty list is rejected.
bedDetails object[] Optional See Bed details.
pictureUrl string Optional Legacy picture identifier (not a URL). Prefer POST /v1/propertyPictures.
curl
curl -X PATCH https://platform.getproperly.com/v1/properties/8jL2mQxT4a \
  -H "x-api-key: $PROPERLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Seaside Loft 2B (renovated)", "tags": ["beach", "renovated"] }'

Delete a property

DELETE /v1/properties/{propertyId} 204 No Content x-api-key

Deletes the property. Returns 204 with no body.

Request
curl -X DELETE https://platform.getproperly.com/v1/properties/8jL2mQxT4a \
  -H "x-api-key: $PROPERLY_API_KEY"

Type to search the Platform API docs.