Units

Rentable spaces within a property. List and retrieve, plus async write-back to create a unit.

Writing back to the PMS. Creating a unit is an async write-back: POST returns an Operation immediately and the change is applied to the source PMS in the background. See the Operations page for the full submit → poll → apply flow.
get/v1/units

List units

Query parameters

  • limit integer — Page size, 1–100.
  • offset integer — Zero-based record offset.
  • include_deleted boolean — Include soft-deleted records.
  • updated_after string — Return records with updated_at >= this ISO 8601 datetime.
  • created_after string — Return records with created_at >= this ISO 8601 datetime.
  • created_before string — Return records with created_at <= this ISO 8601 datetime.
  • x_id string — External PMS identifier (exact match). Comma-separated list matches ANY (OR).
  • integration_id string — Integration UUID (exact match). Comma-separated list of UUIDs matches ANY (OR).
  • order-by string
  • property_id string — Exact match; comma-separated list matches ANY (OR).
  • status string — Exact match; comma-separated list matches ANY (OR).
  • type string — Exact match; comma-separated list matches ANY (OR).
  • unit_number string — Exact match; comma-separated list matches ANY (OR).
  • building string — Exact match; comma-separated list matches ANY (OR).
  • bedrooms_gte number
  • bedrooms_lte number
  • bathrooms_gte number
  • bathrooms_lte number

Response · 200

Page of units

FieldTypeDescription
meta*object
FieldTypeDescription
limit*integer
offset*integer
hasMore*boolean
results*array<object>
FieldTypeDescription
id*string
x_id*string
organization_id*string (uuid)
integration_id*string (uuid)
property_idstring | null
namestring | null
unit_numberstring | null
typestring | null
statusstring | null
floorstring | null
buildingstring | null
bedroomsnumber | null
bathroomsnumber | null
square_feetnumber | null
market_rentobject | null
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.
floor_plan_namestring | null
floor_plan_idstring | null
addressobject | null
descriptionstring | null
move_in_datestring (date) | null
move_out_datestring (date) | null
available_datestring (date) | null
mediaarray<object> | null
custom_data*object
created_at*string (date-time)
updated_at*string (date-time)
deleted_atstring (date-time) | null
ps_synced_atstring (date-time) | null

Errors

  • 400 — Validation error
  • 401 — Missing or invalid API key
  • 429 — Rate limit exceeded
get/v1/units/{id}

Retrieve a unit

Path & headers

  • id · path · required

Query parameters

  • include_deleted boolean — Include soft-deleted records.

Response · 200

The unit

FieldTypeDescription
id*string
x_id*string
organization_id*string (uuid)
integration_id*string (uuid)
property_idstring | null
namestring | null
unit_numberstring | null
typestring | null
statusstring | null
floorstring | null
buildingstring | null
bedroomsnumber | null
bathroomsnumber | null
square_feetnumber | null
market_rentobject | null
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.
floor_plan_namestring | null
floor_plan_idstring | null
addressobject | null
descriptionstring | null
move_in_datestring (date) | null
move_out_datestring (date) | null
available_datestring (date) | null
mediaarray<object> | null
custom_data*object
created_at*string (date-time)
updated_at*string (date-time)
deleted_atstring (date-time) | null
ps_synced_atstring (date-time) | null

Errors

  • 400 — Validation error
  • 401 — Missing or invalid API key
  • 404 — Resource not found
  • 429 — Rate limit exceeded
post/v1/units

Create a unit (async write-back)

Path & headers

  • Idempotency-Key · header · required

Request body (required)

FieldTypeDescription
unit_number*string
bedroomsnumber
bathroomsnumber
square_feetnumber
max_occupantsinteger
max_petsinteger
notestring
unit_gender_idstring

Response · 202

Write operation queued

FieldTypeDescription
id*string
object*string
type*string
status*string
sourceobject
FieldTypeDescription
statestring | null
applied_atstring (date-time) | null
reconcileobject
FieldTypeDescription
statestring | null
attemptsinteger | null
next_attempt_atstring (date-time) | null
last_errorstring | null
resourceobject
FieldTypeDescription
typestring | null
idstring | null
x_idstring | null
resultobject | null
idempotency_keystring | null
created_at*string (date-time)

Errors

  • 400 — Validation error
  • 401 — Missing or invalid API key
  • 403 — Insufficient permissions
  • 404 — Resource not found
  • 409 — Duplicate idempotency key with different payload
  • 422 — Semantic validation error
  • 429 — Rate limit exceeded

Example

POST /v1/units
{
  "unit_number": "1042",
  "bedrooms": 2,
  "bathrooms": 2,
  "square_feet": 1080,
  "max_occupants": 4,
  "note": "South-facing, renovated 2025."
}

Next

See the Operations page for the async write-back flow, or the Common Data Model for the full entity shapes.