{
  "info": {
    "name": "Beds24 API V2",
    "description": "Read, create, and alter data across a Beds24 vacation rental and hotel account - properties, room inventory, bookings, prices, invoices, channels, and account settings. Base URL: https://api.beds24.com/v2. Authentication uses a short-lived access token (generated from a refresh token via the /authentication endpoints) sent in the 'token' request header. Usage is governed by an account-level credit limit over a rolling 5-minute window (x-five-min-limit-remaining / x-request-cost).",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      { "key": "key", "value": "token", "type": "string" },
      { "key": "value", "value": "{{accessToken}}", "type": "string" },
      { "key": "in", "value": "header", "type": "string" }
    ]
  },
  "variable": [
    { "key": "baseUrl", "value": "https://api.beds24.com/v2", "type": "string" },
    { "key": "accessToken", "value": "", "type": "string" },
    { "key": "refreshToken", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "Authentication",
      "item": [
        {
          "name": "Get refresh token from invite code",
          "request": {
            "method": "GET",
            "header": [{ "key": "code", "value": "{{inviteCode}}" }],
            "url": { "raw": "{{baseUrl}}/authentication/setup", "host": ["{{baseUrl}}"], "path": ["authentication", "setup"] },
            "description": "Exchanges an invite code for a refresh token and an initial access token."
          }
        },
        {
          "name": "Get access token from refresh token",
          "request": {
            "method": "GET",
            "header": [{ "key": "refreshToken", "value": "{{refreshToken}}" }],
            "url": { "raw": "{{baseUrl}}/authentication/token", "host": ["{{baseUrl}}"], "path": ["authentication", "token"] },
            "description": "Generates a short-lived access token from a refresh token."
          }
        },
        {
          "name": "Get token details",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/authentication/details", "host": ["{{baseUrl}}"], "path": ["authentication", "details"] },
            "description": "Returns diagnostics about the current token, including scopes and validity."
          }
        },
        {
          "name": "Revoke token",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/authentication/token", "host": ["{{baseUrl}}"], "path": ["authentication", "token"] },
            "description": "Invalidates the refresh token used to authenticate this request."
          }
        }
      ]
    },
    {
      "name": "Bookings",
      "item": [
        {
          "name": "Get bookings",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/bookings?propertyId=&status=&arrivalFrom=&arrivalTo=&includeInvoiceItems=true",
              "host": ["{{baseUrl}}"],
              "path": ["bookings"],
              "query": [
                { "key": "propertyId", "value": "" },
                { "key": "status", "value": "" },
                { "key": "arrivalFrom", "value": "" },
                { "key": "arrivalTo", "value": "" },
                { "key": "includeInvoiceItems", "value": "true" }
              ]
            },
            "description": "Returns bookings matching the supplied filters across all connected channels."
          }
        },
        {
          "name": "Create or modify bookings",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "[\n  {\n    \"roomId\": 0,\n    \"status\": \"confirmed\",\n    \"arrival\": \"2026-08-01\",\n    \"departure\": \"2026-08-05\",\n    \"firstName\": \"Jane\",\n    \"lastName\": \"Doe\",\n    \"email\": \"jane@example.com\",\n    \"numAdult\": 2\n  }\n]" },
            "url": { "raw": "{{baseUrl}}/bookings", "host": ["{{baseUrl}}"], "path": ["bookings"] },
            "description": "Creates new bookings or modifies existing ones when an id is supplied."
          }
        }
      ]
    },
    {
      "name": "Invoices",
      "item": [
        {
          "name": "Get invoice items",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/bookings/invoiceitems?bookingId=", "host": ["{{baseUrl}}"], "path": ["bookings", "invoiceitems"], "query": [{ "key": "bookingId", "value": "" }] },
            "description": "Returns invoice items, charges, and payments attached to bookings (modeled)."
          }
        },
        {
          "name": "Create or modify invoice items",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "[\n  {\n    \"bookingId\": 0,\n    \"type\": \"charge\",\n    \"description\": \"Cleaning fee\",\n    \"qty\": 1,\n    \"amount\": 50.0,\n    \"vatRate\": 20\n  }\n]" },
            "url": { "raw": "{{baseUrl}}/bookings/invoiceitems", "host": ["{{baseUrl}}"], "path": ["bookings", "invoiceitems"] },
            "description": "Writes invoice items (charges and payments) onto bookings (modeled)."
          }
        }
      ]
    },
    {
      "name": "Messages",
      "item": [
        {
          "name": "Get booking messages",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/bookings/messages?bookingId=", "host": ["{{baseUrl}}"], "path": ["bookings", "messages"], "query": [{ "key": "bookingId", "value": "" }] },
            "description": "Returns guest and channel messages for the specified bookings."
          }
        },
        {
          "name": "Post booking message",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "[\n  {\n    \"bookingId\": 0,\n    \"message\": \"Thanks for your booking, check-in is from 3pm.\"\n  }\n]" },
            "url": { "raw": "{{baseUrl}}/bookings/messages", "host": ["{{baseUrl}}"], "path": ["bookings", "messages"] },
            "description": "Posts a guest or channel message to one or more bookings."
          }
        }
      ]
    },
    {
      "name": "Properties",
      "item": [
        {
          "name": "Get properties",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/properties?includeAllRooms=true&includeTexts=true", "host": ["{{baseUrl}}"], "path": ["properties"], "query": [{ "key": "includeAllRooms", "value": "true" }, { "key": "includeTexts", "value": "true" }] },
            "description": "Returns properties and their rooms matching the supplied criteria."
          }
        },
        {
          "name": "Get bookable offers",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/properties/offers?propertyId=&arrival=2026-08-01&departure=2026-08-05&numAdult=2", "host": ["{{baseUrl}}"], "path": ["properties", "offers"], "query": [{ "key": "propertyId", "value": "" }, { "key": "arrival", "value": "2026-08-01" }, { "key": "departure", "value": "2026-08-05" }, { "key": "numAdult", "value": "2" }] },
            "description": "Returns bookable offers (available room/rate combinations) for a property over a date range."
          }
        },
        {
          "name": "Create or modify properties",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "[\n  {\n    \"name\": \"Seaside Villa\",\n    \"currency\": \"EUR\"\n  }\n]" },
            "url": { "raw": "{{baseUrl}}/properties", "host": ["{{baseUrl}}"], "path": ["properties"] },
            "description": "Creates or updates properties and rooms (modeled)."
          }
        }
      ]
    },
    {
      "name": "Inventory",
      "item": [
        {
          "name": "Get room calendar (price and availability)",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/inventory/rooms/calendar?roomId=&startDate=2026-01-01&endDate=2026-12-31&includePrices=true&includeNumAvail=true", "host": ["{{baseUrl}}"], "path": ["inventory", "rooms", "calendar"], "query": [{ "key": "roomId", "value": "" }, { "key": "startDate", "value": "2026-01-01" }, { "key": "endDate", "value": "2026-12-31" }, { "key": "includePrices", "value": "true" }, { "key": "includeNumAvail", "value": "true" }] },
            "description": "Retrieves per-day price and availability in bulk, suitable for caching locally."
          }
        },
        {
          "name": "Update room calendar",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "[\n  {\n    \"roomId\": 0,\n    \"calendar\": [\n      { \"from\": \"2026-08-01\", \"to\": \"2026-08-31\", \"numAvail\": 1, \"price1\": 120.0, \"minStay\": 2 }\n    ]\n  }\n]" },
            "url": { "raw": "{{baseUrl}}/inventory/rooms/calendar", "host": ["{{baseUrl}}"], "path": ["inventory", "rooms", "calendar"] },
            "description": "Updates prices and availability per room and date range; propagates to connected channels."
          }
        },
        {
          "name": "Get room availability",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/inventory/rooms/availability?roomId=&startDate=2026-08-01&endDate=2026-08-31", "host": ["{{baseUrl}}"], "path": ["inventory", "rooms", "availability"], "query": [{ "key": "roomId", "value": "" }, { "key": "startDate", "value": "2026-08-01" }, { "key": "endDate", "value": "2026-08-31" }] },
            "description": "Returns whether dates are available or not for the specified rooms."
          }
        },
        {
          "name": "Get fixed prices",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/inventory/fixedPrices?propertyId=&roomId=", "host": ["{{baseUrl}}"], "path": ["inventory", "fixedPrices"], "query": [{ "key": "propertyId", "value": "" }, { "key": "roomId", "value": "" }] },
            "description": "Returns the fixed price rules and rate plans configured for rooms."
          }
        },
        {
          "name": "Create or modify fixed prices",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "[\n  {\n    \"roomId\": 0,\n    \"name\": \"Summer rate\",\n    \"firstNight\": \"2026-06-01\",\n    \"lastNight\": \"2026-08-31\",\n    \"minNights\": 3,\n    \"roomPrice\": 150.0\n  }\n]" },
            "url": { "raw": "{{baseUrl}}/inventory/fixedPrices", "host": ["{{baseUrl}}"], "path": ["inventory", "fixedPrices"] },
            "description": "Creates or updates fixed price rules and rate plans."
          }
        }
      ]
    },
    {
      "name": "Channels",
      "item": [
        {
          "name": "Get channel connections",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/channels?propertyId=", "host": ["{{baseUrl}}"], "path": ["channels"], "query": [{ "key": "propertyId", "value": "" }] },
            "description": "Returns OTA channel connections and room/rate mappings for the account (modeled)."
          }
        }
      ]
    },
    {
      "name": "Accounts",
      "item": [
        {
          "name": "Get account information",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/accounts", "host": ["{{baseUrl}}"], "path": ["accounts"] },
            "description": "Returns account-level information, including sub-accounts and users (modeled)."
          }
        }
      ]
    }
  ]
}
