RentCheck Inspections V2 API
The Inspections V2 API from RentCheck — 2 operation(s) for inspections v2.
The Inspections V2 API from RentCheck — 2 operation(s) for inspections v2.
openapi: 3.1.0
info:
title: RentCheck REST Account Settings Inspections V2 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: Inspections V2
paths:
/v2/inspections:
post:
summary: Create inspections
tags:
- Inspections V2
description: Create inspections
parameters:
- in: header
name: x-app-id
required: true
description: 'Creation-source identifier. Persisted as `creation_source` on each
created inspection. Required — a missing value yields a 400.
'
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/inspection_v2_create_request_model'
responses:
'200':
description: Returns the status of the operation
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/inspection_v2_response_model'
'400':
description: "Bad request — top-level body validation rejected the create. Per-property\nvalidation failures (template / property checks) do not surface as 4xx —\nthey are caught and returned as 200 with the offending property recorded\nin the response's `errors[].reason` field. Top-level 400 messages (each\ncarries `<field> has an invalid value: <reason>` when a reason is supplied):\n - `due_date has an invalid value` /\n `due_date has an invalid value: cannot be in the past` /\n `invite_date has an invalid value` /\n `invite_date has an invalid value: cannot be in the past`\n - `recurrence type has an invalid value` /\n `recurrence end_date is missing` /\n `recurrence end_date has an invalid value` /\n `recurrence end_date has an invalid value: cannot be in the past` /\n `recurrence.end_date has an invalid value: exceeds maximum (Daily exceeds 1 month)` /\n `recurrence.end_date has an invalid value: exceeds maximum (2 years)` /\n `recurrence.end_date has an invalid value: date is before inspection due date`\n - `selected_features must be an array`\n - `self-perform inspection does not allow invite_date`\n - `invitation date should not be after due date`\n - `No <type> assigned to perform this inspection`\n - `Cannot include your own email when inviting others.`\nFeature validation also runs before the per-property checks, so the\nfollowing throw as top-level 400 rather than being caught into\n`errors[].reason`:\n - `inspection template does not accept selected features`\n - `<template> requires at least one feature`\n - `area has an invalid value: <name>`\n - `feature has an invalid value: <area> for section <feature>`\n - `invalid area name, <area> requires an ordinal to be valid. e.g. First <area>, Second <area>, etc.`\nPer-property reasons surfaced in `errors[].reason` include:\n - `<propertyType> does not support <inspectionType> inspections`\n - `<template> requires the property to have at least one room`\n - `Unit does not have access to selected inspection template`\n - `this template id is not published for subscription <name>`\n - `inspection template does not support fast track`\n"
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `user not found` (the caller's user could not be loaded; per-property `property not found` does not surface as 404, it is recorded in `errors[].reason`).
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
get:
summary: Get all inspections
tags:
- Inspections V2
description: Get all inspections
parameters:
- in: query
name: search
schema:
type: string
description: Search string to match in several inspection's fields
- in: query
name: page_number
schema:
type: integer
default: 0
description: The page number of the collection. Zero-indexed.
- in: query
name: page_size
schema:
type: integer
default: 20
description: The number of elements in the data collection.
- in: query
name: sort_by
schema:
type: string
default: due_date
enum:
- address
- due_date
- inspection_status
- completed_date
- approved_date
description: 'Sort results by one of the available fields. `approved_date` sorts by
the approved date, falling back to the completed date when there is no
approval.
'
- in: query
name: sort_type
schema:
type: string
default: DESC
pattern: ^(?:[Aa][Ss][Cc]|[Dd][Ee][Ss][Cc])$
example: DESC
description: 'Sort direction. Accepted case-insensitively — any casing of `asc` /
`desc` is silently normalised to `ASC` / `DESC`.
'
- in: query
name: inspection_status[]
deprecated: true
schema:
type: array
items:
type: string
enum:
- Scheduled
- Not Started
- Started
- In Review
- Completed
- Awaiting Review
- Revision Requested
- Revision Review
- Approved
description: List of inspection statuses to filter inspections. Prefer `filters[inspection_status][value]`.
- in: query
name: inspection_template[]
deprecated: true
schema:
type: array
items:
type: string
description: List of inspection template ids to filter inspections. Prefer `filters[inspection_template][value]`.
- in: query
name: team_id[]
deprecated: true
schema:
type: array
items:
type: string
description: List of teams id to filter inspections. Prefer `filters[team][value]`.
- in: query
name: assigned_to[]
deprecated: true
schema:
type: array
items:
type: string
description: List of user ids to filter inspections. Prefer `filters[assigned_to][value]`.
- in: query
name: ratings[]
deprecated: true
schema:
type: array
items:
type: string
enum:
- Good
- Fair
- Poor
description: List of feature ratings to filter inspections by. Prefer `filters[rating][value]`.
- in: query
name: property_id[]
deprecated: true
schema:
type: array
items:
type: string
description: List of property ids to filter inspections by. Prefer `filters[property][value]`.
- in: query
name: archived
deprecated: true
schema:
type: string
enum:
- 'true'
- 'false'
description: Filter inspections by their archived status. Prefer `filters[archived]`.
- in: query
name: start_due_date
deprecated: true
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: Value to filter inspection date by a starting date. `yyyy-mm-dd` format. The legacy parameter is forwarded onto `filters[due_date][start_date]`. Prefer `filters[due_date][start_date]`.
- in: query
name: end_due_date
deprecated: true
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: Value to filter inspection date by a ending date. `yyyy-mm-dd` format. Prefer `filters[due_date][end_date]`.
- in: query
name: start_completed_date
deprecated: true
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: Value to filter completed inspection date by a starting date. `yyyy-mm-dd` format. Prefer `filters[completed_date][start_date]`.
- in: query
name: end_completed_date
deprecated: true
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: Value to filter completed inspection date by a ending date. `yyyy-mm-dd` format. Prefer `filters[completed_date][end_date]`.
- in: query
name: filters[search]
schema:
type: string
description: Search string to match in several inspection's fields. Preferred over the legacy `search` parameter.
- in: query
name: filters[archived]
schema:
type: string
enum:
- 'true'
- 'false'
description: Filter inspections by its archived status.
- in: query
name: filters[has_flags]
schema:
type: string
enum:
- 'true'
- 'false'
description: Filter inspections by whether they have one or more maintenance flags. `true` returns only inspections with flags; `false` returns only inspections with none.
- in: query
name: filters[inspection_template][value]
schema:
type: string
description: List of inspection templates to filter inspections. This parameter accepts multiple ids concatenated with a `|`.
- in: query
name: filters[inspection_template][condition]
schema:
type: string
enum:
- any_of
- none_of
description: Condition to be used to filter by inspection templates.
- in: query
name: filters[inspection_status][value]
schema:
type: string
pattern: ^(Scheduled|Not Started|Started|In Review|Completed|Awaiting Review|Revision Requested|Revision Review|Approved)(\|(Scheduled|Not Started|Started|In Review|Completed|Awaiting Review|Revision Requested|Revision Review|Approved))*$
description: Pipe-separated list of inspection statuses to filter by (e.g. `Not Started|In Review`).
- in: query
name: filters[inspection_status][condition]
schema:
type: string
enum:
- any_of
- none_of
description: Condition to be used to filter by inspection status.
- in: query
name: filters[team][value]
schema:
type: string
description: List of teams id to filter inspections. This parameter accepts multiple ids concatenated with a `|`.
- in: query
name: filters[team][condition]
schema:
type: string
enum:
- any_of
- none_of
description: Condition to be used to filter by teams id.
- in: query
name: filters[property][value]
schema:
type: string
description: List of properties id to filter inspections. This parameter accepts multiple ids concatenated with a `|`.
- in: query
name: filters[property][condition]
schema:
type: string
enum:
- any_of
- none_of
description: Condition to be used to filter by properties id.
- in: query
name: filters[rating][value]
schema:
type: string
pattern: ^(Good|Fair|Poor)(\|(Good|Fair|Poor))*$
description: List of inspection ratings to filter by. Multiple values are concatenated with `|` (e.g. `Good|Fair`). Allowed values, `Good`, `Fair`, `Poor`.
- in: query
name: filters[rating][condition]
schema:
type: string
enum:
- any_of
description: Condition to be used to filter by ratings.
- in: query
name: filters[assigned_to][value]
schema:
type: string
description: List of user ids to filter inspections by. This parameter accepts multiple ids concatenated with a `|`.
- in: query
name: filters[assigned_to][condition]
schema:
type: string
enum:
- any_of
description: Condition to be used to filter by assigned to.
- in: query
name: filters[review_step][value]
schema:
type: string
pattern: ^(Initial Review|Secondary Review)(\|(Initial Review|Secondary Review))*$
description: List of review steps to filter inspections by. Multiple values are concatenated with `|` (e.g. `Initial Review|Secondary Review`). Allowed values, `Initial Review`, `Secondary Review`.
- in: query
name: filters[review_step][condition]
schema:
type: string
enum:
- any_of
description: Condition to apply to the review step filter. The validator only accepts `any_of`.
- in: query
name: filters[created_by][value]
schema:
type: string
description: List of creator ids to filter inspections by. This parameter accepts multiple values concatenated with a `|`.
- in: query
name: filters[created_by][condition]
schema:
type: string
enum:
- any_of
- none_of
description: Condition to be used to filter by created by.
- in: query
name: filters[due_date][start_date]
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: 'Value to filter inspection effective due date by a starting date.
`yyyy-mm-dd` format.
'
- in: query
name: filters[due_date][end_date]
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: 'Value to filter inspection effective due date by a ending date.
`yyyy-mm-dd` format. `end_date` must be on or after `start_date`,
otherwise the response is `end date must be equal or after start date`.
'
- in: query
name: filters[due_date_legacy][start_date]
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: 'Value to filter inspection due date (pre-effective-due-date) by a starting date.
`yyyy-mm-dd` format. Cannot be combined with
`filters[due_date]`; that combination is rejected with
`You cannot use both due_date and due_date_legacy filters at the same time`.
'
- in: query
name: filters[due_date_legacy][end_date]
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: 'Value to filter inspection due date (pre-effective-due-date) by a ending date.
`yyyy-mm-dd` format. `end_date` must be on or after `start_date`, otherwise
the response is `end date must be equal or after start date`. See `start_date`
for the mutually-exclusive constraint with `filters[due_date]`.
'
- in: query
name: filters[completed_date][start_date]
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: 'Value to filter completed inspection date by a starting date.
`yyyy-mm-dd` format.
'
- in: query
name: filters[completed_date][end_date]
schema:
type: string
pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
description: 'Value to filter completed inspection date by a ending date.
`yyyy-mm-dd` format. `end_date` must be on or after `start_date`, otherwise
the response is `end date must be equal or after start date`.
'
- in: query
name: fields[]
x-internal: true
schema:
type: array
items:
type: string
description: Optional list of inspection fields to include in the response. When omitted, the default projection is returned. Internal use only.
- in: query
name: include_full_template_info
x-internal: true
schema:
type: string
enum:
- 'true'
- 'false'
default: 'false'
description: When `true`, each inspection's `template` field is returned as the full template document instead of the default digest. Internal use only.
responses:
'200':
description: 'Returns the paginated list of inspections. Each item is a (possibly partial)
`inspection_v1_response_model` — when `fields[]` is supplied, only the requested
fields are included on each item.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/inspection_v1_response_model'
count:
type: integer
description: Amount of elements in `data`.
total_results:
type: integer
description: Amount of total elements according to search criteria.
'400':
description: "Bad request — query-string filters failed validation. Examples:\n - `You cannot use both due_date and due_date_legacy filters at the same time`\n - `end date must be equal or after start date`\n - Messages such as `\"due_date.start_date\" with value \"...\" fails to match the required pattern`\n when the supplied date string is not an ISO date.\n"
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: end date must be equal or after start date
'401':
$ref: '#/components/responses/401'
/v2/inspections/creators:
get:
x-internal: true
summary: Get all inspection creators
tags:
- Inspections V2
description: Returns the list of users that have ever created an inspection the current user can see. Used to populate the `filters[created_by]` picker on the inspections list.
responses:
'200':
description: Returns the list of inspection creators
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/api_inspection_creator'
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'
components:
schemas:
inspection_v1_response_model:
type: object
description: Optional properties (`x_id`, `invite_date`, `inspection_label`, `fast_track`, `team_id`, `team`, `approval`, `rejection`, `signer`, `signature`, `completed_by`, `current_performer`, `edits`, `pdf_reports`, `pdf_report_location`, `pdf_images_location`, `health_score`, `review`, `sections_progress`) are omitted rather than nulled when not applicable.
required:
- id
- archived
- due_date
- effective_due_date
- inspection_template
- inspection_status
- role
- assigned_recipients
- property
- created_by
- created_date
- invites
- completed_date
- selected_features
- progress_pct
- rooms
- room_names
- is_initial_review_complete
- inspection_summary
- features_ratings
- settings
- metadata
- permissions
- signature_acknowledgement
properties:
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
x_id:
type: string
description: External inspection ID that maps to RentCheck inspections
team:
type: object
required:
- id
- name
- internal_label
- display_name
properties:
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
name:
type: string
description: The name field is the Team name that is displayed on recipient facing reports and communication.
example: The best company
internal_label:
type: string
description: The internal label is a convenience label to help differentiate similar teams a user may belong to. It's displayed to you and your team members.
example: The best company label
display_name:
type: string
description: Public-facing team label resolved for the requesting user.
nullable: true
description: Team the inspection belongs to. `null` when the inspection is not scoped to a team. `display_name` resolves to `internal_label` for team members and to the public-facing `name` otherwise.
due_date:
type: string
description: The inspection due date (legacy) is the original date by which the recipient must complete the inspection.
example: 2021-12-02 14:15:37.925000
effective_due_date:
type: string
description: The inspection’s effective due date is whichever due date applies — original, revision, or review — whether it’s already passed or still upcoming.
example: 2021-12-02 14:15:37.925000
inspection_template:
$ref: '#/components/schemas/inspection_template_v1_get_by_id_response_model'
inspection_status:
type: string
description: Inspection status represents the actual status of the current inspection.
enum:
- Scheduled
- Not Started
- Started
- In Review
- Completed
- Awaiting Review
- Revision Requested
- Revision Review
- Approved
role:
type: string
description: Role is a calculated field that designates the level of access to the inspection for the requesting user.
enum:
- creator
- self-perform-read
- self-perform-write
- invitee-write
- invitee-readonly
- viewer
assigned_recipients:
type: object
required:
- type
description: Recipients assigned to perform / receive this inspection.
properties:
type:
type: string
description: The type that defines who has access to the inspection
enum:
- residents
- self-perform
- emails
- teammates
- myself
example: emails
emails:
type: array
description: Specific emails assigned to this inspection when type is emails
items:
type: string
resident_type:
type: string
description: Type of residents assigned to this inspection when type is residents
enum:
- current
- future
example: current
property:
type: object
required:
- id
- address
- city
- zip_code
- type
description: Property snapshot embedded in the inspection. Carries the `type` discriminator and optionally `x_id` — distinct from the leaner basic-property shape used elsewhere.
properties:
id:
type: string
description: Property id
example: 00BRcZPSakXz6w7RYoE
x_id:
type: string
description: External property ID from a synced integration, when set.
address:
type: string
description: Property street address
example: 2001 Red Gates
address_2:
type: string
description: Property additional address info
example: Apt. 4B
city:
type: string
description: Property city
example: New Orleans
region:
type: string
description: Property region
example: Orleans
zip_code:
type: string
description: Property zip code
example: '70130'
type:
type: string
description: Property's type discriminator.
enum:
- Single-Family
- Multi-Family
- Apartment or Condo
- Commercial
- Building
- Community
- ''
rooms:
type: array
items:
type: string
deprecated: true
description: 'Deprecated: derived from `rooms_info` on read; use `rooms_info` instead. An array of strings representing the room configuration for the property. Only rooms that are not bedrooms and bathrooms can be set this way.'
example:
- Living Room
- Den
- Balcony
room_names:
type: array
deprecated: true
description: 'Deprecated: derived from `rooms_info` on read; use `rooms_info` instead. Returned unit room names.'
enum:
- Front Door
- Back Door
- Kitchen
- Dining Room
- Living Room
- Family Room
- Den
- Office
- Bedroom
- First Bedroom
- Second Bedroom
- Third Bedroom
- Fourth Bedroom
- Fifth Bedroom
- Sixth Bedroom
- Seventh Bedroom
- Eighth Bedroom
- Ninth Bedroom
- Tenth Bedroom
- Bathroom
- First Bathroom
- Second Bathroom
- Third Bathroom
- Fourth Bathroom
- Fifth Bathroom
- Sixth Bathroom
- Seventh Bathroom
- Eighth Bathroom
- Ninth Bathroom
- Tenth Bathroom
- Full Bathroom
- First Full Bathroom
- Second Full Bathroom
- Third Full Bathroom
- Fourth Full Bathroom
- Fifth Full Bathroom
- Sixth Full Bathroom
- Seventh Full Bathroom
- Eighth Full Bathroom
- Ninth Full Bathroom
- Tenth Full Bathroom
- Half Bathroom
- First Half Bathroom
- Second Half Bathroom
- Third Half Bathroom
- Fourth Half Bathroom
- Fifth Half Bathroom
- Sixth Half Bathroom
- Seventh Half Bathroom
- Eighth Half Bathroom
- Ninth Half Bathroom
- Tenth Half Bathroom
- Laundry Room
- Stairway
- Stairs
- Hallway
- Basement
- Loft
- Attic
- Storage Room
- Garage
- Carport
- Patio
- Balcony
- General
- Property Exterior & Grounds
- Multi-Unit Common Areas
archived:
type: boolean
description: Whether the inspection is archived.
inspection_label:
type: string
description: Optional user-visible label for the inspection.
fast_track:
type: boolean
description: Whether the inspection was created with the fast-track flow (skips standard review).
invite_date:
type: string
format: date-time
desc
# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentcheck/refs/heads/main/openapi/rentcheck-inspections-v2-api-openapi.yml