RentCheck Work Orders API

The Work Orders API from RentCheck — 3 operation(s) for work orders.

Business capability
Property Maintenance & Work Order Management BC-4940.20

Operations 3

POST /v1/work_orders/providers/{provider} Create a work order #
GET /v1/work_orders/{workOrderId} Get a work order by ID #
GET /v1/work_orders/skills Get all work order skills #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/rentcheck-work-orders-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

rentcheck-work-orders-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: RentCheck REST Work Orders 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: Work Orders
paths:
  /v1/work_orders/providers/{provider}:
    post:
      x-internal: true
      summary: Create a work order
      tags:
      - Work Orders
      description: 'Creates a Work Order in RentCheck and dispatches it to the requested

        integration provider. The path parameter `provider` selects the

        destination integration; the request body shape varies per provider.'
      parameters:
      - in: path
        name: provider
        required: true
        schema:
          type: string
          enum:
          - appfolio
          - jenark
          - latchel
          - rentmanager
          - rentvine
        description: 'The integration provider that should fulfill this work order.

          '
      - in: header
        name: x-app-id
        required: false
        description: 'Creation-source identifier. Persisted as `creation_source` on each

          created work order.

          '
        schema:
          type: string
      requestBody:
        required: true
        description: "Request body shape varies per `{provider}`. The provider in the path\ndetermines which validation runs against the body:\n  * `latchel`, `rentmanager`, `jenark` — the body is validated against\n    the provider-specific schema.\n  * `appfolio` / `rentvine` — the body is forwarded to the integration\n    provider without additional validation.\n"
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/work_order_create_latchel_request_model'
              - $ref: '#/components/schemas/work_order_create_rent_manager_request_model'
              - $ref: '#/components/schemas/work_order_create_jenark_request_model'
              - $ref: '#/components/schemas/work_order_create_appfolio_request_model'
              - $ref: '#/components/schemas/work_order_create_rentvine_request_model'
      responses:
        '200':
          description: Returns the created work order
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/work_order_response_model'
        '400':
          description: "Bad request — request body validation failed, or the supplied\nfeatures span more than one inspection. Validation messages are raw, e.g.:\n  - `\"data.work_order_name\" is required`\n  - `\"data.work_order_description\" is required`\n  - `\"data.maintenance_flags\" must contain at least 1 items`\n  - `\"data.maintenance_flags\" must be an array`\n  - `\"data.latchel_property_id\" is required` (`latchel`)\n  - `\"data.ok_to_enter\" is required` (`rentmanager`)\n  - `\"data.priority\" must be one of [Low, Normal, High]` (`rentmanager`)\n  - `\"data.work_order_code\" is required` (`jenark`)\nThe cross-inspection guard returns\n`Inspection must be consistent. All features should belong to the same inspection.`\nThe Rent Manager integration also surfaces\n`property not synced with integration` and\n`No rentmanager integration is configured for this account` as 400\nwhen its preflight checks fail.\n"
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
        '401':
          description: 'Unauthorized — standard auth failures, plus the per-work-order permission check

            (`User does not have permissions to create work order` is emitted as 401,

            not 400).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 401
                  error:
                    type: string
                    example: User does not have permissions to create work order
        '404':
          description: 'Not Found — `subscription not found` (caller has no subscription),

            `appfolio integration not found`, `rentvine integration not found`,

            `latchel integration not found` (the destination integration is not

            configured for the caller''s subscription), `resident not found (<id>)`

            (the supplied `resident_id` does not exist), or `property not found`

            (the property associated with the flagged features is not synced to

            the requested integration).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    description: 'One of the static integration / subscription / property

                      not-found strings, OR `resident not found (<id>)` carrying

                      the supplied resident id.

                      '
                    oneOf:
                    - enum:
                      - subscription not found
                      - appfolio integration not found
                      - rentvine integration not found
                      - latchel integration not found
                      - property not found
                    - pattern: ^resident not found \(.+\)$
                    example: appfolio integration not found
        '500':
          description: "Internal server error. Sources:\n  - Unknown `provider` — `invalid provider` is returned when the path\n    parameter is not one of the registered providers. The\n    path-parameter `enum` documents the supported set; unsupported\n    providers should be rejected before processing.\n  - Jenark — `property not synced with Jenark` is returned when the\n    property is not synced through the Jenark integration. (The\n    analogous Rent Manager check surfaces as 400 — see the 400\n    response above.)\n  - AppFolio / Rentvine — `Must have work order sync switched ON in\n    order to create work orders. Please adjust your data sync\n    settings.` is returned when the integration exists but work-order\n    sync is disabled.\n"
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 500
                  error:
                    type: string
                    enum:
                    - invalid provider
                    - property not synced with Jenark
                    - Must have work order sync switched ON in order to create work orders. Please adjust your data sync settings.
                    example: invalid provider
      operationId: postV1WorkOrdersProvidersByProvider
      x-operation-id-source: derived
  /v1/work_orders/{workOrderId}:
    get:
      x-internal: true
      summary: Get a work order by ID
      tags:
      - Work Orders
      parameters:
      - name: workOrderId
        in: path
        description: work order ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the requested work order
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/work_order_response_model'
        '401':
          description: 'Unauthorized — standard auth failures, plus the per-work-order permission check.

            Returns HTTP 401 with message `User does not have permissions to get work order` when

            the caller''s role doesn''t allow read access.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 401
                  error:
                    type: string
                    example: User does not have permissions to get work order
        '404':
          description: Not Found — `work order not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: work order not found
      operationId: getV1WorkOrdersByWorkOrderId
      x-operation-id-source: derived
  /v1/work_orders/skills:
    get:
      x-internal: true
      summary: Get all work order skills
      tags:
      - Work Orders
      description: 'Returns the list of skills that can be selected when creating a work order. The

        same static list is always returned, regardless of the caller''s enabled integrations.'
      responses:
        '200':
          description: Returns the list of work order skills.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/api_work_order_skill'
                  count:
                    type: integer
                    description: Amount of elements in `data`.
        '401':
          $ref: '#/components/responses/401'
      operationId: getV1WorkOrdersSkills
      x-operation-id-source: derived
components:
  schemas:
    api_work_order_skill:
      type: object
      required:
      - name
      - latchel
      properties:
        name:
          type: string
          description: RentCheck-facing name of the skill.
        latchel:
          type: object
          description: Latchel category mapping for the skill.
          required:
          - id
          - name
          - category_id
          - category_name
          properties:
            id:
              type: integer
              description: Latchel skill id.
            name:
              type: string
              description: Latchel-facing skill name.
            category_id:
              type: integer
              description: Latchel category id.
            category_name:
              type: string
              description: Latchel category name.
    work_order_create_rentvine_request_model:
      x-internal: true
      type: object
      description: Rentvine work-order create body. Additional Rentvine-specific properties beyond those listed here are accepted.
      required:
      - work_order_name
      - work_order_description
      - priority
      - ok_to_enter
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
        work_order_description:
          type: string
          description: A description for the work order.
        priority:
          type: string
          enum:
          - low
          - medium
          - high
          description: Rentvine priority for the work order.
        owner_approved:
          type: boolean
          default: false
          description: Whether the property owner has approved the work order in Rentvine. Server-defaulted to `false` when omitted.
        publish_with_tenant:
          type: boolean
          default: false
          description: Whether the work order should be published to the Rentvine tenant portal. Server-defaulted to `false` when omitted.
        publish_with_owner:
          type: boolean
          default: false
          description: Whether the work order should be published to the Rentvine owner portal. Server-defaulted to `false` when omitted.
        ok_to_enter:
          type: string
          enum:
          - vendor_may_access
          - resident_presence_required
          - not_applicable
          description: Vendor access mode.
        maintenance_flags:
          type: array
          description: Maintenance flags referenced by the work order. No minimum size is enforced by validation, but omitting it or passing an empty array surfaces as a 500.
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
      additionalProperties: true
    work_order_create_appfolio_request_model:
      x-internal: true
      type: object
      description: AppFolio work-order create body. Additional AppFolio-specific properties beyond those listed here are accepted.
      required:
      - work_order_name
      - work_order_description
      - maintenance_flags
      - ok_to_enter
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
        work_order_description:
          type: string
          description: A description for the work order.
        priority:
          type: string
          enum:
          - Urgent
          - Normal
          - Low
          description: AppFolio priority for the work order.
        ok_to_enter:
          type: boolean
          description: Whether the vendor is authorized to enter the unit without the resident present.
        maintenance_flags:
          type: array
          minItems: 1
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
      additionalProperties: true
    work_order_create_jenark_request_model:
      x-internal: true
      type: object
      required:
      - work_order_name
      - work_order_code
      - maintenance_flags
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
          example: Replace HVAC filter
        work_order_description:
          type: string
          description: A description for the work order.
          example: Filter is overdue — replace with 16x20x1 pleated filter.
        work_order_code:
          type: string
          description: Jenark work-order classification code.
          example: HVAC
        skill:
          type: string
          description: Trade / skill required for the work order.
          example: HVAC
        maintenance_flags:
          type: array
          minItems: 1
          description: A list of maintenance flags. The handler only consumes each flag's `id` and `feature_id`; additional fields are accepted but ignored.
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
    work_order_response_model:
      x-internal: true
      type: object
      description: Envelope shared by v1 (`POST /v1/work_orders`) and v2 (`GET /v2/work_orders`). Provider-specific keys (`latchel`, `yardi`, `appfolio`, `jenark`, `rentmanager`, `rentvine`) remain optional and appear only when the work order was synced through that vendor. `property` is required on v1 responses; v2 (`GET /v2/work_orders`) drops the field when the underlying row has no property snapshot, so it is not listed as required here.
      required:
      - id
      - name
      - created_date
      - created_by
      - created_by_name
      - status
      - maintenance_flags
      - organization_id
      - inspection
      properties:
        id:
          type: string
          description: Entity ID
          example: 00BRcZPSakXz6w7RYoE
        name:
          type: string
          description: The name field is the work order name / label.
          example: 'Latchel Job #1'
        created_date:
          type: string
          description: Work order creation date, ISO format.
          example: 2022-01-15 00:00:00
        created_by:
          type: string
          description: User id that created the work order.
        created_by_name:
          type: string
          description: Display name of the user that created the work order.
        organization_id:
          type: string
          description: Organization (subscription) the work order belongs to.
        status:
          type: string
          description: Up to date status of the work order.
        skill:
          type: string
          description: Skill / category selected for the work order.
        zip_report_location:
          type: string
          description: Location of the most recent generated zip report for the work order. Only present on v2 (`GET /v2/work_orders`) responses; v1 responses do not emit this field.
        last_sync_date:
          type: string
          description: ISO timestamp of the latest sync attempt to the work order provider, when one has run. Only present on v2 (`GET /v2/work_orders`) responses; v1 responses do not emit this field.
        inspection:
          type: object
          description: This is the entity id of the inspection that the entity is for.
          properties:
            id:
              type: string
              description: Selected entity's inspection id
              example: 00BRcZPSakXz6w7RYoE
            type:
              type: string
              description: Selected entity's inspection type
              enum:
              - Move-in
              - Move-out
              - Annual
              - Turn
              - Periodic
              - Maintenance Check
              - Exterior
              - Pre-Acquisition
              - RV Lot
              - Maintenance / Safety Check
              - Community Maintenance Check
            date:
              type: string
              description: Selected entity's inspection date, ISO format
              example: 2022-01-15 00:00:00
            template:
              type: object
            completed_date:
              type: string
              description: Inspection completed date in ISO format, when set.
        property:
          type: object
          required:
          - id
          - address
          - city
          - zip_code
          description: This is the entity id of the Unit, Building, or Community that the entity is for.
          properties:
            id:
              type: string
              description: Selected entity's property id
              example: 00BRcZPSakXz6w7RYoE
            address:
              type: string
              description: Selected entity's property address
              example: 2001 Red Gates
            address_2:
              type: string
              description: Selected entity's property additional address info
              example: Apt. 4B
            city:
              type: string
              description: Selected entity's property city
              example: New Orleans
            region:
              type: string
              description: Selected entity's property region
              example: Orleans
            zip_code:
              type: string
              description: Selected entity's property zip_code
              example: '70130'
        maintenance_flags:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              room:
                type: string
                description: Maintenance flag's room.
              feature:
                type: string
                description: Maintenance flag's feature name.
              feature_id:
                type: string
                description: Maintenance flag's feature ID.
              created_date:
                type: string
                description: Feature creation date, ISO format
                example: 2022-01-15 00:00:00
              created_by:
                type: object
                description: User that created the flag.
                required:
                - id
                - name
                - type
                properties:
                  id:
                    type: string
                    description: Entity ID
                    example: 00BRcZPSakXz6w7RYoE
                  name:
                    type: string
                    description: Name of the user that created the flag.
                  type:
                    type: string
                    enum:
                    - Renter
                    - Property Manager
                    - Landlord
                    - System
                    description: User type discriminator.
              responsibility:
                type: string
                description: Maintenance flag's responsibility
                enum:
                - OWNER
                - RESIDENT
                - ''
              note:
                type: string
                description: Maintenance flag's notes
              image_urls:
                type: array
                description: Maintenance flag's images
                items:
                  type: string
                  description: URL links to images related to the maintenance flags
              cost:
                type: number
                description: Maintenance flag's cost
        latchel:
          type: object
          description: Latchel-specific work order fields, present when the provider is `latchel`.
          additionalProperties: true
        yardi:
          type: object
          description: Yardi-specific work order fields, present when the provider is `yardi`.
          additionalProperties: true
        appfolio:
          type: object
          description: AppFolio-specific work order fields, present when the provider is `appfolio`.
          additionalProperties: true
        jenark:
          type: object
          description: Jenark-specific work order fields, present when the provider is `jenark`.
          additionalProperties: true
        rentmanager:
          type: object
          description: Rent Manager-specific work order fields, present when the provider is `rentmanager`.
          additionalProperties: true
        rentvine:
          type: object
          description: Rentvine-specific work order fields, present when the provider is `rentvine`.
          additionalProperties: true
    work_order_create_rent_manager_request_model:
      x-internal: true
      type: object
      required:
      - work_order_name
      - work_order_description
      - maintenance_flags
      - ok_to_enter
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
          example: Leaky faucet repair
        work_order_description:
          type: string
          description: A description for the work order.
          example: Faucet in kitchen is dripping — please replace washer.
        skill:
          type: string
          description: Trade / skill required for the work order.
          example: Plumbing
        priority:
          type: string
          enum:
          - Low
          - Normal
          - High
          description: Rent Manager work-order priority.
        ok_to_enter:
          type: boolean
          description: Whether the vendor is authorized to enter the unit without the resident present.
        maintenance_flags:
          type: array
          minItems: 1
          description: A list of maintenance flags. The handler only consumes each flag's `id` and `feature_id`; additional fields are accepted but ignored.
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
    work_order_create_latchel_request_model:
      x-internal: true
      type: object
      required:
      - work_order_name
      - work_order_description
      - maintenance_flags
      - latchel_property_id
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
          example: 'Latchel Job #1'
        work_order_description:
          type: string
          description: A description for the work order.
          example: Faulty socket, no power, needs repair.
        vendor_instructions:
          type: string
          description: Optional vendor instruction for the work order.
          example: Use your biggest plunger, do not use little plunger.
        skill:
          type: string
          description: Vendor name of the repair to be made.
          example: Repair socket
        property_access_instructions:
          type: string
          description: Property access instructions for the work order.
          example: Look under the door mat; there is a secret entrance.
        latchel_property_id:
          type: number
          description: Latchel property id for the work order.
        vendor_id:
          type: number
          nullable: true
          description: Latchel vendor id for the work order.
        resident_id:
          type: string
          description: Resident / Tenant ID that will be associated with work order.
        primary_resident_id:
          type: string
          description: Latchel primary resident id for the work order.
        maintenance_flags:
          type: array
          minItems: 1
          description: A list of maintenance flags. Only each flag's `id` and `feature_id` are consumed; additional fields are accepted but ignored.
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
  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