• VillaSlotDocumentation
  • Introduction
  • Getting Started
  • API
    • Discovery
      • GETGet my context
    • Villas
      • GETList villas
      • POSTCreate a villa
      • GETGet a villa
      • PATCHRename a villa
      • POSTArchive a villa
      • POSTUpload a villa photo
      • GETGet opening hours
      • PUTReplace opening hours
      • GETGet the rate grid
      • PUTReplace the rate grid
      • GETGet availability
    • Bookings
      • GETList bookings over a period
      • POSTCreate a booking
      • GETGet a booking
      • POSTConfirm a booking
      • POSTComplete a booking
      • POSTCancel a booking
      • POSTReschedule a booking
    • Customers
      • GETList customers
      • POSTCreate a customer
      • POSTImport a batch of customers
      • GETGet a customer
      • PATCHUpdate a customer
    • Booking settings
      • GETGet booking settings
      • PATCHUpdate booking settings
  1. Documentation
  2. API
  3. Villas
  4. List villas
Buydocschangelogsdemocommunity

List villas

PreviousVillasNextCreate a villa
On this page
AuthorizationQuery parametersExampleResponseWhat it refuses

GET /api/v1/properties

The villas of the key's organization. Archived villas are excluded by default — they no longer take new bookings.

Authorization

Role in the organizationThis endpoint
ownerAllowed
adminAllowed
memberAllowed

Query parameters

ParameterTypeDefaultDescription
pageinteger1Page number, from 1
limitinteger20Page size, capped at 100
searchstring—Matches the villa name
statusenumactiveactive, archived or all

Example

bash
curl -H "x-api-key: $VILLASLOT_API_KEY" \
  "https://villaslot.app/api/v1/properties?limit=50&status=all"

Response

  • 200 OK — the page, with pagination: {total, page, limit, totalPages}.
json
{
  "success": true,
  "data": [
    {
      "id": "1f0a…",
      "organizationId": "a379bb76-…",
      "name": "Villa Suar",
      "photoUrl": "https://…/villa.jpg",
      "status": "active",
      "nightlyRate": 4500000,
      "createdAt": "2026-01-04T08:00:00.000Z",
      "updatedAt": "2026-01-04T08:00:00.000Z"
    }
  ],
  "pagination": {"total": 4, "page": 1, "limit": 50, "totalPages": 1}
}

What it refuses

  • 422 Unprocessable Entity — status is not one of the three accepted values.
  • 401 Unauthorized — missing or invalid key, or a key whose bearer left the organization.
  • 404 Not Found — unknown id, or an id belonging to another organization. The two are deliberately indistinguishable.
  • 429 Too Many Requests — over 120 requests in a minute for this key.