Skip to content
Quarters Developers
esc
  • Type an endpoint, an object or a word from a guide.

Listings

Retrieve live availability

GET /api/v1/listings/{id}/calendar

Per-day availability, computed on request from reservations and calendar blocks. This is the one read that is not snapshot-bound: a booking taken thirty seconds ago is reflected immediately, because a stale calendar double-books a nine-month tenancy.

Path parameters

ParameterInTypeDescription
id requiredpathstringThe listing id. It must be published.

Query parameters

ParameterInTypeDescription
start querydateDefaults to today in the listing’s timezone. YYYY-MM-DD
end querydateInclusive. Defaults to start + 730 days. The range may span at most 1100 days. YYYY-MM-DD

Response

200 { days: CalendarDay[] }

CalendarDay fields
FieldTypeDescription
date date YYYY-MM-DD
status enumbooked is a confirmed tenancy; reserved is held but not yet firm; unavailable is a calendar block such as a renovation; available is bookable. "available""reserved""booked""unavailable"
minNights integerThe listing’s base minimum.
isBaseMinNights booleanAlways true today; carried so a consumer written against per-day minimums keeps working if they ever vary.

Errors

Every failure is { error, message }; see Errors. A missing or expired bearer is a 401 on every endpoint but the token exchange.

StatuserrorWhen
400invalid_requestA date that is not YYYY-MM-DD, end before start, or a span over 1100 days.
404not_foundUnknown or unpublished listing.

Notes

  • booked is a confirmed tenancy; reserved is held but not yet firm; unavailable is a calendar block (renovation, owner use); available is bookable.
  • Enquiries and options never block a day. Cancelling releases the days immediately.
  • Check-out is exclusive. A tenancy ending on the 30th leaves the 30th available, because the handover is at noon that day.
  • minNights is the listing’s base minimum and isBaseMinNights is always true today; both are carried so a consumer written against per-day minimums keeps working if they ever vary.

Request

curl "https://go.quarters.live/api/v1/listings/0d6e1c2a-…/calendar?start=2026-10-01&end=2026-10-04" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

Response · 200

{
  "days": [
    {
      "date": "2026-10-01",
      "status": "booked",
      "minNights": 30,
      "isBaseMinNights": true
    },
    {
      "date": "2026-10-02",
      "status": "reserved",
      "minNights": 30,
      "isBaseMinNights": true
    },
    {
      "date": "2026-10-03",
      "status": "unavailable",
      "minNights": 30,
      "isBaseMinNights": true
    },
    {
      "date": "2026-10-04",
      "status": "available",
      "minNights": 30,
      "isBaseMinNights": true
    }
  ]
}