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.
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.