Beds24
ERPConnect AI agents to Beds24, a vacation rental channel manager and property management system. Agents create and modify bookings, push availability and rates to connected channels, and reconcile property and account records.
What This Integration Enables
Beds24 is built for operators who run their own properties across booking sites rather than for a chain with a revenue department. The API reflects that, and it is refreshingly blunt about it. Almost every significant write takes an array and returns a per-item result array, so a single call can succeed for four rooms and fail for the fifth, and the flow is expected to read the results rather than trust the HTTP status. Creates and updates are the same call in three places: Create or Update Bookings, Create or Update Fixed Prices, and Create or Update Properties each decide what to do based on whether an id is present in the object you passed. That design is efficient and it is exactly where an automated flow gets into trouble, because an id that failed to resolve does not raise an error, it changes the meaning of the request.
The operating details are worth knowing before a flow reaches production. Authentication is not a plain API key despite the name it often travels under: you generate an invite code in the Beds24 control panel, exchange it for a long-life refresh token which stays valid as long as it is used within any thirty-day window, and the connector exchanges that token for a short-life access token on each execution. Scopes are attached when the token is created, covering bookings, bookings-personal, bookings-financial, inventory, properties, accounts, and channels, so an action fails on a scope you did not grant rather than on a credential that is wrong. Requests are metered against a five-minute credit budget and the API returns remaining-credit headers, which means a large multi-room, multi-month push can genuinely run out partway through. Two date conventions catch people: Get Availability and Get Unit Bookings treat the end date as the last bookable night, meaning the day before check-out, and Get Calendar returns no data at all unless at least one include flag is enabled. Update Calendar writes per-day availability, restrictions, and prices across a date range, with price1 through price16 and per-channel booking limits, and setting a field to null clears it rather than leaving it alone. Beds24 webhooks are configured in the Beds24 control panel rather than through the API, so this connector exposes no triggers and change detection is a scheduled Get Bookings filtered on modification time. Agents keep the calendar and the guest record in step. The write that can put two guests in one room is where human-in-the-loop orchestration earns its place.
Without FlowRunner
With FlowRunner
Use Case Scenarios
An inbound reservation feed that does not invent bookings
A direct booking engine, a corporate portal, or a spreadsheet of owner stays produces reservations that have to reach Beds24 before a channel sells the same night. On a schedule the agent runs Get Bookings filtered on modification time to see what has already moved inside Beds24, then matches each inbound reservation against an existing booking id. Get Availability confirms the room is genuinely free across the requested nights, remembering that the end date is the last bookable night rather than the departure date, and Get Unit Bookings shows which physical unit of a multi-unit room is already committed. Updates carrying a matched id go through Create or Update Bookings straight away. Rows that matched nothing do not, because those are the ones that would create. The per-item result array from every call is read and logged, so a partial success is recorded as a partial success rather than reported as a clean run.
A pricing sheet that reaches the calendar without reaching it twice
Rates live in a spreadsheet the owner maintains, because that is where the seasonality and the local events actually get thought about. On a schedule the agent reads the sheet in Google Sheets, calls Get Calendar with the include flags for availability, restrictions, and prices enabled, and compares the two. Only the dates that genuinely differ are assembled into an Update Calendar payload, which keeps the push small and keeps it inside the five-minute credit budget rather than discovering the limit halfway through November. Fields intended to stay untouched are omitted rather than sent as null, since null clears a value. Where a rate plan rather than a per-day price is the right instrument, Get Fixed Prices and Create or Update Fixed Prices handle it, within Beds24's limit of one hundred fixed prices per room. The diff, the credit headroom, and the result array all post to Slack so the owner can see what moved.
Cancellations handled without destroying the record
A guest cancels. The agent reads Get Bookings for the stay, Get Invoices for the invoice line items and payments already recorded against it, and Get Messages for the conversation, so the refund question is answered from evidence rather than memory. It then does not call Delete Bookings, which permanently removes the booking and takes the invoice items and message history with it, leaving no record that the stay ever existed or that money changed hands. Instead it prepares a status change through Create or Update Bookings with the booking's own id, drafts the guest reply through Send Message, and puts both in front of the property manager with the amount paid and the cancellation window attached. A person releases the message and the status change. The permanent delete stays available for genuine test data and stays behind a human every other time.
Human-in-Loop Highlight
Create or Update Bookings is the operation to gate, and the reason is that it is two operations wearing one name. Pass an object with an id and Beds24 updates that booking. Omit the id and Beds24 creates a new one. Both are correct behavior, and both are what you want, until an agent is mapping an inbound reservation feed and the id lookup returns empty for a stay that does exist, under a slightly different guest name or a channel reference that was reformatted upstream. The agent then does not fail. It creates. The property now holds two bookings for the same room across the same nights, and because Beds24 is a channel manager, that arithmetic propagates outward: the second booking consumes inventory that a connected site has already sold, and the first sign of trouble is a guest standing at a door with a confirmation for a room that has someone in it. The mirror image is just as expensive. An id that resolves to the wrong booking silently overwrites a real guest's dates, room, and guest details in a single batch entry. So the agent treats the presence or absence of an id as the decision, not as a detail. Before writing it runs Get Bookings with the free-text search and the arrival and departure filters across the candidate set, calls Get Availability for the requested nights, and splits the batch in two. Matched updates go through. The rest post to the property manager in Slack: "Syncing 14 reservations into Beds24. 11 matched an existing booking id and have been updated. 3 matched nothing and would be created. Of those, 'M. Okonkwo, 12 to 15 March, Studio 2' overlaps an existing confirmed booking on the same unit, and Get Availability shows zero nights free. Creating it would leave the property double booked against the channel that already sold it. Create all 3, create the 2 that are clear, or hold everything?" A person answers once, and the agent writes only what was released. Delete Bookings sits behind the same gate for the plainer reason that it is permanent and takes invoice items and message history with it. This is the digital andon cord placed exactly where a channel manager fails: not on a bad price, but on a room sold twice.
Agent Capabilities
17 actionsBookings
3- Get Bookings Retrieves bookings matching the supplied filters, returning upcoming bookings with a status of confirmed, request, new, black, or inquiry by default. Filter by property, room, booking id, channel, arrival and departure dates, modification time, or free text, and optionally include invoice items, info items, guest data, and booking group ids. Guest data requires the bookings-personal scope. Results are paginated.
- Create or Update Bookings Creates new bookings or updates existing ones in a single call. Pass an array of booking objects, including an `id` to update and omitting it to create. Each object accepts room, status, arrival and departure dates, guest details, and nested infoItems, invoiceItems, and actions such as grouping. Returns a per-item result array, which should always be read rather than assumed.
- Delete Bookings Permanently deletes one or more bookings by id, taking their invoice items and message history with them. Returns a per-item result array. Cannot be undone.
Guest messaging
3- Get Messages Retrieves guest and host messages, filtered by message id, property, room, booking or master id, read state, maximum age in days, and source, where source is host, guest, internal note, or system. Results are paginated.
- Send Message Sends a message to the guest of a booking, optionally attaching a single file supplied as base64 content with its filename and MIME type. This reaches a real guest, so drafts are worth reviewing when money or arrival logistics are involved.
- Get Invoices Retrieves invoices for one or more bookings, including invoice line items and payments. Read only, and the evidence behind any refund conversation. Results are paginated.
Availability and calendar
5- Get Availability Returns the availability status of each date in a range for the specified rooms or properties. The end date is the last bookable night, meaning the day before check-out, which is the off-by-one that catches most first flows.
- Get Offer Returns bookable offers, meaning rooms, rates, and prices, for a stay based on arrival, departure, and guest counts. Optionally filter by property, room, or offer id, include descriptive texts for a language, and apply an agent code.
- Get Unit Bookings Returns which dates each unit of a room has bookings across a date range. Useful when a room type holds several physical units and the question is which one is actually free.
- Get Calendar Returns per-day calendar values covering availability, restrictions, and prices. Only values you ask for are returned, so at least one include flag must be enabled or the response comes back empty.
- Update Calendar Modifies per-day calendar values for one or more rooms. Each entry sets fields such as `minStay`, `maxStay`, `numAvail`, `price1` through `price16`, override, or per-channel booking limits across a from and to date range. Setting a field to null clears it, so omit anything that should stay as it is. Returns a per-item result array.
Rate plans
2- Get Fixed Prices Retrieves fixed prices, meaning rate plans, for the specified ids, rooms, or properties, optionally including their rate codes.
- Create or Update Fixed Prices Creates or modifies fixed prices. Omit the id to create, include it to modify. Beds24 allows a maximum of one hundred fixed prices per room, which is a real ceiling on a generated rate structure. Returns a per-item result array.
Properties
2- Get Properties Retrieves properties and their rooms, optionally including descriptive texts for given languages, pictures, offers, price rules, upsell items, all rooms, and unit details.
- Create or Update Properties Creates new properties or updates existing ones, accepting name, address, currency, contact details, texts, and nested rooms. Include an id to update, omit it to create. Returns a per-item result array.
Account and channels
2- Get Accounts Retrieves the authenticated account and optionally its sub-accounts, credit usage, and available languages. Credit usage is the number to watch before a large calendar push.
- Get Channel Settings Retrieves channel connection settings for a property, optionally filtered by room and channel, covering iCal export and import, Airbnb, and Vrbo. Read only, so channel wiring stays a deliberate act in the Beds24 control panel.
Frequently Asked Questions
What can FlowRunner do with Beds24?
FlowRunner agents can run Get Bookings, Create or Update Bookings, and Delete Bookings in Beds24, plus 14 more actions.
Does connecting Beds24 to FlowRunner require OAuth?
No. Beds24 connects to FlowRunner with session-based authentication, no OAuth flow required.
Can Beds24 trigger a FlowRunner workflow automatically?
Beds24 doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with Beds24
$100 in credits. No card required. Connect in minutes.