Para empresas de software

Cada conversación con huéspedes,
dentro de tu producto.

Lee y responde mensajes de huéspedes de Airbnb, Booking.com y Vrbo con una sola API. Tus clientes mantienen su PMS; tu producto obtiene la bandeja.

Lo que obtiene tu producto

Una bandeja completa, no un feed de notificaciones.

Hilos, historial, respuestas y adjuntos de todos los canales, normalizados en un único formato.

Una sola lista de hilos

Conversaciones de todos los canales conectados en una lista paginada, filtrable por canal y por cuenta.

Respuestas que salen por el canal correcto

Envía una vez. El mensaje se entrega por el canal desde el que escribió el huésped y queda registrado en el hilo.

Entrega en tiempo real

Los webhooks se disparan con cada mensaje nuevo de un huésped y con las respuestas que el anfitrión envía desde la app del canal, así tu bandeja nunca se desfasa.

Cómo funciona

Una bandeja en tres llamadas y un webhook.

Lista los hilos, lee uno, responde. Suscríbete a los eventos de mensajes para que los nuevos aparezcan en cuanto llegan.

  1. 1

    Conecta al anfitrión

    El anfitrión conecta Airbnb, Booking.com o Vrbo mediante Repull Connect. Su PMS sigue conectado tal como está.

  2. 2

    Carga los hilos

    GET /v1/conversations devuelve todos los hilos; el endpoint de mensajes devuelve su historial.

  3. 3

    Responde y escucha

    Haz POST de un mensaje para responder y gestiona reservation.message.received para mantener la bandeja al día.

inbox.ts · ts
const api = (path: string, init?: RequestInit) =>
  fetch(`https://api.repull.dev${path}`, {
    ...init,
    headers: {
      Authorization: `Bearer ${process.env.REPULL_API_KEY}`,
      'Content-Type': 'application/json',
    },
  }).then(r => r.json())

// Every thread, from every channel, in one list
const { data: threads } = await api('/v1/conversations?limit=50')

// One thread's history, oldest first
const { data: messages } = await api(`/v1/conversations/${threads[0].id}/messages?order=asc`)

// Reply — it goes out on the channel the guest wrote from
await api(`/v1/conversations/${threads[0].id}/messages`, {
  method: 'POST',
  body: JSON.stringify({ message: 'Hi Alex, check-in is from 4pm.' }),
})
webhook.ts · ts
// POST /webhooks/repull — subscribed to reservation.message.received
export async function POST(req: Request) {
  const event = await req.json() // verify X-Repull-Signature first
  if (event.event === 'reservation.message.received') {
    const { threadId, channel, senderName, body } = event.data
    await inbox.push({ threadId, channel, from: senderName, body })
  }
  return new Response(null, { status: 200 })
}

Cobertura por canal

Qué funciona dónde

AirbnbHilos, envío, edición y anulación de envío, marcar como leído. Las preaprobaciones y ofertas especiales requieren acceso completo, que Airbnb no permite junto a otro PMS.
Booking.comConversaciones, envío, adjuntos.
VrboConversaciones, envío de texto. Preaprobación de consultas y edición del presupuesto.
PMS del anfitriónMensajes de huéspedes de todos los canales que gestiona el PMS, reservas directas incluidas, para los PMS a los que nos conectamos. Las respuestas vuelven a través del PMS cuando su API lo permite.

La cobertura se comprueba con la API en producción. Cobertura completa de canales y PMS

Junto a cualquier PMS

Tus clientes mantienen las herramientas que ya usan.

El PMS sigue a cargo del anuncio

En Airbnb y Vrbo, Repull se conecta con acceso de mensajería. El PMS del anfitrión sigue gestionando anuncios y calendarios, y tu producto nunca compite con él por el control.

Booking.com con el acceso a la extranet del anfitrión

En beta: reservas, mensajes y reseñas de Booking.com, sin que el anfitrión tenga que retirar su proveedor de conectividad del PMS.

Una integración, todos los canales

Los mismos endpoints y los mismos eventos de webhook tanto si el huésped reservó en Airbnb como en Booking.com o Vrbo. Lo construyes una vez.

Cómo funciona Repull junto a un PMS→

La API que hay detrás

Endpoints y eventos

GET /v1/conversations

Todos los hilos de todos los canales, paginados por cursor.

GET /v1/conversations/{id}/messages

El historial de un hilo, del más reciente o del más antiguo.

POST /v1/conversations/{id}/messages

Responde al huésped en su canal, con claves de idempotencia.

POST /v1/conversations/{id}/pre-approval

Preaprueba una consulta: Vrbo, o Airbnb con acceso completo.

reservation.message.received

Webhook: un huésped ha enviado un mensaje.

reservation.message.sent

Webhook: el anfitrión ha respondido, también desde la app del canal.

Lanza la bandeja que tus clientes no paran de pedir.

Empieza gratis. Conecta una cuenta de prueba y recibe mensajes hoy mismo.