pms_unavailable

The PMS says the dates or the unit are not available. Nothing was booked. Pick other dates, or quote first.

HTTP 409The resource is not in a state that allows this operation.

When it fires

You created or changed a booking on a listing managed in a PMS, and the PMS says the dates (or the unit) are not available: taken, closed, or blocked by a stay restriction. Nothing was booked or changed.

The PMS checks availability itself, so this is its answer, not Repull's. messagecarries the PMS's own wording, and pms.errors the section that failed.

Response shape

Every Repull error follows the same envelope. The code is stable and safe to switch on.

{
  "error": {
    "code": "pms_unavailable",
    "message": "Guesty cannot take it: Guesty: listing is not available for the requested dates",
    "fix": "Guesty says the dates (or the unit) are not available. Pick other dates, or check them first with `POST /v1/reservations/quote`. Nothing was booked.",
    "docs_url": "https://repull.dev/docs/errors/pms_unavailable",
    "request_id": "req_01J5X7Y8Z9ABCDEF12345678",
    "provider": "guesty",
    "pms": {
      "applied": [],
      "errors": [{ "section": "reservation", "code": "unavailable", "message": "Guesty: listing is not available for the requested dates" }]
    }
  }
}

How to fix

  1. Pick other dates or another unit.
  2. Where the listing supports it (`capabilities.reservations.quote`), check the stay first with `POST /v1/reservations/quote` — `available: false` comes with the PMS reasons in `restrictions`.
  3. Retry with a new `Idempotency-Key`, since the request itself changed.

Examples

curl

curl -X POST https://api.repull.dev/v1/reservations/quote \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listingId": 4118, "checkIn": "2026-10-01", "checkOut": "2026-10-05", "adults": 2}'
# → { "available": false, "restrictions": ["Guesty: minimum stay is 3 nights"], ... }

TypeScript

const res = await fetch('https://api.repull.dev/v1/reservations', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.REPULL_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
  body: JSON.stringify(booking),
})
if (res.status === 409) {
  const { error } = await res.json()
  if (error.code === 'pms_unavailable') {
    return { unavailable: true, reason: error.message } // offer other dates
  }
}

If you're an AI agent

The PMS says the dates or unit are not available; nothing was booked. Do not retry the same dates. Ask the user for other dates, or check with POST /v1/reservations/quote first.

Hit an error that isn't covered? Email hello@repull.dev with the request id from the response headers.

AI