List published vacation rentals for a manager
View .mdGET /v1/developer/collections/{collection}/vacation-rentals
Operation ID: listVacationRentals
Returns published Kismet content within the authenticated application grant. When the credential also holds collection-wide rates.read, each row may add pricing.nightlyFrom, the cheapest sellable night in the coming 90 days, kept current by Kismet’s rate synchronization and served from stored values (no calendar is read per request). It is indicative display pricing, never a dated quote. sort orders the WHOLE matched set: recommended is the collection’s own stable order; price-asc/price-desc order by pricing.nightlyFrom with homes lacking a synced price last; name-asc orders by name; bedrooms/sleeps order largest-first with missing values last; best-fit is the Best-Fit ranking Kismet storefronts show (the /v1/public/vrm order). Ties always break by name, then id, and the cursor keeps the sort across pages. minPrice/maxPrice are whole currency units per night (inclusive) against nightlyFrom; homes without a synced price are excluded only while a price filter is set. Unknown sort values return a 400 problem. Every summary already carries location.geo, media.hero, media.cardImages (up to 5 card-carousel photos: the hero first, then priority-space photos, then the gallery; public-safe or Kismet-proxied URLs only) and (behind rates.read) pricing.nightlyFrom when the data exists, so a card, card carousel, map, or sort needs no per-home detail read. TEST view=staging additionally reads linked rooms under both active catalog and source-inventory grants. Staging-only rooms have publication.publishedAt=null and an explicit visibility/expiry; indicative pricing is withheld. No availability search, booking URL, or vendor payload is returned.
Build a TEST catalog preview: setup, SDK and REST examples, independent approval expiry, and room-preview boundaries. Published remains the default.
Contract status
Section titled “Contract status”| Field | Value |
|---|---|
| Maturity | beta |
| Required capability | vacation_rentals.read |
| Freshness class | published-content |
| Quota cost | 1 |
All operations require a Kismet Developer Bearer credential. Collection and resource authority is resolved from the credential’s installation grants; identifiers in the URL never grant access.
Request parameters
Section titled “Request parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
view |
query | published | staging | no | TEST-only opt-in to explicitly approved, unexpired staging catalog and room reads. Omit for published inventory. Does not authorize pricing, booking, or publication. |
cursor |
query | string | no | |
limit |
query | integer | no | |
group |
query | string | no | Published bookable-product group id or slug. |
minBedrooms |
query | integer | no | |
minBathrooms |
query | number | no | |
minGuests |
query | integer | no | |
petsAllowed |
query | boolean | no | |
sort |
query | recommended | price-asc | price-desc | name-asc | bedrooms | sleeps | best-fit | no | Whole-set ordering. recommended = the collection’s own order; price-* by pricing.nightlyFrom (unpriced homes last); bedrooms/sleeps largest-first; ties break by name then id. The cursor keeps the sort. |
minPrice |
query | number | no | Minimum nightly from-price in whole currency units (inclusive, against pricing.nightlyFrom). Homes without a synced price are excluded while any price filter is set. |
maxPrice |
query | number | no | Maximum nightly from-price in whole currency units (inclusive, against pricing.nightlyFrom). Homes without a synced price are excluded while any price filter is set. |
collection |
path | string | yes |
Request body
Section titled “Request body”This operation has no JSON request body.
Set KISMET_API_ORIGIN=https://api.ksmt.app and configure KISMET_DEVELOPER_API_KEY in your environment. Run server-credential requests from your backend, not browser code.
curl --request GET \ "$KISMET_API_ORIGIN/v1/developer/collections/example-collection/vacation-rentals" \ --header "Authorization: Bearer $KISMET_DEVELOPER_API_KEY" \ --header "Accept: application/json"Responses
Section titled “Responses”| Status | Meaning |
|---|---|
| 200 | Success. |
| 400 | Invalid request parameters or body. |
| 401 | Missing, invalid, expired, or inappropriate credential/session. |
| 403 | Credential lacks the required grant/capability, or an origin/CSRF check failed. |
| 429 | Rate limit or quota exceeded; inspect response metadata before retrying. |
| 503 | A required Kismet dependency is temporarily unavailable. |
200 response example
Section titled “200 response example”{ "data": [ { "resourceType": "bookable_product", "type": "vacation_rental", "id": "22222222-2222-4222-8222-222222222222", "slug": "sandbox-chalet", "name": "Sandbox Chalet", "tagline": "A cozy evaluation chalet", "collection": { "id": "11111111-1111-4111-8111-111111111111", "slug": "sandbox-stays", "name": "Sandbox Stays" }, "capacity": { "bedrooms": 3, "bathrooms": 2, "maxGuests": 8 }, "location": { "locality": "Dover", "region": "VT", "postalCode": "05356", "country": "US", "geo": { "latitude": 42.94, "longitude": -72.87, "precision": "approximate" } }, "media": { "hero": { "url": "https://cdn.kismet.travel/sandbox/chalet-hero.jpg", "alt": "Chalet exterior" }, "cardImages": [ { "url": "https://cdn.kismet.travel/sandbox/chalet-hero.jpg", "alt": "Chalet exterior" }, { "url": "https://cdn.kismet.travel/sandbox/chalet-living.jpg" }, { "url": "https://cdn.kismet.travel/sandbox/chalet-deck.jpg" } ] }, "amenityHighlights": [ "Hot tub", "EV charger" ], "links": { "self": "/v1/developer/vacation-rentals/22222222-2222-4222-8222-222222222222" }, "publication": { "publishedAt": "2026-06-15T00:00:00.000Z", "updatedAt": "2026-07-01T00:00:00.000Z" }, "capabilities": [ "vacation_rentals.read" ], "pricing": { "nightlyFrom": { "amountMinor": 16500, "currency": "USD", "horizonDays": 90 } } } ], "page": { "limit": 20, "nextCursor": null }}200 response schema
Section titled “200 response schema”Content type: application/json. Required fields, nullable values, and nested structures are defined below.
View complete response schema
{ "type": "object", "additionalProperties": false, "required": [ "data", "page" ], "properties": { "data": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": [ "resourceType", "type", "id", "slug", "name", "collection", "capacity", "media", "amenityHighlights", "links", "publication", "capabilities" ], "properties": { "resourceType": { "enum": [ "bookable_product" ] }, "type": { "enum": [ "vacation_rental" ] }, "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" }, "tagline": { "type": "string" }, "shortSummary": { "type": "string" }, "propertyType": { "type": "string" }, "collection": { "type": "object", "additionalProperties": false, "required": [ "id", "slug", "name" ], "properties": { "id": { "type": "string" }, "slug": { "type": "string" }, "name": { "type": "string" } } }, "capacity": { "type": "object", "additionalProperties": false, "required": [ "bedrooms", "bathrooms", "maxGuests" ], "properties": { "bedrooms": { "type": [ "null", "integer" ] }, "bathrooms": { "type": [ "null", "number" ] }, "maxGuests": { "type": [ "null", "integer" ] } } }, "location": { "type": "object", "additionalProperties": false, "required": [ "locality", "region", "postalCode", "country", "geo" ], "properties": { "locality": { "type": [ "null", "string" ] }, "region": { "type": [ "null", "string" ] }, "postalCode": { "type": [ "null", "string" ] }, "country": { "type": [ "null", "string" ] }, "geo": { "anyOf": [ { "type": "null" }, { "type": "object", "additionalProperties": false, "required": [ "latitude", "longitude", "precision" ], "properties": { "latitude": { "type": "number" }, "longitude": { "type": "number" }, "precision": { "enum": [ "approximate" ] } } } ] } } }, "media": { "type": "object", "additionalProperties": false, "required": [ "cardImages" ], "properties": { "hero": { "type": "object", "additionalProperties": false, "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri" }, "alt": { "type": "string" }, "caption": { "type": "string" } } }, "cardImages": { "type": "array", "maxItems": 5, "items": { "type": "object", "additionalProperties": false, "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri" }, "alt": { "type": "string" }, "caption": { "type": "string" } } } } } }, "amenityHighlights": { "type": "array", "maxItems": 12, "items": { "type": "string" } }, "pricing": { "type": "object", "additionalProperties": false, "required": [ "nightlyFrom" ], "properties": { "nightlyFrom": { "type": "object", "additionalProperties": false, "required": [ "amountMinor", "currency", "horizonDays" ], "properties": { "amountMinor": { "type": "integer" }, "currency": { "type": "string" }, "horizonDays": { "type": "integer" } } } } }, "links": { "type": "object", "additionalProperties": false, "required": [ "self" ], "properties": { "self": { "type": "string" } } }, "publication": { "type": "object", "additionalProperties": false, "required": [ "publishedAt", "updatedAt" ], "properties": { "publishedAt": { "type": [ "null", "string" ], "format": "date-time" }, "visibility": { "type": "string", "enum": [ "published", "staging" ] }, "stagingExpiresAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } } }, "capabilities": { "type": "array", "items": { "type": "string" } } } } }, "page": { "type": "object", "additionalProperties": false, "required": [ "limit", "nextCursor" ], "properties": { "limit": { "type": "integer" }, "nextCursor": { "type": [ "null", "string" ] } } } }}