For software vendors

Turn conversations
into extra nights.

Extend a stay on the booking itself, or send a priced offer to a guest who's still deciding — from your product, on the guest's own channel.

What your product gets

Revenue actions, not just messages.

Change the booking on the channel, so the guest pays through the platform they booked on.

Extend stays on Airbnb

Change dates, guest count or the total on an existing Airbnb booking, with full access. The guest accepts in Airbnb; a webhook tells you the answer.

Priced offers on inquiries

Send a special offer with your own price on Airbnb and Vrbo, or pre-approve the guest to book.

Know what's free first

Check the listing's calendar before you offer a single night.

How it works

From “can we stay longer?” to a paid extension.

Check the calendar, then change the booking on the channel. The guest confirms in the app they booked with.

  1. 1

    Check availability

    GET /v1/availability/{id} for the nights you want to sell.

  2. 2

    Make the offer

    An Airbnb alteration for a booked guest, or a special offer for an inquiry.

  3. 3

    Hear the answer

    reservation.alteration.responded tells you whether the guest accepted.

extend-stay.ts · ts
// api(): fetch on api.repull.dev with your API key
// A guest said yes to two extra nights. Is the calendar free?
const cal = await api(
  `/v1/availability/${listingId}?from=2026-10-16&to=2026-10-18`,
)

// Airbnb: change the booking itself — dates and the new total
await api('/v1/channels/airbnb/alterations', {
  method: 'POST',
  body: JSON.stringify({
    confirmation_code: 'HMX4CMA2X9',
    check_out: '2026-10-18',
    total_price: 1640,
  }),
})
// The guest accepts in Airbnb; reservation.alteration.responded tells you.
special-offer.ts · ts
// An inquiry on Airbnb or Vrbo: send a priced offer on the thread
await api(`/v1/conversations/${threadId}/special-offers`, {
  method: 'POST',
  body: JSON.stringify({
    checkIn: '2026-11-02',
    checkOut: '2026-11-06',
    guests: { adults: 2 },
    totalPrice: 780,
  }),
})

Channel coverage

What works on each channel

AirbnbWith full access: alterations (dates, guests, total, or a move to another listing), special offers and pre-approvals. Airbnb doesn't allow these alongside another PMS.
VrboPre-approve inquiries, edit the quote, withdraw.
Booking.comNo booking changes through the API. Booking.com has no inquiries; guests change dates on Booking.com.

Coverage is checked against the live API. Full channel and PMS coverage

Alongside any PMS

Your customers keep the tools they already run.

The PMS stays in charge of the listing

On Airbnb and Vrbo, Repull connects with messaging-level access. The host's PMS keeps managing listings and calendars, and your product never competes with it for control.

Booking.com through the host's extranet login

In beta: reservations, messages and reviews from Booking.com, without the host moving their connectivity provider away from their PMS.

One integration, every channel

The same endpoints and the same webhook events whether the guest booked on Airbnb, Booking.com or Vrbo. You build it once.

How Repull works alongside a PMS→

The API behind it

Endpoints and events

GET /v1/availability/{propertyId}

Nightly availability and prices for a date range.

POST /v1/channels/airbnb/alterations

Propose new dates, guests or price on an Airbnb booking.

POST /v1/conversations/{id}/special-offers

A priced offer on an Airbnb or Vrbo inquiry.

reservation.alteration.responded

Webhook: the guest accepted or declined.

Give your customers more nights to sell.

Free to start. Try an offer on a test listing today.