Vrbo

The host signs in with their own Vrbo account. From then on your app reads their Vrbo bookings, inquiries, guest messages and reviews through the same endpoints as every other channel, and answers them: messages, inquiry pre-approvals and quotes, review replies. With full access, Repull also keeps the Vrbo calendar and prices in step with the listing.

Works alongside the host's PMS

Connecting Vrbo to Repull does not disconnect or replace the PMS or channel manager that already runs the host's Vrbo listings. With accessType: "messaging" Repull never writes the Vrbo calendar, prices or content — the PMS keeps them. See Use Repull alongside a PMS.

Vrbo is in beta.

Choose the access

accessTypeUse it whenWhat Repull does on Vrbo
messagingThe host keeps their PMS or channel managerReads bookings, inquiries, messages and reviews; sends messages, pre-approvals, quotes and review replies. Never pushes the calendar.
full_access (default)Repull is the channel managerEverything above, plus availability, prices and minimum stay pushed to Vrbo for each linked listing.

Set accessType when you create the session to decide it for the host. Leave it out and the host chooses on the hosted page.

Connect

  1. Your server creates a Connect session for vrbo-login and sends the host to its URL.
  2. The host signs in with their Vrbo email and password. If Vrbo sends them a verification code, they enter it on the same page.
  3. The host picks which Vrbo units belong to which of your listings.
  4. Once they confirm, the import starts: upcoming bookings and the last 30 days of messages first, then the rest of the account's history in the background.
curl -X POST https://api.repull.dev/v1/connect \
  -H 'Authorization: Bearer sk_live_...' \
  -H 'Content-Type: application/json' \
  -d '{
    "redirectUrl": "https://yourapp.com/connected",
    "allowedProviders": ["vrbo-login"],
    "accessType": "messaging"
  }'

Check the connection and the import with GET /v1/connect/vrbo-login. Each signed-in account comes back with its access and where its import stands (importing → importing_history → imported).

curl https://api.repull.dev/v1/connect/vrbo-login \
  -H 'Authorization: Bearer sk_live_...'

To map units in your own UI instead of the hosted page, use the connection handle vrbo:{externalAccountId}: GET /v1/connections/{id}/unitslists the account's units with a suggested listing for each, and POST /v1/connections/{id}/mappings maps them. Mapping the first unit starts the import.

Listings and reservations

  • GET /v1/channels/vrbo/listings — the Vrbo units linked to your listings.
  • GET /v1/channels/vrbo/reservations, or GET /v1/reservations for every channel at once.

Vrbo bookings are managed on Vrbo: creating, accepting or cancelling them through Repull is not supported.

Guest messages

Vrbo threads are conversations like any other. Filter them with platform=vrbo and reply with the usual send call — the reply goes out on Vrbo. Messages are text only; files are refused with attachments_not_supported.

curl 'https://api.repull.dev/v1/conversations?platform=vrbo' \
  -H 'Authorization: Bearer sk_live_...'

curl -X POST https://api.repull.dev/v1/conversations/{id}/messages \
  -H 'Authorization: Bearer sk_live_...' \
  -H 'Content-Type: application/json' \
  -d '{ "message": "Hi Anna — the hot tub is ready for your arrival." }'

Inquiries: pre-approve or send a quote

Answer a Vrbo inquiry from its conversation. A pre-approval invites the guest to book at the listed price; a special offer is Vrbo's edited quote — send the rent, the fees by Vrbo fee type and a damage deposit, and Vrbo adds its taxes and service fee to reach the guest total. Both can carry a message to the guest.

# Pre-approve
curl -X POST https://api.repull.dev/v1/conversations/{id}/pre-approval \
  -H 'Authorization: Bearer sk_live_...' \
  -H 'Content-Type: application/json' \
  -d '{ "message": "Those dates are free — book whenever you are ready." }'

# Send a quote
curl -X POST https://api.repull.dev/v1/conversations/{id}/special-offers \
  -H 'Authorization: Bearer sk_live_...' \
  -H 'Content-Type: application/json' \
  -d '{
    "checkIn": "2026-11-06", "checkOut": "2026-11-09", "guests": 4,
    "rentalAmount": 780,
    "fees": [{ "type": "CLEANING", "value": 120 }],
    "message": "Here is a quote for your dates."
  }'

# Read or withdraw the current quote
GET    /v1/conversations/{id}/special-offers/current
DELETE /v1/conversations/{id}/special-offers/current

Withdraw a pre-approval with DELETE /v1/conversations/{id}/pre-approval.

Reviews

List Vrbo reviews with GET /v1/reviews?platform=vrbo and reply publicly with POST /v1/reviews/{id}/reply. Vrbo signs the reply with a name — the host name on the account, or the name you send. Vrbo takes one reply per review.

curl -X POST https://api.repull.dev/v1/reviews/{id}/reply \
  -H 'Authorization: Bearer sk_live_...' \
  -H 'Content-Type: application/json' \
  -d '{ "message": "Thank you, Katherine — come back soon!", "name": "The Pine Cabin team" }'

Calendar and prices (full access)

With full_access, a calendar write on a linked listing — PUT /v1/availability/{propertyId} or PATCH /v1/availability/batch — is pushed to Vrbo too: availability, nightly prices and minimum stay. Repull only opens or closes nights it blocked itself or that the host blocked; guest bookings on Vrbo are never touched. With messaging access nothing is pushed.

Listing content (description, photos, amenities) stays on Vrbo. See the capability matrix for the full list.

AI