pms_not_linked

The listing is not managed in a PMS, so there is no PMS quote. Book it directly, or price it with `GET /v1/quotes`.

HTTP 422The request was understood but refused as sent. Change it before retrying.

When it fires

You called POST /v1/reservations/quotefor a listing that is not managed in a PMS. That endpoint asks the listing's PMS for a price and availability; with no PMS there is nothing to ask. The listing's capabilities.reservations.managedBy is repull and quote is false.

Response shape

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

{
  "error": {
    "code": "pms_not_linked",
    "message": "Listing 4118 is not managed in a PMS, so there is no PMS quote for it.",
    "fix": "Create the reservation directly; Repull prices it from the listing's own rates.",
    "docs_url": "https://repull.dev/docs/errors/pms_not_linked",
    "request_id": "req_01J5X7Y8Z9ABCDEF12345678"
  }
}

How to fix

  1. Price the stay with `GET /v1/quotes`, which uses the listing's own rates.
  2. Or create the booking directly with `POST /v1/reservations` — it is priced from the listing's rates (do not send `totalPrice`).
  3. Branch on `capabilities.reservations.quote` from `GET /v1/listings/{id}` before calling the PMS quote.

Examples

curl

curl https://api.repull.dev/v1/listings/4118 \
  -H "Authorization: Bearer sk_live_YOUR_KEY"
# → "capabilities": { "reservations": { "managedBy": "repull", "quote": false, ... } }

TypeScript

const listing = await fetch('https://api.repull.dev/v1/listings/4118', {
  headers: { Authorization: `Bearer ${process.env.REPULL_API_KEY}` },
}).then(r => r.json())

if (!listing.capabilities?.reservations?.quote) {
  // Not a PMS listing (or a PMS without a quote API): use GET /v1/quotes instead
}

If you're an AI agent

This listing has no PMS, so POST /v1/reservations/quote does not apply. Use GET /v1/quotes to price it, or create the reservation directly with POST /v1/reservations.

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

AI