Beds24 Inventory API
Per-day availability calendar, availability status, and fixed prices.
Per-day availability calendar, availability status, and fixed prices.
openapi: 3.0.3
info:
title: Beds24 API V2 Accounts Inventory API
description: 'The Beds24 API V2 lets you read, create, and alter data across almost all aspects of a Beds24 account, including properties, room inventory, bookings, prices, invoices, channels, and account settings. Beds24 is a vacation rental and hotel channel manager, property management system, and booking engine.
Base URL is https://api.beds24.com/v2. Authentication uses expiring access tokens that are generated from a refresh token (or a read-only long-life token) obtained via the /authentication endpoints; the token is sent in the "token" request header. Every category except /authentication requires a matching scope. Usage is governed by an account-level credit limit over a rolling 5-minute window, reported via the x-five-min-limit-remaining, x-five-min-limit-resets-in, and x-request-cost response headers.
This document models the public V2 surface from Beds24''s Swagger UI (https://api.beds24.com/v2/) and wiki. Endpoint shapes marked as modeled are grounded in the published documentation but were not byte-verified against the live Swagger JSON, which requires an authenticated token to retrieve.'
version: '2.0'
contact:
name: Beds24
url: https://beds24.com
license:
name: Proprietary
url: https://beds24.com/terms.html
servers:
- url: https://api.beds24.com/v2
description: Beds24 API V2 production
security:
- tokenAuth: []
tags:
- name: Inventory
description: Per-day availability calendar, availability status, and fixed prices.
paths:
/inventory/rooms/calendar:
get:
operationId: getRoomCalendar
tags:
- Inventory
summary: Get per-day price and availability
description: Retrieves per-day price and availability for rooms in bulk (for example a year at a time) suitable for caching locally. Returns number of units available, min/max stay, prices, and open/close status per date.
parameters:
- name: roomId
in: query
schema:
type: array
items:
type: integer
style: form
explode: true
- name: startDate
in: query
required: true
schema:
type: string
format: date
- name: endDate
in: query
required: true
schema:
type: string
format: date
- name: includePrices
in: query
schema:
type: boolean
- name: includeNumAvail
in: query
schema:
type: boolean
- name: includeMinStay
in: query
schema:
type: boolean
responses:
'200':
description: Per-day calendar entries.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/CalendarDay'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
post:
operationId: postRoomCalendar
tags:
- Inventory
summary: Update per-day price and availability
description: Updates prices and availability per room and date range - number of units available, min/max stay, and open/close status - which propagates to connected channels.
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CalendarWrite'
responses:
'200':
description: Calendar write results.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Success'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/inventory/rooms/availability:
get:
operationId: getRoomAvailability
tags:
- Inventory
summary: Get availability status of dates
description: Returns whether dates are available or not for the specified rooms.
parameters:
- name: roomId
in: query
schema:
type: array
items:
type: integer
style: form
explode: true
- name: startDate
in: query
required: true
schema:
type: string
format: date
- name: endDate
in: query
required: true
schema:
type: string
format: date
responses:
'200':
description: Availability status per date.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/AvailabilityDay'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: postRoomAvailability
tags:
- Inventory
summary: Update availability of dates
description: Sets availability (open/close and number of units) for rooms and dates. Modeled.
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AvailabilityDay'
responses:
'200':
description: Availability write results.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Success'
'401':
$ref: '#/components/responses/Unauthorized'
/inventory/fixedPrices:
get:
operationId: getFixedPrices
tags:
- Inventory
summary: Get fixed prices
description: Returns the fixed price rules and rate plans configured for rooms.
parameters:
- name: propertyId
in: query
schema:
type: integer
- name: roomId
in: query
schema:
type: integer
responses:
'200':
description: A list of fixed prices.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/FixedPrice'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: postFixedPrices
tags:
- Inventory
summary: Create or modify fixed prices
description: Creates or updates fixed price rules and rate plans.
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FixedPrice'
responses:
'200':
description: Fixed price write results.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Success'
'401':
$ref: '#/components/responses/Unauthorized'
delete:
operationId: deleteFixedPrices
tags:
- Inventory
summary: Delete fixed prices
description: Deletes fixed price rules by id. Modeled.
parameters:
- name: id
in: query
required: true
schema:
type: integer
responses:
'200':
description: Delete result.
content:
application/json:
schema:
$ref: '#/components/schemas/Success'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
AvailabilityDay:
type: object
properties:
roomId:
type: integer
date:
type: string
format: date
available:
type: boolean
numAvail:
type: integer
Error:
type: object
properties:
success:
type: boolean
example: false
code:
type: integer
example: 401
error:
type: string
example: Token is missing
CalendarDay:
type: object
properties:
roomId:
type: integer
date:
type: string
format: date
numAvail:
type: integer
price1:
type: number
minStay:
type: integer
maxStay:
type: integer
override:
type: string
CalendarWrite:
type: object
properties:
roomId:
type: integer
calendar:
type: array
items:
type: object
properties:
from:
type: string
format: date
to:
type: string
format: date
numAvail:
type: integer
price1:
type: number
minStay:
type: integer
FixedPrice:
type: object
properties:
id:
type: integer
propertyId:
type: integer
roomId:
type: integer
name:
type: string
firstNight:
type: string
format: date
lastNight:
type: string
format: date
minNights:
type: integer
maxNights:
type: integer
roomPrice:
type: number
Success:
type: object
properties:
success:
type: boolean
new:
type: object
additionalProperties: true
modified:
type: object
additionalProperties: true
warnings:
type: array
items:
type: string
responses:
TooManyRequests:
description: The account credit limit for the current rolling 5-minute window has been exceeded. Inspect x-five-min-limit-remaining and x-five-min-limit-resets-in.
headers:
x-five-min-limit-remaining:
schema:
type: integer
description: Credits remaining in the current 5-minute period.
x-five-min-limit-resets-in:
schema:
type: integer
description: Seconds until the current period resets.
x-request-cost:
schema:
type: integer
description: Credits this request cost.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: The token is missing, invalid, expired, or lacks the required scope.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
tokenAuth:
type: apiKey
in: header
name: token
description: Short-lived access token generated from a refresh token via the /authentication endpoints, sent in the "token" request header.