Leases
Rental agreements, with nested LeaseResidents. List and retrieve, plus async write-back to create and update leases.
Writing back to the PMS. Create and update are async write-backs returning an Operation. Note the vocabulary shift: you READ leases in CDM terms (property_id, x_id) but the CREATE body uses PMS-native fields (property_x_id, lease_term_id, floorplan_id, unit_space_id). See the Operations page and the create request body below.
get
/v1/leasesList leases
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).unit_idstring — Exact match; comma-separated list matches ANY (OR).resident_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).start_date_gtestringstart_date_ltestringend_date_gtestringend_date_ltestring
Response · 200
Page of leases
| Field | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| meta* | object | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| results* | array<object> | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Errors
400— Validation error401— Missing or invalid API key429— Rate limit exceeded
get
/v1/leases/{id}Retrieve a lease
Path & headers
id· path · required
Query parameters
include_deletedboolean — Include soft-deleted records.
Response · 200
The lease
| Field | Type | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id* | string | |||||||||||||
| x_id* | string | |||||||||||||
| organization_id* | string (uuid) | |||||||||||||
| integration_id* | string (uuid) | |||||||||||||
| property_id | string | null | |||||||||||||
| unit_id | string | null | |||||||||||||
| resident_ids* | array<string> | |||||||||||||
| residents* | array<object> | |||||||||||||
| ||||||||||||||
| status | string | null | |||||||||||||
| type | string | null | |||||||||||||
| start_date | string (date) | null | |||||||||||||
| end_date | string (date) | null | |||||||||||||
| move_in_date | string (date) | null | |||||||||||||
| move_out_date | string (date) | null | |||||||||||||
| notice_date | string (date) | null | |||||||||||||
| rent_amount* | object | |||||||||||||
| ||||||||||||||
| security_deposit | object | null | |||||||||||||
| ||||||||||||||
| balance | object | null | |||||||||||||
| ||||||||||||||
| term_months | integer | null | |||||||||||||
| renewal_status | string | null | |||||||||||||
| signed_date | string (date) | null | |||||||||||||
| is_renewal | boolean | null | |||||||||||||
| previous_lease_id | string | null | |||||||||||||
| concessions | string | null | |||||||||||||
| notes | string | 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
Example
GET /v1/leases/{id}
{
"id": "lse_01HX9P3K2N7QZRWY4B8MJ5VCDF",
"x_id": "entrata-lease-8847291",
"organization_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"integration_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"property_id": "prp_01HX0G5T8N3KEWBYV2QMR4DCFA",
"unit_id": "unt_01HX1H6V9P4MFXCZW3RNS5EDGB",
"resident_ids": [
"res_01HX2J7V0Q5MGYDAW4SPT6FEHC",
"res_01HX2K8W1R6NHZEBX5TPV7GFJD"
],
"status": "active",
"type": "fixed",
"start_date": "2026-06-01",
"end_date": "2027-05-31",
"move_in_date": "2026-06-01",
"notice_date": null,
"rent_amount": {
"amount": 272500,
"currency": "USD"
},
"security_deposit": {
"amount": 285000,
"currency": "USD"
},
"balance": {
"amount": 0,
"currency": "USD"
},
"term_months": 12,
"renewal_status": "not_started",
"signed_date": "2026-05-11",
"is_renewal": false,
"previous_lease_id": null,
"residents": [
{
"resident_id": "res_01HX2J7V0Q5MGYDAW4SPT6FEHC",
"x_id": "entrata-resident-44218",
"role": "primary"
},
{
"resident_id": "res_01HX2K8W1R6NHZEBX5TPV7GFJD",
"x_id": "entrata-resident-44219",
"role": "responsible"
}
],
"custom_data": {},
"created_at": "2026-05-11T17:41:52Z",
"updated_at": "2026-05-11T17:41:52Z",
"deleted_at": null
}post
/v1/leasesCreate a lease (async write-back)
Path & headers
Idempotency-Key· header · required
Request body (required)
| Field | Type | Description |
|---|---|---|
| property_x_id* | string | |
| lease_start_date* | string (date) | |
| lease_end_date* | string (date) | |
| move_in_date* | string (date) | |
| lease_term_id* | string | |
| floorplan_id* | string | |
| unit_space_id* | string | |
| first_name* | string | |
| last_name* | string | |
| customer_relationship_type_id* | string | |
| phone_number* | string | |
| phone_number_type_id* | string | |
| address_type_id* | string | |
| city* | string | |
| state* | string | |
| state_code* | string | |
| postal_code* | string | |
| street_line_1* | 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
patch
/v1/leases/{id}Update a lease (async write-back)
Path & headers
id· path · requiredIdempotency-Key· header · required
Request body (required)
| Field | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| move_in_date | string (date) | ||||||||||
| occupants | integer | ||||||||||
| rent_amount | object | ||||||||||
| |||||||||||
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
Next
See the Operations page for the async write-back flow, or the Common Data Model for the full entity shapes.