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.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/rentcheck-inspections-v2-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.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_template_v1_get_by_id_response_model:
type: object
description: Extends the template digest with a full `sections` list. Optional properties (`is_pro`, `new_until`, `subscription_id`, `signature_acknowledgement`, `is_resident_template`, `resident_template_info`) are omitted rather than nulled when not applicable.
required:
- id
- name
- internal_label
- display_name
- description
- is_rc_template
- is_fast_track_enabled
- template_type
- is_published
- team_ids
- property_type
- created_at
- contact_info
- permission_groups
- is_deleted
- is_new
- sections
properties:
id:
type: string
description: Inspection template ID.
example: rc_move_in
name:
type: string
description: The inspection template name.
internal_label:
type: string
description: The inspection template internal label.
display_name:
type: string
description: 'Resolved display name for the inspection template: the `internal_label` for users whose teams have access to the template, otherwise the public-facing `name`.'
description:
type: string
description: The inspection template description.
is_rc_template:
type: boolean
description: '`true` indicates that the inspection template was created by RentCheck. While `false` indicates that the inspection template was created by a user.'
is_fast_track_enabled:
type: boolean
description: Indicates whether the template supports fast track or not.
is_pro:
type: boolean
description: Whether the template is gated behind a Pro subscription. Defaults to `false` when absent.
new_until:
type: string
format: date-time
description: Optional ISO timestamp until which the template is marked as new in the UI.
is_new:
type: boolean
description: Whether the template should be flagged as new (computed from `new_until`).
is_deleted:
type: boolean
description: Whether the template has been soft-deleted (every team has lost access and it is not an RC template). Only set on the API response — not stored on the underlying document.
template_type:
type: string
description: When set to all-rooms the inspection will be created with all the rooms in the property. When set to specific-features the inspection will require features to be selected when creating the inspection.
enum:
- all-rooms
- specific-features
is_published:
type: boolean
description: Indicates if the template will be available for use on inspection creation. For RentCheck templates this is recomputed per subscription against the `unpublished_sub_ids` list.
team_ids:
type: array
items:
type: string
description: An array of team ids that have access to this template.
subscription_id:
type: string
description: The subscription id for the user that created this template.
property_type:
type: string
description: What property type this template applies to.
enum:
- unit
- building
- community
created_at:
type: string
description: The inspection template creation date.
example: 2021-12-02 14:15:37.925000
contact_info:
type: object
description: Optional contact email / phone surfaced to performers on the inspection.
properties:
email:
type: string
phone_number:
type: string
permission_groups:
type: array
description: Permission groups that grant access to this template. Each entry is `{ id, name }`.
items:
type: object
required:
- id
- name
properties:
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
name:
type: string
description: Permission group display name.
signature_acknowledgement:
$ref: '#/components/schemas/api_signature_acknowledgement'
is_resident_template:
type: boolean
description: Whether the template is a resident-facing template (rendered inside the resident app on the home screen).
resident_template_info:
type: object
description: Optional resident-template metadata used to render the entry in the resident app. Only populated when `is_resident_template` is `true`.
properties:
icon:
type: object
required:
- name
- color
properties:
name:
type: string
enum:
- house
- truck
- clock
description: Icon name displayed for the resident template.
color:
type: string
description: Icon color (hex string).
description:
type: string
description: Short description displayed under the template entry.
sections:
type: array
description: Array with the inspection template sections
items:
type: object
properties:
id:
type: string
description: ID of the template section.
name:
type: string
description: Name of the template section.
type:
type: string
description: Sections with type `room` are only added to the inspection if the property has those rooms configured. Sections with type `section` do not depend on the property configuration and are always added to the inspection
enum:
- room
- section
features:
description: Array with the section features
type: array
items:
type: object
properties:
id:
type: string
description: ID of the template section feature.
name:
type: string
description: Name of the template section feature.
description:
type: string
description: The instructions text shown to the inspection performer when they are in the camera view.
is_rating_required:
type: boolean
description: When set to true the inspection performer will be required to enter a feature rating. If false the rating options will not be shown.
is_video_enabled:
type: boolean
description: When set to true the inspection performer will be able to record a video wherever they can add media.
number_of_photos_required:
type: number
description: How many photos are required for this feature. When set to 0 the inspection performer will not be required to take any photos for this feature
reference_photos:
type: array
items:
type: string
description: An array of reference photos for this feature. These photos will be shown to the inspection performer when they are in the camera view
questions:
description: Array with the feature questions
type: array
items:
type: object
properties:
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
title:
type: string
description: Question title
type:
type: string
description: Question type
enum:
- yes/no
- free text
- multiple choice
- asset capture
answer_type:
type: string
description: Answer type
enum:
- single
# --- 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