RentCheck Buildings API
The Buildings API from RentCheck — 3 operation(s) for buildings.
The Buildings API from RentCheck — 3 operation(s) for buildings.
openapi: 3.1.0
info:
title: RentCheck REST Account Settings Buildings 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: Buildings
paths:
/v1/buildings:
post:
summary: Create a building
tags:
- Buildings
description: This resource allows you to create a Building. Buildings are properties that can contain a number of individual Units.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/building_create_request_model'
responses:
'200':
description: Returns the created building
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/building_response_model'
'400':
description: "Bad request — request body validation failed, or the caller is not\nauthorized to assign the building to the requested team. The `floors` field is\ncapped at 100. Examples:\n - `\"team_id\" is required`\n - `\"address\" is required`\n - `\"city\" is required`\n - `\"zip_code\" is required`\n - `\"floors\" is required`\n - `\"floors\" must be less than or equal to 100`\n - `\"name\" is required`\n - `team_id has an invalid value` (raised for both `team_id` and any\n value in `additional_team_ids` that is not one of the caller's\n organizations — both cases share the same error string)\n - `\"value\" contains a conflict between optional exclusive peers [rooms, rooms_info]` —\n supplying both `rooms` and `rooms_info` at the same time is\n rejected.\n"
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"address" is required'
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — one of the supplied `unit_ids` is not accessible, is itself a
Building/Community, or does not exist. The message carries the
offending id, i.e. `unit not found (<id>)`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: unit not found
delete:
summary: Delete buildings
tags:
- Buildings
description: This resource allows you to delete multiple buildings at once.
parameters:
- in: query
name: id[]
required: true
style: form
explode: true
schema:
type: array
minItems: 1
items:
type: string
description: 'The ids of the buildings to be deleted. Repeat the parameter to send
multiple values (e.g. `?id[]=abc&id[]=def`). The query string must
contain `id[]`, and a missing array
surfaces as a 500. Individual entries are not validated; ids the
caller cannot access are silently skipped.
'
responses:
'200':
description: Returns the count of deleted buildings.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: object
required:
- totalRemoved
properties:
totalRemoved:
type: integer
description: Number of buildings that were removed.
example: 1
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/synced_property_delete_forbidden'
/v1/buildings/{buildingId}:
get:
summary: Get a building by id
tags:
- Buildings
description: This resource allows you to get a Building. Buildings are properties that can contain a number of individual Units.
parameters:
- name: buildingId
in: path
description: Building ID
required: true
schema:
type: string
responses:
'200':
description: Returns the requested building
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/building_response_model'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — `building not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: building not found
put:
summary: Update a building
tags:
- Buildings
description: Update parameters of a building
parameters:
- name: buildingId
in: path
description: Building ID
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/building_update_request_model'
responses:
'200':
description: Returns the updated building
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/building_response_model'
'400':
description: "Bad request — request body validation failed (the `floors` field is\ncapped at 100, the same constraint as on create) or the supplied\n`team_id` / `additional_team_ids` are not ones the caller can access.\nCommon error strings:\n - `\"floors\" must be less than or equal to 100`\n - `team_id has an invalid value`\n - `\"value\" contains a conflict between optional exclusive peers [rooms, rooms_info]` —\n supplying both `rooms` and `rooms_info` at the same time is\n rejected.\n"
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: team_id has an invalid value
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — `building not found`, or one of the supplied `unit_ids` is not
accessible. Inaccessible-unit failures carry the offending id in the
message, i.e. `unit not found (<id>)`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: building not found
/v1/properties/{propertyId}/merge/{targetPropertyId}:
put:
x-internal: true
summary: Merge two properties
tags:
- Buildings
description: 'Merges the origin property (`propertyId`) into the target property (`targetPropertyId`). The
origin is soft-deleted and its occupancies / residents are re-parented to the target. When
`transfer_rooms` is `true`, the origin''s room configuration is merged onto the target.
'
parameters:
- name: propertyId
in: path
description: Origin property ID (the one being merged away).
required: true
schema:
type: string
- name: targetPropertyId
in: path
description: Target property ID (the one that will be kept).
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/properties_merge_request_model'
responses:
'200':
description: Returns the merged target property.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
oneOf:
- $ref: '#/components/schemas/unit_response_model'
- $ref: '#/components/schemas/building_response_model'
- $ref: '#/components/schemas/community_response_model'
discriminator:
propertyName: property_type
mapping:
? ''
: '#/components/schemas/unit_response_model'
Single-Family: '#/components/schemas/unit_response_model'
Multi-Family: '#/components/schemas/unit_response_model'
Apartment or Condo: '#/components/schemas/unit_response_model'
Commercial: '#/components/schemas/unit_response_model'
Building: '#/components/schemas/building_response_model'
Community: '#/components/schemas/community_response_model'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/synced_property_merge_forbidden'
'404':
description: 'Not Found — `property not found` or `user not found`. Both the origin
and target property lookups surface as `property not found` when a
property is missing or inaccessible.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: property not found
components:
schemas:
properties_merge_request_model:
type: object
properties:
transfer_rooms:
type: boolean
description: When `true`, the rooms of the origin property are merged onto the target property.
default: false
community_response_model:
type: object
required:
- id
- name
- address
- city
- zip_code
- property_type
- team
- room_names
- last_completed_inspection
- permissions
- created_date
- updated_date
- rooms_info
- rooms
- creation_source
- created_by
- additional_team_ids
- building_ids
properties:
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
x_id:
type: string
description: External property ID that maps to RentCheck properties
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
readOnly: true
description: Team that owns this community. May be null when the underlying team has been removed.
property_type:
type: string
description: Discriminator value identifying this property as a Community.
enum:
- Community
example: Community
readOnly: true
name:
type: string
description: This is the name of the Community.
example: Whispering Pines
address:
type: string
description: This is the street address for the Community.
example: 2001 Red Gates
address_2:
type: string
description: Additional address information for the Community.
example: Apt. 4B
city:
type: string
description: This is the city of the Community.
example: New Orleans
region:
type: string
description: The broader region or area in which the Community is located.
example: Orleans
zip_code:
type: string
description: This is the Postal Code for the Community.
example: '70130'
additional_team_ids:
type: array
description: Community can be accessed by multiple teams. This field lists the entity ids of Teams that have access to the Community
items:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
building_ids:
type: array
description: Community can have 1+ Buildings associated with them. building_ids is a list of entity ids of the Buildings that belong to a Community
items:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
creation_source:
type: string
description: App that perform the entity creation.
enum:
- zapier
- rentmanager
- flatfile
- 365connect
- appfolio
- yardi
- rentvine
- test_app_id
example: zapier
readOnly: true
created_by:
type: object
properties:
name:
type: string
description: Name of the user that created the property
description: Info about the user that created the property.
readOnly: true
created_date:
type: string
description: Entity creation date, in ISO format
example: 2022-12-02 14:15:37.925000
readOnly: true
updated_date:
type: string
description: Entity last update date, in ISO format
example: 2023-10-04 14:15:37.925000
readOnly: true
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
readOnly: true
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
readOnly: true
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'
readOnly: true
last_completed_inspection:
type: object
readOnly: true
nullable: true
required:
- date
- id
- type
properties:
date:
type: string
description: Inspection completion date, in ISO format
example: 2022-12-02 14:15:37.925000
type:
type: string
description: The inspection template name
id:
type: string
description: Inspection ID
permissions:
type: object
readOnly: true
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: Single sync envelope used for whichever integration owns the property; null when the property is not synced.
properties:
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
unit_response_model:
type: object
required:
- id
- property_type
- address
- city
- zip_code
- bedrooms
- full_bathrooms
- half_bathrooms
- building_id
- latchel_property_id
- team
- created_date
- updated_date
- rooms_info
- rooms
- room_names
- last_completed_inspection
- creation_source
- created_by
- permissions
properties:
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
x_id:
type: string
description: External property ID that maps to RentCheck properties
address:
type: string
description: This is the street address for the Unit.
example: 2001 Red Gates
readOnly: true
address_2:
type: string
description: Additional address information for the Unit.
example: Apt. 4B
city:
type: string
description: This is the city of the Unit.
example: New Orleans
region:
type: string
description: The broader region or area in which the Unit is located.
example: Orleans
zip_code:
type: string
description: This is the Postal Code for the Unit.
example: '70130'
readOnly: true
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
readOnly: true
description: Team that owns this unit. May be null when the underlying team has been removed.
created_date:
type: string
description: Entity creation date, in ISO format
example: 2022-12-02 14:15:37.925000
readOnly: true
updated_date:
type: string
description: Entity last update date, in ISO format
example: 2023-10-04 14:15:37.925000
readOnly: true
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
readOnly: true
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
readOnly: true
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'
readOnly: true
last_completed_inspection:
type: object
readOnly: true
nullable: true
required:
- date
- id
- type
properties:
date:
type: string
description: Inspection completion date, in ISO format
example: 2022-12-02 14:15:37.925000
type:
type: string
description: The inspection template name
id:
type: string
description: Inspection ID
creation_source:
type: string
description: App that perform the entity creation.
enum:
- zapier
- rentmanager
- flatfile
- 365connect
- appfolio
- yardi
- rentvine
- test_app_id
example: zapier
readOnly: true
created_by:
type: object
properties:
name:
type: string
description: Name of the user that created t
# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentcheck/refs/heads/main/openapi/rentcheck-buildings-api-openapi.yml