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/leases

List leases

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).
  • unit_id string — Exact match; comma-separated list matches ANY (OR).
  • resident_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).
  • start_date_gte string
  • start_date_lte string
  • end_date_gte string
  • end_date_lte string

Response · 200

Page of leases

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
unit_idstring | null
resident_ids*array<string>
residents*array<object>
FieldTypeDescription
resident_id*stringPrefixed-ULID id of the resident on this lease.
x_id*stringNative PMS identifier of the resident.
rolestring | nullThe resident's role on this lease, normalized to lowercase snake_case from the source PMS relationship label (open set; e.g. primary, responsible, occupant).
statusstring | null
typestring | null
start_datestring (date) | null
end_datestring (date) | null
move_in_datestring (date) | null
move_out_datestring (date) | null
notice_datestring (date) | null
rent_amount*object
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.
security_depositobject | null
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.
balanceobject | null
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.
term_monthsinteger | null
renewal_statusstring | null
signed_datestring (date) | null
is_renewalboolean | null
previous_lease_idstring | null
concessionsstring | null
notesstring | 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/leases/{id}

Retrieve a lease

Path & headers

  • id · path · required

Query parameters

  • include_deleted boolean — Include soft-deleted records.

Response · 200

The lease

FieldTypeDescription
id*string
x_id*string
organization_id*string (uuid)
integration_id*string (uuid)
property_idstring | null
unit_idstring | null
resident_ids*array<string>
residents*array<object>
FieldTypeDescription
resident_id*stringPrefixed-ULID id of the resident on this lease.
x_id*stringNative PMS identifier of the resident.
rolestring | nullThe resident's role on this lease, normalized to lowercase snake_case from the source PMS relationship label (open set; e.g. primary, responsible, occupant).
statusstring | null
typestring | null
start_datestring (date) | null
end_datestring (date) | null
move_in_datestring (date) | null
move_out_datestring (date) | null
notice_datestring (date) | null
rent_amount*object
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.
security_depositobject | null
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.
balanceobject | null
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.
term_monthsinteger | null
renewal_statusstring | null
signed_datestring (date) | null
is_renewalboolean | null
previous_lease_idstring | null
concessionsstring | null
notesstring | 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

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/leases

Create a lease (async write-back)

Path & headers

  • Idempotency-Key · header · required

Request body (required)

FieldTypeDescription
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

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
patch/v1/leases/{id}

Update a lease (async write-back)

Path & headers

  • id · path · required
  • Idempotency-Key · header · required

Request body (required)

FieldTypeDescription
move_in_datestring (date)
occupantsinteger
rent_amountobject
FieldTypeDescription
amount*integerInteger minor units (e.g., cents).
currency*stringISO 4217 currency code.

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

Next

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