RentCheck Leases API
The Leases API from RentCheck — 9 operation(s) for leases.
The Leases API from RentCheck — 9 operation(s) for leases.
openapi: 3.1.0
info:
title: RentCheck REST Account Settings Leases API
version: 1.0.0
description: "\n## Mission\nAt RentCheck, our mission is plain and simple: To make renting fair and transparent for everyone involved. \nRentCheck is a property inspection solution that helps property managers save time and resources with easy self-guided inspections that residents can perform from their smartphone. \n\nWith RentCheck, property managers can avoid tenant coordination, eliminate drive time, and standardize their inspection process. \nWe provides real-time visibility to property managers and owners while bringing transparency to the security deposit deduction process.\n\n## API\nThe RentCheck API lets developers tap into the RentCheck ecosystem, building their own RentCheck-powered applications to enable inspection scheduling and creation and to leverage inspection data for a variety of use cases in the property management, maintenance, and insurance spaces.\n\nThe RentCheck REST API supports JSON requests and responses and features a resource-oriented design that generally adheres to the RFC 7321 HTTP/1.1 standard. \nOur API resources provide access to many RentCheck features, including units, buildings, communities, inspections, and residents.\n\n## Credentials\nIn addition to the Bearer Auth, RentCheck will need to send you an application ID and secret. These are required to generate the required application headers (x-app-id & x-app-secret).\nThese values can be obtained from the [RentCheck API integration page](https://app.getrentcheck.com/account/integrations/rentcheck-api).\n\n## Rate Limiting\nThe RentCheck API enforces rate limits to ensure fair usage and prevent abuse. The rate limits are as follows:\n- **Requests per second**: 8\n- **Requests per minute**: 256\n- **Requests per 10 minutes**: 1024\n\nIf you exceed the rate limits, you will receive a 429 Too Many Requests response.\n\n## Pagination\nWhen interacting with endpoints that return a list of items, the results are paginated to help manage large data sets efficiently. The following parameters control pagination:\n- **page_size** (integer): Defines the number of items returned per page. The maximum allowed value is 250. If a value larger than 250 is provided, it will be automatically clamped to 250. This ensures that the system performs optimally and prevents the server from being overwhelmed by too many items in a single response.\n - **Maximum**: `250`\n- **page_number** (integer): Indicates the page number to retrieve. Pagination starts at `page 0`. If not specified, the first page (`page 0`) is returned by default.\n### Example Request\n```http\nGET /api/v1/inspections?page_size=300&page_number=2\n```\nIn this example, although the `page_size` parameter is set to `300` **for a query with 1500 total results**, the system will return only `250` items per page, as `300` exceeds the maximum allowed value.\n#### Example Response\n```json\n{\n \"status\": 200,\n \"data\": [...],\n \"count\": 250,\n \"total_results\": 1500\n}\n```\nThis response shows that the `page_size` has been clamped to `250`, despite the initial request for `300`.\n"
contact:
name: RentCheck Support
email: support@getrentcheck.com
servers:
- url: https://prod-public-api.getrentcheck.com
description: Production server
security:
- bearerAuth: []
x-app-id: []
x-app-secret: []
tags:
- name: Leases
paths:
/v2/residents/{residentId}/leases:
post:
summary: Create a lease for a resident
tags:
- Leases
description: This resource allows you to create a Lease for a Resident in RentCheck.
parameters:
- name: residentId
in: path
description: Resident ID
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/lease_v2_create_request_model'
responses:
'200':
description: Returns the created lease
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/lease_v2_response_model'
'400':
description: 'Bad request — request body failed validation. The raw
message identifies the invalid field, e.g. `"data.status" is required`,
`"data.status" must be one of [future, past, current]`,
`"data.tags" must be an array`, or
`"data.tags[0]" must be one of [evict, notice]`. A missing or unknown
`property_id` surfaces as `404 unit not found`, not a 400.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.status" is required'
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — `resident not found` (the resident at `residentId`
does not exist or is inaccessible) or `unit not found` (the unit
identified by `property_id` does not exist or is inaccessible).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: resident not found
get:
summary: Get all leases for resident
tags:
- Leases
description: This resource allows you to get all Leases for a Resident.
parameters:
- name: residentId
in: path
description: Resident ID
required: true
schema:
type: string
responses:
'200':
description: Returns all leases for a resident
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/lease_v2_response_model'
count:
type: integer
description: Amount of elements in `data`.
total_results:
type: integer
description: Amount of total elements according to search criteria.
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `resident not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: resident not found
/v2/residents/{residentId}/leases/{leaseId}:
delete:
summary: Delete lease
tags:
- Leases
description: Delete selected lease by ID for a resident.
parameters:
- name: residentId
in: path
description: Resident ID
required: true
schema:
type: string
- name: leaseId
in: path
description: Lease ID
required: true
schema:
type: string
responses:
'204':
description: Successful deletion of lease
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `resident not found` or `lease not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: lease not found
enum:
- resident not found
- lease not found
get:
summary: Get a lease by ID for a resident
tags:
- Leases
description: This resource allows you to get a lease for a resident Resident in RentCheck.
parameters:
- name: residentId
in: path
description: Resident ID
required: true
schema:
type: string
- name: leaseId
in: path
description: Lease ID
required: true
schema:
type: string
responses:
'200':
description: Returns the requested lease
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/lease_v2_response_model'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `resident not found` or `lease not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: lease not found
enum:
- resident not found
- lease not found
put:
summary: Update a lease for a resident
tags:
- Leases
description: This resource allows you to update a Lease for a Resident in RentCheck.
parameters:
- name: residentId
in: path
description: Resident ID
required: true
schema:
type: string
- name: leaseId
in: path
description: Lease ID
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/lease_v2_update_request_model'
responses:
'200':
description: Returns the updated lease
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/lease_v2_response_model'
'400':
description: 'Bad request — request body failed validation. All body fields are
optional; the raw message identifies the invalid field, e.g.
`"data.status" must be one of [future, past, current]`,
`"data.tags" must be an array`, or
`"data.tags[0]" must be one of [evict, notice]`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.status" must be one of [future, past, current]'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `lease not found`, `resident not found`, or `unit not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: lease not found
enum:
- lease not found
- resident not found
- unit not found
/v2/residents/{residentId}/leases/{leaseId}/move-in:
patch:
summary: Update a lease move in date and status
tags:
- Leases
description: This resource sets a Lease move_in_date to the current date and the status to "current".
parameters:
- name: residentId
in: path
description: Resident ID
required: true
schema:
type: string
- name: leaseId
in: path
description: Lease ID
required: true
schema:
type: string
responses:
'200':
description: Returns the updated lease
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/lease_v2_response_model'
'400':
description: Bad request — the lease's current status does not allow a move-in transition.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
enum:
- lease status has an invalid value
example: lease status has an invalid value
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `lease not found` or `resident not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: lease not found
enum:
- lease not found
- resident not found
/v2/residents/{residentId}/leases/{leaseId}/move-out:
patch:
summary: Update a lease move out date and status
tags:
- Leases
description: This resource sets a Lease move_out_date to the current date and the status to "past".
parameters:
- name: residentId
in: path
description: Resident ID
required: true
schema:
type: string
- name: leaseId
in: path
description: Lease ID
required: true
schema:
type: string
responses:
'200':
description: Returns the updated lease
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/lease_v2_response_model'
'400':
description: Bad request — the lease's current status does not allow a move-out transition.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
enum:
- lease status has an invalid value
example: lease status has an invalid value
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `lease not found` or `resident not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: lease not found
enum:
- lease not found
- resident not found
/v1/properties/{propertyId}/leases:
get:
x-internal: true
summary: List every lease on a property
tags:
- Leases
description: 'Returns every lease (occupancy) associated with the unit identified by
`propertyId`. The property is resolved through the unit fetcher — so
building and community IDs are rejected.
Not to be confused with `GET /v1/properties/resident-leases`, which
returns only the leases the authenticated renter has access to.
'
parameters:
- name: propertyId
in: path
description: Property (unit) id.
required: true
schema:
type: string
responses:
'200':
description: Returns every lease on the property.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/lease_v2_response_model'
count:
type: integer
description: Number of leases returned.
total_results:
type: integer
description: Total number of leases on the property.
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — `unit not found` when the property does not exist, is a
building/community, or the caller is not on its authorized user list.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: unit not found
/v1/properties/{propertyId}/resident-leases:
post:
x-internal: true
summary: Create a resident lease
tags:
- Leases
description: Creates a new resident lease for the given property.
parameters:
- name: propertyId
in: path
required: true
description: ID of the property the new lease belongs to.
schema:
type: string
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/tenant_occupancy_create_request_model'
responses:
'200':
description: Returns the newly created resident lease.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_tenant_occupancy'
'400':
description: 'Bad request — request body validation failed. The raw message
identifies the invalid field, e.g.
`"data.status" is required`,
`"data.status" must be one of [past, current]`, or
`"data.move_in_date" must be in one of the allowed formats`
(the field also allows `null`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.status" is required'
'401':
$ref: '#/components/responses/resident_lease_unauthorized'
'403':
description: 'Forbidden — only renters can call this endpoint.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
enum:
- Only renters can create resident leases
example: Only renters can create resident leases
'404':
description: Not Found — `property not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- property not found
example: property not found
/v1/properties/{propertyId}/resident-leases/{residentLeaseId}:
delete:
x-internal: true
summary: Delete a resident lease
tags:
- Leases
description: Deletes a resident lease for the given property.
parameters:
- name: propertyId
in: path
required: true
description: ID of the property the lease belongs to.
schema:
type: string
minLength: 1
- name: residentLeaseId
in: path
required: true
description: 'ID of the resident lease. Must be a valid UUID — a non-UUID id is
interpreted as a property-manager lease id and rejected with a 400.
'
schema:
type: string
format: uuid
responses:
'200':
description: Returns the deleted resident lease.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_tenant_occupancy'
'400':
description: 'Bad request — the `residentLeaseId` is not a valid UUID, which is interpreted by the
handler as a property-manager lease id that cannot be soft-deleted via this endpoint.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: A PM lease can't be deleted
'401':
$ref: '#/components/responses/resident_lease_unauthorized'
'403':
description: 'Forbidden — only `Renter` users can delete resident leases. Property-manager and admin
accounts get a `403` with the error string below.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
example: Only renters can delete resident leases
'404':
description: 'Not Found — either `property not found` (the property does not exist) or
`lease not found` (the lease does not exist or has already been soft-deleted).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- property not found
- lease not found
get:
x-internal: true
summary: Get a resident lease by id
tags:
- Leases
description: Returns a single resident lease for the given property.
parameters:
- name: propertyId
in: path
required: true
description: ID of the property the lease belongs to.
schema:
type: string
minLength: 1
- name: residentLeaseId
in: path
required: true
description: ID of the resident lease.
schema:
type: string
minLength: 1
responses:
'200':
description: Returns the resident lease.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_tenant_occupancy'
'401':
$ref: '#/components/responses/resident_lease_unauthorized'
'403':
description: 'Forbidden — either the caller is not a `Renter` user, or the lease being looked up is
a property-manager lease (non-UUID id) whose underlying tenant record does not match
the authenticated user.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
enum:
- Only renters can get resident leases
- Lease does not belong to user
example: Only renters can get resident leases
'404':
description: 'Not Found — the resource referenced in the path (or a related resource looked up while
building the response) could not be found. For PM-lease ids (non-UUID), `tenant not found`
is also possible when the authenticated user has no tenant record linked to the lease.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- property not found
- lease not found
- tenant not found
example: lease not found
put:
x-internal: true
summary: Update a resident lease
tags:
- Leases
description: Updates a resident lease for the given property.
parameters:
- name: propertyId
in: path
required: true
description: ID of the property the lease belongs to.
schema:
type: string
minLength: 1
- name: residentLeaseId
in: path
required: true
description: ID of the resident lease.
schema:
type: string
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/tenant_occupancy_update_request_model'
responses:
'200':
description: Returns the updated resident lease.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_tenant_occupancy'
'400':
description: 'Bad request — request body validation failed. The raw message
identifies the invalid field, e.g.
`"data.status" must be one of [past, current]` or
`"data.move_in_date" must be in one of the allowed formats`
(the field also allows `null`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.status" must be one of [past, current]'
'401':
$ref: '#/components/responses/resident_lease_unauthorized'
'403':
description: 'Forbidden — either the caller is not a `Renter` user, or the lease being updated does
not belong to the authenticated user.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
enum:
- Only renters can update resident leases
- Lease does not belong to user
example: Only renters can update resident leases
'404':
description: 'Not Found — the property the lease belongs to does not exist, or the lease itself does
not exist (or has already been soft-deleted).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- property not found
- lease not found
example: lease not found
/v1/properties/resident-leases:
get:
x-internal: true
summary: Get all resident leases
tags:
- Leases
description: 'Returns every resident lease the caller has access to, optionally filtered by status, lease
type, and a free-form search string. Results are returned without pagination.
'
parameters:
- in: query
name: search
schema:
type: string
description: Free-form search string matched across resident and property fields.
- in: query
name: filters[status][value]
schema:
type: string
pattern: ^(past|current)(\|(past|current))*$
description: 'List of lease statuses to filter by. Multiple values are concatenated with `|`. When either `filters[status][value]` or `filters[status][condition]` is supplied, both are required.
# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentcheck/refs/heads/main/openapi/rentcheck-leases-api-openapi.yml