RentCheck Account Settings API
The Account Settings API from RentCheck — 9 operation(s) for account settings.
The Account Settings API from RentCheck — 9 operation(s) for account settings.
openapi: 3.1.0
info:
title: RentCheck REST Account Settings 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: Account Settings
paths:
/v1/account-settings/email-customizations/{customizationId}:
delete:
x-internal: true
summary: Delete an email customization
tags:
- Account Settings
description: 'Removes the supplied email customization. After deletion the affected template + email type
falls back to the platform default content.
'
parameters:
- name: customizationId
in: path
description: Email customization ID.
required: true
schema:
type: string
responses:
'204':
description: The email customization has been removed.
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `subscription not found` or `email customization not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- subscription not found
- email customization not found
example: email customization not found
get:
x-internal: true
summary: Get an email customization by ID
tags:
- Account Settings
description: 'Returns a single email customization, including the rendered subject
merge tags available for the template / email type.
'
parameters:
- name: customizationId
in: path
description: Email customization ID.
required: true
schema:
type: string
responses:
'200':
description: Returns the requested email customization.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_email_customization'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `subscription not found` or `email customization not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- subscription not found
- email customization not found
example: email customization not found
/v1/account-settings/email-customizations:
get:
x-internal: true
summary: List email customizations
tags:
- Account Settings
description: 'Returns every email customization configured on the caller''s subscription, one entry per
inspection template / email type combination.
'
responses:
'200':
description: Returns the email customizations.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/basic_email_customization'
count:
type: integer
description: Amount of elements in `data`.
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `subscription not found` for the caller.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: subscription not found
post:
x-internal: true
summary: Upsert email customizations
tags:
- Account Settings
description: 'Creates or updates the email customization for a given `email_type_id` across one or more
inspection templates. Returns the resulting set of customizations.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/email_customization_upsert_request_model'
responses:
'200':
description: Returns the upserted email customizations.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/basic_email_customization'
'400':
description: Bad request — request validation rejected the body.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.email_type_id" is required'
'401':
$ref: '#/components/responses/401'
/v1/account-settings/email-customizations/test-email:
post:
x-internal: true
summary: Send a test email customization
tags:
- Account Settings
description: 'Renders the supplied email customization content using the supplied property + inspection
template context and sends it to the listed recipients. Used by the email builder UI to
preview the final email.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/email_customization_test_request_model'
responses:
'200':
description: Test email accepted for delivery.
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: success
'400':
description: Bad request — request validation rejected the body.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.recipients" is required'
'401':
$ref: '#/components/responses/401'
/v1/account-settings:
get:
summary: Get account settings
tags:
- Account Settings
description: Get account settings for user's subscription.
responses:
'200':
description: 'Returns the account settings for the caller''s subscription. When the
caller has no subscription or no settings record yet, the server
falls back to `defaultAccountSettings` so this endpoint never 4xx''s
on a successfully authenticated caller.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_account_settings'
'401':
$ref: '#/components/responses/401'
put:
summary: Update account settings
tags:
- Account Settings
description: Update parameters of the subscription's account settings.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/account_settings_update_request_model'
responses:
'200':
description: Returns the updated account settings
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_account_settings'
'400':
description: 'Bad request — request body validation failed, an unknown room name was
supplied, two-step inspection approval / custom maintenance
fields / AI damage-detection settings did not pass the
subscription-aware validations, or one of the validated values is
otherwise invalid.
'
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 — `subscription not found` (caller has no subscription) or
`account setting not found` (subscription has no settings record).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: subscription not found
/v1/account-settings/rooms:
delete:
x-internal: true
summary: Delete custom rooms from account settings
tags:
- Account Settings
description: 'Removes one or more custom rooms from the supplied `property_type` bucket on the caller''s
account settings.
Unlike most DELETE endpoints, this one accepts a JSON request body — required because the
removal is scoped both by `property_type` and by individual room entry.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/account_settings_delete_rooms_request_model'
responses:
'200':
description: Returns the updated account settings.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_account_settings'
'400':
description: Bad request — request validation rejected the body.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.property_type" is required'
'401':
$ref: '#/components/responses/401'
/v1/account-settings/signature-acknowledgements/{templateId}:
delete:
x-internal: true
summary: Delete a signature acknowledgement override
tags:
- Account Settings
description: 'Removes the signature acknowledgement override for the supplied inspection template. After
deletion the template falls back to the subscription-wide acknowledgement (or to the platform
default if no subscription-wide override is set). Returns the post-delete state in the same
shape as `GET /v1/account-settings/signature-acknowledgements`.
'
parameters:
- name: templateId
in: path
description: Inspection template ID whose acknowledgement override should be removed.
required: true
schema:
type: string
responses:
'200':
description: Returns the post-delete state of the signature acknowledgements.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/signature_acknowledgements_response_model'
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
/v1/account-settings/signature-acknowledgements:
get:
x-internal: true
summary: Get signature acknowledgements
tags:
- Account Settings
description: 'Returns the platform-default signature acknowledgement text, the subscription-wide override
(if any), and the per-inspection-template overrides (if any).
'
responses:
'200':
description: Returns the signature acknowledgements.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/signature_acknowledgements_response_model'
'401':
$ref: '#/components/responses/401'
put:
x-internal: true
summary: Update signature acknowledgements
tags:
- Account Settings
description: 'Upserts one or more signature acknowledgements. Each entry''s `id` is either the literal string
`default` (to update the subscription-wide acknowledgement) or an inspection template id
(to scope the change to a single template). Returns the post-update state in the same shape as
`GET /v1/account-settings/signature-acknowledgements`.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/signature_acknowledgements_update_request_model'
responses:
'200':
description: Returns the updated signature acknowledgements.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/signature_acknowledgements_response_model'
'400':
description: Bad request — request validation rejected the body.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.signature_acknowledgements" is required'
'401':
$ref: '#/components/responses/401'
/v1/notifications-preferences/{preferencesId}:
get:
x-internal: true
security: []
summary: Get notification preferences by token
tags:
- Account Settings
description: 'Resolve a notifications-preferences document from the encrypted token included
in RentCheck-issued notification emails. The token decrypts to the recipient''s
email; if no preferences document exists for that email yet, the default
preferences shape is returned with `user_email` populated. This endpoint is
reachable without an authenticated session — clients land on it from
"manage your notification preferences" links.
For the equivalent authenticated endpoint, use
`GET /v1/me/notifications-preferences`.
'
parameters:
- name: preferencesId
in: path
description: The encrypted token identifying the recipient. Issued by RentCheck and embedded in notification email links.
required: true
schema:
type: string
minLength: 1
responses:
'200':
description: Returns the notification preferences for the resolved recipient.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/notifications_preferences_response_model'
'401':
description: 'Unauthorized — the token failed to decrypt. Example: `invalid notifications preferences id`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 401
error:
type: string
example: invalid notifications preferences id
put:
x-internal: true
security: []
summary: Update notification preferences via token
tags:
- Account Settings
description: 'Update a notifications-preferences document for the recipient identified by
the encrypted token. Used by the "manage your notification preferences"
experience opened from RentCheck notification emails — no authenticated
session is required. Supplied fields are merged onto the current preferences;
if no preferences document exists yet, one is created and then patched.
For the equivalent authenticated endpoint, use
`PUT /v1/me/notifications-preferences`.
'
parameters:
- name: preferencesId
in: path
description: The encrypted token identifying the recipient. Issued by RentCheck and embedded in notification email links.
required: true
schema:
type: string
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/notifications_preferences_update_request_model'
responses:
'200':
description: Returns the updated notification preferences document.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/notifications_preferences_response_model'
'400':
description: 'Bad request — validation on the request body failed. `enabled` is
optional on every preference, so the only messages actually emitted
come from the `email` enum check on the three preferences that expose
it (`inspections_awaiting_review`, `inspections_in_revision_review`,
`inspections_completed`). Example:
`"inspections_awaiting_review.email" must be one of [all, created_by_me]`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"inspections_awaiting_review.email" must be one of [all, created_by_me]'
'401':
description: 'Unauthorized — the token failed to decrypt or did not resolve to a
well-formed email address. Example: `invalid notifications preferences id`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 401
error:
type: string
example: invalid notifications preferences id
/v1/sales/rev-share-prospects:
post:
x-internal: true
security: []
summary: Create a rev-share prospect
tags:
- Account Settings
description: 'Onboards a new revenue-share prospect: provisions a RentCheck user with a
temporary password for the supplied email, attaches the requested Chargebee
plan + addons to the user''s `prospect_data`, persists the self-reported
portfolio size, and triggers the rev-share-prospect welcome email.
Reachable without an authenticated session; the endpoint is invoked by the
public RentCheck marketing flow.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/rev_share_prospect_create_request_model'
responses:
'200':
description: Returns the prospect's RentCheck user profile after enrollment.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: object
description: The RentCheck user profile for the newly-created prospect, with the rev-share `prospect_data` block populated.
additionalProperties: true
'400':
description: "Bad request — request body validation failed, or the supplied\nChargebee plan / addons could not be resolved against the live\nChargebee catalog. Examples:\n - `\"prospect_email\" is required`\n - `\"prospect_email\" must be a valid email`\n - `\"total_properties\" is required`\n - `\"chargebee_plan_id\" is required`\n - `\"chargebee_addon_ids\" is required`\n - `Can't find selected plan`\n - `Some of the addons couldn't be found, found these [...]`\n"
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"prospect_email" must be a valid email'
'409':
description: 'Conflict — a RentCheck user already exists for the supplied
`prospect_email`. Example: `user already exists`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 409
error:
type: string
example: user already exists
components:
schemas:
api_signature_acknowledgement:
x-internal: true
type: object
required:
- text
- updated_by
description: Signature acknowledgement.
properties:
text:
type: string
updated_by:
type: object
required:
- id
- username
- email
- updated_date
properties:
id:
type: string
username:
type: string
email:
type: string
updated_date:
type: string
format: date-time
api_email_customization:
x-internal: true
type: object
required:
- id
- content
- message
- subject
- template
description: Email customization.
properties:
id:
type: string
content:
type: string
description: HTML / template body of the email customization.
message:
type: object
required:
- email_title
- email_type
- email_explanatory_text
properties:
email_title:
type: string
email_type:
type: string
enum:
- inspection_invitation_new_to_rentcheck
- inspection_invitation_existing_rentcheck_users
- final_inspection_reminder_3_days_overdue
- inspection_approval_confirmation
- inspection_review_request
description: Allowed email-customization types.
email_explanatory_text:
type: string
subject:
type: object
required:
- title
- merge_tags
properties:
title:
type: string
merge_tags:
type: array
items:
type: object
required:
- value
- display_name
properties:
value:
type: string
display_name:
type: string
template:
type: object
required:
- id
- name
- internal_label
properties:
id:
type: string
name:
type: string
internal_label:
type: string
updated_by:
type: object
properties:
username:
type: string
email:
type: string
updated_date:
type: string
format: date-time
rev_share_prospect_create_request_model:
type: object
required:
- prospect_email
- total_properties
- chargebee_plan_id
properties:
prospect_email:
type: string
format: email
description: Email address of the prospect being onboarded.
user_name:
type: string
description: Optional display name to assign to the newly-created prospect user.
total_properties:
type: string
description: Self-reported portfolio size for the prospect, as a numeric string parsed by the backend.
chargebee_plan_id:
type: string
description: Chargebee plan id the prospect should be associated with.
chargebee_addon_ids:
type: array
items:
type: string
description: Chargebee addon ids to attach to the prospect alongside the selected plan.
email_customization_upsert_request_model:
x-internal: true
type: object
required:
- content
- email_type_id
- inspection_template_ids
description: Request body for upserting an email customization.
properties:
content:
type: string
email_type_id:
type: string
enum:
- inspection_invitation_new_to_rentcheck
- inspection_invitation_existing_rentcheck_users
- final_inspection_reminder_3_days_overdue
- inspection_approval_confirmation
- inspection_review_request
description: Allowed email-customization types.
inspection_template_ids:
type: array
items:
type: string
signature_acknowledgements_update_request_model:
x-internal: true
type: object
required:
- signature_acknowledgements
description: Use the literal id `default` to update the subscription-wide acknowledgement, or an inspection template id to scope the change.
properties:
# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentcheck/refs/heads/main/openapi/rentcheck-account-settings-api-openapi.yml