• 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. Replace the rate grid
Buydocschangelogsdemocommunity

Replace the rate grid

PreviousGet the rate gridNextGet availability
On this page
AuthorizationRequest bodyExampleResponseWhat it refusesNotes

PUT /api/v1/properties/{propertyId}/rates

Replaces the whole grid. A duration absent from the body loses its rate and disappears from the booking choices for this villa.

The five durations the product supports are 60, 120, 180, 300 and 480 minutes. The list is closed: no duration can be added or renamed.

Authorization

Role in the organizationThis endpoint
ownerAllowed
adminAllowed
memberRefused — 403

Request body

FieldTypeRequiredDescription
ratesarrayyesOne object per priced duration
rates[].durationMinutesintegeryesOne of 60, 120, 180, 300, 480
rates[].amountintegeryesStrictly positive, minor unit of the currency

Example

bash
curl -X PUT -H "x-api-key: $VILLASLOT_API_KEY" -H "content-type: application/json" \
  -d '{"rates":[{"durationMinutes":120,"amount":2800000}]}' \
  "https://villaslot.app/api/v1/properties/1f0a…/rates"

Response

  • 200 OK — the saved grid, read back.

What it refuses

  • 403 Forbidden — the key bearer is a member.
  • 422 Unprocessable Entity — rates missing or not a list, an unsupported duration, a duplicated duration, or an amount that is not a positive integer.
  • 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.

Notes

  • No existing booking changes price. The amount is copied onto the booking when it is created, and never read back from the grid.