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/unitsList units
Query parameters
limitinteger — Page size, 1–100.offsetinteger — Zero-based record offset.include_deletedboolean — Include soft-deleted records.updated_afterstring — Return records with updated_at >= this ISO 8601 datetime.created_afterstring — Return records with created_at >= this ISO 8601 datetime.created_beforestring — Return records with created_at <= this ISO 8601 datetime.x_idstring — External PMS identifier (exact match). Comma-separated list matches ANY (OR).integration_idstring — Integration UUID (exact match). Comma-separated list of UUIDs matches ANY (OR).order-bystringproperty_idstring — Exact match; comma-separated list matches ANY (OR).statusstring — Exact match; comma-separated list matches ANY (OR).typestring — Exact match; comma-separated list matches ANY (OR).unit_numberstring — Exact match; comma-separated list matches ANY (OR).buildingstring — Exact match; comma-separated list matches ANY (OR).bedrooms_gtenumberbedrooms_ltenumberbathrooms_gtenumberbathrooms_ltenumber
Response · 200
Page of units
| Field | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| meta* | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| results* | array<object> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Errors
400— Validation error401— Missing or invalid API key429— Rate limit exceeded
get
/v1/units/{id}Retrieve a unit
Path & headers
id· path · required
Query parameters
include_deletedboolean — Include soft-deleted records.
Response · 200
The unit
| Field | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| id* | string | ||||||||||
| x_id* | string | ||||||||||
| organization_id* | string (uuid) | ||||||||||
| integration_id* | string (uuid) | ||||||||||
| property_id | string | null | ||||||||||
| name | string | null | ||||||||||
| unit_number | string | null | ||||||||||
| type | string | null | ||||||||||
| status | string | null | ||||||||||
| floor | string | null | ||||||||||
| building | string | null | ||||||||||
| bedrooms | number | null | ||||||||||
| bathrooms | number | null | ||||||||||
| square_feet | number | null | ||||||||||
| market_rent | object | null | ||||||||||
| |||||||||||
| floor_plan_name | string | null | ||||||||||
| floor_plan_id | string | null | ||||||||||
| address | object | null | ||||||||||
| description | string | null | ||||||||||
| move_in_date | string (date) | null | ||||||||||
| move_out_date | string (date) | null | ||||||||||
| available_date | string (date) | null | ||||||||||
| media | array<object> | null | ||||||||||
| custom_data* | object | ||||||||||
| created_at* | string (date-time) | ||||||||||
| updated_at* | string (date-time) | ||||||||||
| deleted_at | string (date-time) | null | ||||||||||
| ps_synced_at | string (date-time) | null | ||||||||||
Errors
400— Validation error401— Missing or invalid API key404— Resource not found429— Rate limit exceeded
post
/v1/unitsCreate a unit (async write-back)
Path & headers
Idempotency-Key· header · required
Request body (required)
| Field | Type | Description |
|---|---|---|
| unit_number* | string | |
| bedrooms | number | |
| bathrooms | number | |
| square_feet | number | |
| max_occupants | integer | |
| max_pets | integer | |
| note | string | |
| unit_gender_id | string |
Response · 202
Write operation queued
| Field | Type | Description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id* | string | ||||||||||||||||
| object* | string | ||||||||||||||||
| type* | string | ||||||||||||||||
| status* | string | ||||||||||||||||
| source | object | ||||||||||||||||
| |||||||||||||||||
| reconcile | object | ||||||||||||||||
| |||||||||||||||||
| resource | object | ||||||||||||||||
| |||||||||||||||||
| result | object | null | ||||||||||||||||
| idempotency_key | string | null | ||||||||||||||||
| created_at* | string (date-time) | ||||||||||||||||
Errors
400— Validation error401— Missing or invalid API key403— Insufficient permissions404— Resource not found409— Duplicate idempotency key with different payload422— Semantic validation error429— 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.