HotelRunner Inventory API

Room types, master rates, availability, and restrictions.

Business capability
Channel Manager Operations BC-4010.50

Operations 3

GET /rooms Get room list #
PUT /rooms/~ Update room availability/rates/restrictions over a date range #
PUT /rooms/daily Bulk update rooms across multiple dates #

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/hotelrunner-inventory-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

hotelrunner-inventory-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: HotelRunner Custom Apps REST Inventory API
  description: The HotelRunner Custom Apps REST API lets a property's PMS or revenue management system connect to HotelRunner - retrieve room/rate configuration, push availability and rate updates, retrieve and acknowledge reservations, fire reservation state-change events, list connected sales channels, and read setup reference data.
  version: v2
  contact:
    name: HotelRunner
    url: https://developers.hotelrunner.com/
servers:
- url: https://app.hotelrunner.com/api/v2/apps
  description: Custom Apps REST API (production)
- url: https://app.hotelrunner.com
  description: Public reference/services data endpoints
security:
- tokenAuth: []
tags:
- name: Inventory
  description: Room types, master rates, availability, and restrictions.
paths:
  /rooms:
    get:
      operationId: listRooms
      tags:
      - Inventory
      summary: Get room list
      description: Returns all rooms/room types and their master rate configuration for the property identified by hr_id, including which channels each room is connected to and whether availability, restrictions, and price updates are enabled for it.
      parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/HrId'
      responses:
        '200':
          description: A list of rooms.
          content:
            application/json:
              schema:
                type: object
                properties:
                  rooms:
                    type: array
                    items:
                      $ref: '#/components/schemas/Room'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /rooms/~:
    put:
      operationId: updateRoomDateRange
      tags:
      - Inventory
      summary: Update room availability/rates/restrictions over a date range
      description: Updates availability, price, stop-sale, min/max stay, and CTA/CTD restrictions for a single room type's master rate across a start/end date range, optionally scoped to specific weekdays and channel codes. Parameters are passed as query-string values, not a JSON body.
      parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/HrId'
      - name: room_code
        in: query
        required: true
        description: The room code to update.
        schema:
          type: string
      - name: '@rooms.inv_code'
        in: query
        required: true
        description: Inventory code to update. Only updates the room type and its master rate.
        schema:
          type: string
      - name: '@rooms.rate_code'
        in: query
        required: false
        description: Rate code to update when price_update is enabled for the room.
        schema:
          type: string
      - name: start_date
        in: query
        required: true
        schema:
          type: string
          format: date
      - name: end_date
        in: query
        required: true
        schema:
          type: string
          format: date
      - name: availability
        in: query
        required: false
        schema:
          type: integer
      - name: price
        in: query
        required: false
        schema:
          type: number
      - name: stop_sale
        in: query
        required: false
        schema:
          type: integer
          enum:
          - 0
          - 1
      - name: cta
        in: query
        required: false
        description: Closed to arrival.
        schema:
          type: integer
          enum:
          - 0
          - 1
      - name: ctd
        in: query
        required: false
        description: Closed to departure.
        schema:
          type: integer
          enum:
          - 0
          - 1
      - name: min_stay
        in: query
        required: false
        schema:
          type: integer
      - name: max_stay
        in: query
        required: false
        schema:
          type: integer
      - name: days
        in: query
        required: false
        description: Weekday filter, Sunday=0 through Saturday=6.
        schema:
          type: array
          items:
            type: integer
            minimum: 0
            maximum: 6
      - name: channel_codes
        in: query
        required: false
        description: Restrict the update to specific channel codes.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: Update accepted or queued for retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateResult'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /rooms/daily:
    put:
      operationId: updateRoomsMultiDates
      tags:
      - Inventory
      summary: Bulk update rooms across multiple dates
      description: Updates availability, price, and restrictions for one or more rooms across up to 90 explicit dates per call, optionally scoped to specific channel codes per room.
      parameters:
      - $ref: '#/components/parameters/Token'
      - $ref: '#/components/parameters/HrId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                rooms:
                  type: array
                  items:
                    type: object
                    required:
                    - inv_code
                    - dates
                    properties:
                      inv_code:
                        type: string
                      channel_codes:
                        type: array
                        items:
                          type: string
                      dates:
                        type: array
                        maxItems: 90
                        items:
                          type: object
                          required:
                          - date
                          properties:
                            date:
                              type: string
                              format: date
                            availability:
                              type: string
                            price:
                              type: string
                            min_stay:
                              type: integer
                            max_stay:
                              type: integer
                            stop_sale:
                              type: integer
                              enum:
                              - 0
                              - 1
                            cta:
                              type: integer
                              enum:
                              - 0
                              - 1
                            ctd:
                              type: integer
                              enum:
                              - 0
                              - 1
      responses:
        '200':
          description: Update accepted, queued for retry, or partially failed.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/UpdateResult'
                - type: object
                  properties:
                    errors:
                      type: array
                      items:
                        type: object
                        additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    Token:
      name: token
      in: query
      required: true
      description: Authentication token for the property.
      schema:
        type: string
    HrId:
      name: hr_id
      in: query
      required: true
      description: HotelRunner property identifier.
      schema:
        type: string
  schemas:
    Room:
      type: object
      properties:
        rate_code:
          type: string
        inv_code:
          type: string
        availability_update:
          type: boolean
        restrictions_update:
          type: boolean
        price_update:
          type: boolean
        pricing_type:
          type: string
          example: guest_based
        name:
          type: string
        description:
          type: string
        policy:
          type: string
        room_capacity:
          type: integer
        adult_capacity:
          type: integer
        is_master:
          type: boolean
        shared:
          type: boolean
        channel_codes:
          type: array
          items:
            type: string
        sales_currency:
          type: string
        sell_online:
          type: boolean
    UpdateResult:
      type: object
      properties:
        status:
          type: string
          enum:
          - ok
          - try_again
        transaction_id:
          type: string
    StatusResult:
      type: object
      properties:
        status:
          type: string
          enum:
          - ok
          - error
        message:
          type: string
  responses:
    Unauthorized:
      description: Missing or invalid token/hr_id.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/StatusResult'
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: query
      name: token
      description: API token issued in the property's HotelRunner Partners extranet ("My Property" section) or PMS sandbox account. Always sent together with the hr_id query parameter identifying the property.