RentCheck Inspection Features API
The Inspection Features API from RentCheck — 13 operation(s) for inspection features.
The Inspection Features API from RentCheck — 13 operation(s) for inspection features.
openapi: 3.1.0
info:
title: RentCheck REST Account Settings Inspection Features 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: Inspection Features
paths:
/v1/inspections/{inspectionId}/features:
get:
summary: Get all features
tags:
- Inspection Features
description: Get all features for a given inspection ID
parameters:
- name: inspectionId
in: path
description: Inspection ID
required: true
schema:
type: string
responses:
'200':
description: Returns all features
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/inspection_feature_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 — `inspection not found`, `property not found`, or `user not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection not found
/v1/inspections/{inspectionId}/features/{featureId}:
get:
summary: Get a feature by ID for a given inspection
tags:
- Inspection Features
description: Get a feature by ID and inspection ID
parameters:
- name: inspectionId
in: path
description: Inspection ID
required: true
schema:
type: string
- name: featureId
in: path
description: Feature ID
required: true
schema:
type: string
responses:
'200':
description: Returns the requested feature
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/inspection_feature_response_model'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection feature not found
enum:
- inspection not found
- property not found
- inspection feature not found
/v1/features/{featureId}/rotatePhoto:
put:
x-internal: true
summary: Rotate feature photo
tags:
- Inspection Features
description: Update photo orientation in a feature
parameters:
- name: featureId
in: path
description: Inspection feature ID.
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/feature_rotate_photo_request_model'
responses:
'200':
description: Returns the status code
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
'401':
$ref: '#/components/responses/401'
'403':
description: 'Forbidden — the caller is not on the inspection''s `authorized_user_ids`.
Surfaced as `User doesn''t have permissions`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
example: User doesn't have permissions
'404':
description: 'Not Found — the feature, the referenced photo on the feature, the
owning inspection, or the underlying image data could not be
located.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- feature not found
- photoURL not found
- inspection not found
- image data not found
example: feature not found
/v1/inspections/{inspectionId}/features/{featureId}/metadata:
get:
x-internal: true
summary: Get image metadata for an inspection feature
tags:
- Inspection Features
description: 'Returns the AI-generated image metadata documents for every photo on a single
inspection feature. Each entry surfaces the analysis status, the inferred
damage items, and the maintenance flags currently associated with the
underlying feature. Available only on subscriptions whose account settings
have AI image analysis enabled.
'
parameters:
- name: inspectionId
in: path
description: Inspection ID
required: true
schema:
type: string
minLength: 1
- name: featureId
in: path
description: Inspection feature ID (must belong to the supplied inspection)
required: true
schema:
type: string
minLength: 1
responses:
'200':
description: Returns the list of image metadata documents for the feature.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/image_metadata_get_all_response_model'
count:
type: integer
description: Number of metadata documents in the response.
example: 3
'401':
$ref: '#/components/responses/401'
'403':
description: 'Forbidden — `damage detection not enabled` (the caller''s account settings do
not have AI image analysis enabled).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
example: damage detection not enabled
'404':
description: 'Not Found — `inspection not found` or `user not found` (the inspection access
check fails), `inspection feature not found` (no feature with that id, or it
does not belong to the supplied inspection), or `subscription not found`
(the caller has no active subscription).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection feature not found
/v1/inspections/{inspectionId}/features/{featureId}/metadata/{metadataId}:
put:
x-internal: true
summary: Update image metadata for an inspection feature
tags:
- Inspection Features
description: 'Patch the AI-generated image metadata document for a single photo on an
inspection feature. Currently only `damage_items[].user_feedback` is editable
— the supplied damage items are matched by `id` and merged onto the existing
document. Used by the reviewer experience to ack/correct AI-inferred damage.
'
parameters:
- name: inspectionId
in: path
description: Inspection ID
required: true
schema:
type: string
minLength: 1
- name: featureId
in: path
description: Inspection feature ID (must belong to the supplied inspection)
required: true
schema:
type: string
minLength: 1
- name: metadataId
in: path
description: Image metadata ID (must belong to the supplied feature)
required: true
schema:
type: string
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/image_metadata_update_request_model'
responses:
'200':
description: Returns the updated image metadata document.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_image_metadata'
'400':
description: "Bad request — request body validation failed. Examples:\n - `\"data.damage_items[0].id\" is required`\n - `\"data.damage_items[0].user_feedback\" must be one of [correct, incorrect]`\n"
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.damage_items[0].id" is required'
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — `inspection not found` or `user not found` (the inspection access
check fails), `inspection feature not found` (the feature does not exist or
does not belong to the supplied inspection), `subscription not found`, or
`image metadata not found`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: image metadata not found
/v2/inspections/{inspectionId}/features/{featureId}/review/approve:
post:
x-internal: true
summary: Approve a feature review
tags:
- Inspection Features
description: Approves a previously requested review on a feature. Returns the updated feature.
parameters:
- name: inspectionId
in: path
required: true
description: Inspection ID
schema:
type: string
- name: featureId
in: path
required: true
description: Feature ID
schema:
type: string
responses:
'200':
description: Returns the updated feature.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_inspection_feature'
'400':
description: 'Bad request — the caller''s role is not permitted to approve a feature review
(`can''t approve a feature review as this role`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
error:
type: string
example: can't approve a feature review as this role
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
description: 'Not Found — `feature not found` when the referenced feature cannot be
resolved. `inspection not found` can also be returned when the parent
inspection is missing.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- feature not found
- inspection not found
example: feature not found
/v2/inspections/{inspectionId}/features/{featureId}/flags:
post:
x-internal: true
summary: Create a maintenance flag on a feature
tags:
- Inspection Features
description: Adds a maintenance flag to the given feature. Returns the updated feature.
parameters:
- name: inspectionId
in: path
required: true
description: Inspection ID
schema:
type: string
- name: featureId
in: path
required: true
description: Feature ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/maintenance_flag_create_request_model'
responses:
'200':
description: Returns the feature with the new flag attached.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_inspection_feature'
'400':
description: 'Bad request — typical messages: `Invalid skill provided`, plus validation
failures on the request body fields (`note`, `skill`, `responsibility`, etc.
— see `maintenance_flag_create_request_model`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
error:
type: string
example: Invalid skill provided
'401':
$ref: '#/components/responses/401'
'403':
description: Forbidden — the caller does not have permission to add flags to this feature.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
'404':
description: 'Not Found — `inspection feature not found` / `inspection not found`
when the referenced feature or inspection cannot be resolved.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection feature not found
/v2/inspections/{inspectionId}/features/{featureId}/flags/{flagId}:
delete:
x-internal: true
summary: Delete a maintenance flag from a feature
tags:
- Inspection Features
description: Removes the named maintenance flag from a feature. Returns the updated feature.
parameters:
- name: inspectionId
in: path
required: true
description: Inspection ID
schema:
type: string
- name: featureId
in: path
required: true
description: Feature ID
schema:
type: string
- name: flagId
in: path
required: true
description: Maintenance flag ID
schema:
type: string
responses:
'200':
description: Returns the updated feature.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_inspection_feature'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
description: 'Not Found — `maintenance flag not found` when the supplied `flagId`
is not present on the feature; `inspection not found` can also be
returned when the parent inspection is missing.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: maintenance flag not found
put:
x-internal: true
summary: Upsert a maintenance flag on a feature
tags:
- Inspection Features
description: 'Upserts the named maintenance flag on a feature. If a flag with the
supplied `flagId` already exists on the feature it is updated in place;
otherwise a new flag with that id is created and merged with the request
body. Returns the updated feature. A nonexistent `flagId` is never a
source of 404s — once the route has matched, an unknown id triggers the
create branch instead. (Omitting the `{flagId}` path segment entirely
still fails because the segment is required.)
'
parameters:
- name: inspectionId
in: path
required: true
description: Inspection ID
schema:
type: string
- name: featureId
in: path
required: true
description: Feature ID
schema:
type: string
- name: flagId
in: path
required: true
description: Maintenance flag ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/maintenance_flag_upsert_request_model'
responses:
'200':
description: Returns the updated feature.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_inspection_feature'
'400':
description: 'Bad request — typical messages: `Invalid skill provided`, plus validation
failures on the request body fields (`note`, `skill`, `responsibility`, etc.
— see `maintenance_flag_upsert_request_model`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
error:
type: string
example: Invalid skill provided
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
description: 'Not Found — `feature not found` or `user not found`, or `inspection
feature not found` / `inspection not found` when the referenced feature
or inspection cannot be resolved. A missing `flagId` is NOT a 404 —
the endpoint creates the flag on demand.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- feature not found
- user not found
- inspection feature not found
- inspection not found
example: feature not found
/v2/inspections/{inspectionId}/features/{featureId}/revision:
delete:
x-internal: true
summary: Delete a revision request on a feature
tags:
- Inspection Features
description: Cancels an outstanding revision request on a feature. Returns the updated feature.
parameters:
- name: inspectionId
in: path
required: true
description: Inspection ID
schema:
type: string
- name: featureId
in: path
required: true
description: Feature ID
schema:
type: string
responses:
'200':
description: Returns the updated feature.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_inspection_feature'
'400':
description: 'Bad request — the caller''s role is not permitted to delete a revision
(`can''t delete a revision as this role`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
error:
type: string
example: can't delete a revision as this role
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
description: 'Not Found — `inspection feature not found` / `user not found` when the
referenced resource cannot be resolved. `inspection not found` can also
be returned when the parent inspection is missing.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- inspection feature not found
- user not found
- inspection not found
example: inspection feature not found
put:
x-internal: true
summary: Upsert a revision request on a feature
tags:
- Inspection Features
description: 'Creates or updates the revision request on a feature. Reviewers use this to ask the performer to redo a feature; the performer''s subsequent edits set `revision.updated` to true.
'
parameters:
- name: inspectionId
in: path
required: true
description: Inspection ID
schema:
type: string
- name: featureId
in: path
required: true
description: Feature ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/inspection_feature_revision_request_model'
responses:
'200':
description: Returns the updated feature.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_inspection_feature'
'400':
description: 'Bad request — request body validation failed, or the caller''s role is
not permitted to request a revision (`can''t request a revision as this role`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
error:
type: string
example: can't request a revision as this role
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'404':
description: 'Not Found — `inspection feature not found` / `user not found` when the
referenced resource cannot be resolved. `inspection not found` can also
be returned when the parent inspection is missing.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- inspection feature not found
- user not found
- inspection not found
example: inspection feature not found
/v2/inspections/{inspectionId}/features/{featureId}/edit:
put:
x-internal: true
summary: Edit an inspection feature
tags:
- Inspection Features
description: 'Applies a partial update to an existing inspection feature (rating, responses, notes, media). Returns the updated feature.
'
parameters:
- name: inspectionId
in: path
required: true
description: Inspection ID
schema:
type: string
- name: featureId
in: path
required: true
description: Feature ID
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/inspection_feature_edit_request_model'
responses:
'200':
description: Returns the updated feature.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_inspection_feature'
'400':
description: 'Bad request — request body validation failed (e.g. inv
# --- truncated at 32 KB (81 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentcheck/refs/heads/main/openapi/rentcheck-inspection-features-api-openapi.yml