Skip to content

Resources, room types, and rate plans

A resource is the bookable thing — a hotel room, an apartment unit, a villa. Every resource belongs to one tenant (the operator you’re integrating for).

Lodging resources usually have a room type (max occupancy, max adults, max children) and one or more rate plans — the price policy for a stay: currency, refundable or not, minimum/maximum stay nights, whether the plan is closed to arrival or departure on certain days.

Terminal window
curl https://api.<domain>/v1/resources/<RESOURCE_ID> \
-H "Authorization: Bearer sk_test_..."
{
"id": "<RESOURCE_ID>",
"kind": "room",
"name": "Deluxe Garden View",
"capacity": 3,
"currency": "IDR",
"slug": "deluxe-garden-view",
"photoUrls": [],
"roomType": {
"id": "...",
"code": "DLX",
"name": "Deluxe",
"maxOccupancy": 3,
"maxAdults": 2,
"maxChildren": 1
},
"ratePlans": [
{
"id": "...",
"code": "BAR",
"name": "Best Available Rate",
"currency": "IDR",
"isRefundable": true,
"minStayNights": 1,
"maxStayNights": null,
"closedToArrival": false,
"closedToDeparture": false,
"enabled": true
}
]
}

You need a rate plan’s id before you can request a quote for a resource that has a room type — see Quotes. A resource with no room type (a generic bookable resource) skips ratePlanId entirely when quoting.

GET /v1/resources lists every resource for your tenant, cursor-paginated: pass ?cursor= from the previous response’s nextCursor, never an offset.

Both endpoints accept a pk_ key: no guest data or money lives in this shape, so the widget can read it too.