Aiosell to Staydeed (Webhooks)

Inventory POST

Aiosell POSTs room availability updates to Staydeed for date ranges and room types.

POSThttps://staydeed.com/api/ota/inventory

This endpoint is hosted by Staydeed. Updates are sent as (room, date-range) grain.

The SAME endpoint also receives Inventory Restrictions - there is no separate restrictions URL. See the Inventory Restrictions page.

Dates use YYYY-MM-DD. Every request needs HTTP Basic Auth. Send Staydeed the hotelCode you were given at onboarding.

Headers

NameRequiredExample
Content-TypeYesapplication/json
AuthorizationYesBasic <base64(user:pass)>

Request body

FieldTypeRequiredDescription
hotelCodestringYesProperty identifier.
updatesarray<Update>YesInventory update blocks (at least one).
updates[].startDatestring (YYYY-MM-DD)YesInclusive start date.
updates[].endDatestring (YYYY-MM-DD)YesInclusive end date; on or after startDate.
updates[].roomsarray<Room>YesPer-room availability.
updates[].rooms[].roomCodestringYesRoom type identifier.
updates[].rooms[].availableintegerYesNon-negative available count. Optional only when restrictions is sent.

Sample payload

{
  "hotelCode": "sandbox-pms",
  "updates": [
    {
      "startDate": "2026-11-10",
      "endDate": "2026-11-12",
      "rooms": [
        {
          "roomCode": "suite",
          "available": 3
        },
        {
          "roomCode": "executive",
          "available": 20
        }
      ]
    }
  ]
}

Responses

200Success

{
  "success": true,
  "message": "Inventory Updated Successfully"
}

200Success

{
  "success": true,
  "message": "Inventory Updated Successfully",
  "warnings": [
    "UNKNOWN_ROOM_CODE : deluxe"
  ]
}

200Inbound inventory switched off for the property

{
  "success": true,
  "skipped": true,
  "message": "Inventory inbound is switched off for this property"
}

404Unknown or disabled hotelCode

{
  "success": false,
  "message": "Unknown hotelCode"
}

401Missing or invalid Basic Auth credentials

{
  "success": false,
  "message": "Unauthorized"
}

422Validation failed

{
  "message": "The updates field is required.",
  "errors": {
    "updates": [
      "The updates field is required."
    ]
  }
}