RentCheck Properties V3 API
The Properties V3 API from RentCheck — 4 operation(s) for properties v3.
The Properties V3 API from RentCheck — 4 operation(s) for properties v3.
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:rentcheck-properties-v3-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 Properties V3 API
version: 1.0.0
description: '## Mission
At RentCheck, our mission is plain and simple: To make renting fair and transparent for everyone involved.'
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: Properties V3
paths:
/v3/properties/buildings:
get:
x-internal: true
summary: Get all buildings (v3 digest)
tags:
- Properties V3
description: 'Returns a paginated list of building property digests. V3 returns a trimmed `api_property_digest`
projection and uses the `filters[team][value|condition]` syntax (with the legacy `team_id[]` parameter
still accepted).'
parameters:
- $ref: '#/components/parameters/V3PropertyListPageSize'
- $ref: '#/components/parameters/V3PropertyListPageNumber'
- $ref: '#/components/parameters/V3PropertyListSortBy'
- $ref: '#/components/parameters/V3PropertyListSortType'
- in: query
name: search
schema:
type: string
description: Search string to match building addresses.
- $ref: '#/components/parameters/V3PropertyListTeamValue'
- $ref: '#/components/parameters/V3PropertyListTeamCondition'
- $ref: '#/components/parameters/V3PropertyListTeamIdLegacy'
- $ref: '#/components/parameters/V3PropertyListLastCompletedStart'
- $ref: '#/components/parameters/V3PropertyListLastCompletedEnd'
- $ref: '#/components/parameters/V3PropertyListSynced'
- $ref: '#/components/parameters/V3PropertyListExtraFields'
responses:
'200':
description: Returns the paginated list of building digests.
content:
application/json:
schema:
$ref: '#/components/schemas/v3_property_list_response_model'
'400':
description: 'One of the `filters` values failed validation. Only the `filters`
object is server-side validated;
invalid `sort_by` / `sort_type` values do NOT surface as 400.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
error:
type: string
example: '"filters.synced" must be one of [synced, not synced]'
'401':
$ref: '#/components/responses/401'
operationId: getV3PropertiesBuildings
x-operation-id-source: derived
/v3/properties/communities:
get:
x-internal: true
summary: Get all communities (v3 digest)
tags:
- Properties V3
description: 'Returns a paginated list of community property digests. Uses the same filter / pagination shape as
`/v3/properties/buildings` and `/v3/properties/units`.'
parameters:
- $ref: '#/components/parameters/V3PropertyListPageSize'
- $ref: '#/components/parameters/V3PropertyListPageNumber'
- $ref: '#/components/parameters/V3PropertyListSortBy'
- $ref: '#/components/parameters/V3PropertyListSortType'
- in: query
name: search
schema:
type: string
description: Search string to match community addresses.
- $ref: '#/components/parameters/V3PropertyListTeamValue'
- $ref: '#/components/parameters/V3PropertyListTeamCondition'
- $ref: '#/components/parameters/V3PropertyListTeamIdLegacy'
- $ref: '#/components/parameters/V3PropertyListLastCompletedStart'
- $ref: '#/components/parameters/V3PropertyListLastCompletedEnd'
- $ref: '#/components/parameters/V3PropertyListSynced'
- $ref: '#/components/parameters/V3PropertyListExtraFields'
responses:
'200':
description: Returns the paginated list of community digests.
content:
application/json:
schema:
$ref: '#/components/schemas/v3_property_list_response_model'
'400':
description: 'One of the `filters` values failed validation. Only the `filters`
object is server-side validated;
invalid `sort_by` / `sort_type` values do NOT surface as 400.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
error:
type: string
example: '"filters.synced" must be one of [synced, not synced]'
'401':
$ref: '#/components/responses/401'
operationId: getV3PropertiesCommunities
x-operation-id-source: derived
/v3/properties/units:
get:
x-internal: true
summary: Get all units (v3 digest)
tags:
- Properties V3
description: 'Returns a paginated list of unit property digests. Uses the same filter / pagination shape as
`/v3/properties/buildings` and `/v3/properties/communities`.'
parameters:
- $ref: '#/components/parameters/V3PropertyListPageSize'
- $ref: '#/components/parameters/V3PropertyListPageNumber'
- $ref: '#/components/parameters/V3PropertyListSortBy'
- $ref: '#/components/parameters/V3PropertyListSortType'
- in: query
name: search
schema:
type: string
description: Search string to match unit addresses.
- $ref: '#/components/parameters/V3PropertyListTeamValue'
- $ref: '#/components/parameters/V3PropertyListTeamCondition'
- $ref: '#/components/parameters/V3PropertyListTeamIdLegacy'
- $ref: '#/components/parameters/V3PropertyListLastCompletedStart'
- $ref: '#/components/parameters/V3PropertyListLastCompletedEnd'
- $ref: '#/components/parameters/V3PropertyListSynced'
- $ref: '#/components/parameters/V3PropertyListExtraFields'
responses:
'200':
description: Returns the paginated list of unit digests.
content:
application/json:
schema:
$ref: '#/components/schemas/v3_property_list_response_model'
'400':
description: 'One of the `filters` values failed validation. Only the `filters`
object is server-side validated;
invalid `sort_by` / `sort_type` values do NOT surface as 400.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
error:
type: string
example: '"filters.synced" must be one of [synced, not synced]'
'401':
$ref: '#/components/responses/401'
operationId: getV3PropertiesUnits
x-operation-id-source: derived
/v3/properties/permissions:
get:
x-internal: true
summary: Get property permissions for the current user
tags:
- Properties V3
description: 'Returns the property-level permissions that drive the RentCheck app UI (e.g. whether the user can
trigger bulk unit imports). Used internally by the mobile and web apps.'
responses:
'200':
description: Returns the property permissions for the current user.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_properties_permissions'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `user not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
operationId: getV3PropertiesPermissions
x-operation-id-source: derived
components:
schemas:
v3_property_list_response_model:
type: object
required:
- status
- data
- count
- total_results
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/api_property_digest'
count:
type: integer
description: Amount of elements in `data`.
total_results:
type: integer
description: Amount of total elements according to search criteria.
room_info:
type: object
required:
- type
- name
- label
description: Structured room entry.
properties:
type:
type: string
description: The no-ordinal room kind (e.g. "Bedroom"), recomputed from `name` on every write.
example: Bedroom
name:
type: string
description: The ordinal room name (e.g. "First Bedroom") and the source of truth for the entry.
example: First Bedroom
label:
type: string
description: Human-meaningful display label that lets multiple rooms of the same kind be differentiated. Defaults to `name`.
example: First Bedroom
api_properties_permissions:
type: object
required:
- can_import_units
properties:
can_import_units:
type: boolean
description: Whether the current user can import units in bulk
api_property_digest:
type: object
required:
- id
- address
- city
- zip_code
- property_type
- team
- last_completed_inspection
- permissions
- rooms_info
properties:
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
address:
type: string
description: This is the street address for the <<resource>>.
example: 2001 Red Gates
address_2:
type: string
description: Additional address information for the <<resource>>.
example: Apt. 4B
city:
type: string
description: This is the city of the <<resource>>.
example: New Orleans
region:
type: string
description: The broader region or area in which the <<resource>> is located.
example: Orleans
zip_code:
type: string
description: This is the Postal Code for the <<resource>>.
example: '70130'
name:
type: string
description: Human-friendly property name. Optional — when the underlying property has no name the field is omitted from the response rather than serialised as `null` (commonly the case for units).
property_type:
type: string
description: Discriminator value identifying this property as a Unit, Building, or Community. The empty string represents an unset unit subtype.
enum:
- Single-Family
- Multi-Family
- Apartment or Condo
- Commercial
- Building
- Community
- ''
team:
type: object
required:
- id
- name
- internal_label
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
nullable: true
last_completed_inspection:
type: object
nullable: true
required:
- date
- id
- type
properties:
date:
type: string
description: Completion date of the last completed inspection
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
type:
type: string
rooms_info:
type: array
description: Structured per-room metadata and the source of truth for room labeling. `rooms` and `room_names` are derived from this. `type` is the no-ordinal room kind (e.g. "Bedroom"), `name` is the ordinal name (e.g. "First Bedroom"), and `label` is a human-meaningful label that defaults to `name`.
items:
$ref: '#/components/schemas/room_info'
permissions:
type: object
required:
- can_delete
- can_create_inspection
- can_add_to_parent_property
- can_reassign_team
properties:
can_delete:
type: boolean
can_create_inspection:
type: boolean
can_add_to_parent_property:
type: boolean
can_reassign_team:
type: boolean
sync_data:
type: object
readOnly: true
nullable: true
required:
- vendor
- last_sync
description: Sync data for the property, or `null` when the property is not synced from an external integration, with `is_recently_synced` set to `true` when `last_sync` is within the last 7 days.
properties:
is_recently_synced:
type: boolean
last_sync:
type: string
description: Sync date, in ISO format
example: 2022-12-02 14:15:37.925000
vendor:
type: string
description: The third party vendor for this sync
enum:
- rentmanager
- yardi
- appfolio
- jenark
- rentvine
- buildium
status:
type: string
description: Latest manual-sync status. Only present on integrations that expose it (e.g. Buildium).
enum:
- scheduled
- processing
- success
- error
error:
type: string
nullable: true
description: Error message from the most recent sync attempt, if any.
id:
oneOf:
- type: string
- type: integer
description: External vendor id for the property/unit (string for most vendors; integer for AppFolio).
x_id:
type: string
description: Vendor-native external id echo for the legacy Rentvine / Rent Manager envelope. Kept for debugging/audit parity with the historic `sync_data`.
location_id:
type: string
description: Rent Manager location (property) id — legacy `sync_data`, debugging/audit.
integration_id:
type: string
description: RentCheck integration record id (Rent Manager legacy sync) — debugging/audit.
short_property_id:
type: string
description: AppFolio short property id, when synced from AppFolio.
short_unit_id:
type: string
description: AppFolio short unit id, when synced from AppFolio.
upload_response:
type: array
description: AppFolio per-destination inspection-upload outcomes.
items:
type: object
required:
- resource
- resource_id
- uploaded_id
properties:
resource:
type: string
enum:
- units
- properties
- occupancies
resource_id:
type: string
uploaded_id:
type: string
parameters:
V3PropertyListPageSize:
in: query
name: page_size
schema:
type: integer
default: 20
minimum: 0
description: The number of elements in the data collection. Sizes above `250` are clamped to `250` to keep responses bounded (matches the API-wide pagination policy documented in the OpenAPI intro).
V3PropertyListSynced:
in: query
name: synced
schema:
type: string
enum:
- synced
- not synced
description: Filter by external integration sync status.
V3PropertyListTeamIdLegacy:
in: query
name: team_id[]
deprecated: true
schema:
type: array
items:
type: string
description: Legacy team id filter. Prefer `filters[team][value]`.
V3PropertyListSortType:
in: query
name: sort_type
schema:
type: string
default: asc
pattern: ^(?:[Aa][Ss][Cc]|[Dd][Ee][Ss][Cc])$
example: asc
description: Sort direction. Case-insensitive, so `asc`/`ASC`/`Asc` and `desc`/`DESC`/`Desc` are all accepted.
V3PropertyListLastCompletedEnd:
in: query
name: last_completed_inspection_end_date
schema:
oneOf:
- type: string
format: date
- type: string
format: date-time
- type: string
enum:
- ''
description: ISO-8601 date (`YYYY-MM-DD`) or date-time upper bound for the last completed inspection filter. Both date and date-time forms are accepted, and an empty string is treated as "no filter".
V3PropertyListTeamCondition:
in: query
name: filters[team][condition]
schema:
type: string
enum:
- any_of
- none_of
description: Condition to apply to the team filter.
V3PropertyListTeamValue:
in: query
name: filters[team][value]
schema:
type: string
description: List of team ids to filter by. Multiple values are concatenated with `|`. When `filters[team][condition]` is supplied, this must resolve to at least one id, so an empty list surfaces as 400 `"filters.teamIds.value" must contain at least 1 items`.
V3PropertyListPageNumber:
in: query
name: page_number
schema:
type: integer
default: 0
minimum: 0
description: Zero-indexed page number.
V3PropertyListSortBy:
in: query
name: sort_by
schema:
type: string
default: address
enum:
- address
- name
- last_completed_inspection
description: Sort results by one of the available fields.
V3PropertyListExtraFields:
in: query
name: extra_fields[]
schema:
type: array
items:
type: string
description: Optional list of extra fields to include in each digest (e.g. `last_completed_inspection`).
V3PropertyListLastCompletedStart:
in: query
name: last_completed_inspection_start_date
schema:
oneOf:
- type: string
format: date
- type: string
format: date-time
- type: string
enum:
- ''
description: ISO-8601 date (`YYYY-MM-DD`) or date-time lower bound for the last completed inspection filter. Both date and date-time forms are accepted, and an empty string is treated as "no filter".
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 401
error:
type: string
description: Error message
enum:
- token is not valid
- authorization header is empty
- authorization header is not valid
- 'format for Authorization must be: Bearer [token]'
- refresh token is not valid for resources
- not well-formed token
example: token is not valid
securitySchemes:
bearerAuth:
description: Authorization key needed to use the API
type: http
scheme: bearer
bearerFormat: JWT
x-app-id:
description: Represents the identification of you application
type: apiKey
name: x-app-id
in: header
required: true
x-app-secret:
description: Represents the secret for your application
type: apiKey
name: x-app-secret
in: header
required: true