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
Hilos, historial, respuestas y adjuntos de todos los canales, normalizados en un único formato.
Conversaciones de todos los canales conectados en una lista paginada, filtrable por canal y por cuenta.
Envía una vez. El mensaje se entrega por el canal desde el que escribió el huésped y queda registrado en el hilo.
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
Lista los hilos, lee uno, responde. Suscríbete a los eventos de mensajes para que los nuevos aparezcan en cuanto llegan.
El anfitrión conecta Airbnb, Booking.com o Vrbo mediante Repull Connect. Su PMS sigue conectado tal como está.
GET /v1/conversations devuelve todos los hilos; el endpoint de mensajes devuelve su historial.
Haz POST de un mensaje para responder y gestiona reservation.message.received para mantener la bandeja al día.
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.' }),
})// 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
La cobertura se comprueba con la API en producción. Cobertura completa de canales y PMS
Junto a cualquier PMS
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.
En beta: reservas, mensajes y reseñas de Booking.com, sin que el anfitrión tenga que retirar su proveedor de conectividad del PMS.
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.
La API que hay detrás
GET /v1/conversationsTodos los hilos de todos los canales, paginados por cursor.
GET /v1/conversations/{id}/messagesEl historial de un hilo, del más reciente o del más antiguo.
POST /v1/conversations/{id}/messagesResponde al huésped en su canal, con claves de idempotencia.
POST /v1/conversations/{id}/pre-approvalPreaprueba una consulta: Vrbo, o Airbnb con acceso completo.
reservation.message.receivedWebhook: un huésped ha enviado un mensaje.
reservation.message.sentWebhook: el anfitrión ha respondido, también desde la app del canal.
Empieza gratis. Conecta una cuenta de prueba y recibe mensajes hoy mismo.