Repull entrega cada mensaje de huésped a tu modelo con el hilo y la reserva que lo acompañan, y envía la respuesta por Airbnb, Booking.com o Vrbo. Tú pones la inteligencia; nosotros nos ocupamos de los canales.
Lo que obtiene tu producto
Tu modelo decide qué decir. Repull le hace llegar el mensaje y lleva la respuesta al huésped.
Un webhook firmado por cada mensaje nuevo, con el id del hilo, el canal, la reserva y el texto.
El historial del hilo, la reserva con fechas, huéspedes y condiciones de la estancia, y el anuncio: una llamada para cada uno.
Cuando un canal reescribe un mensaje (Airbnb elimina enlaces y teléfonos), la respuesta te dice exactamente lo que recibió el huésped.
Cómo funciona
Suscríbete a los mensajes de huéspedes, busca el contexto, deja que tu modelo redacte la respuesta y envíala. Usa el id del evento como clave de idempotencia para que un webhook reintentado nunca envíe dos veces.
reservation.message.received llega firmado, con threadId y reservationId.
Obtén el historial del hilo y la reserva. Añade tu propia base de conocimiento.
Haz POST de la respuesta. Repull la entrega en el canal del huésped y la registra en el hilo.
// api(): fetch on api.repull.dev with your API key
// 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') return new Response(null)
const { threadId, reservationId, body } = event.data
// Context: the thread so far and the booking it belongs to
const history = await api(`/v1/conversations/${threadId}/messages?order=asc`)
const booking = reservationId ? await api(`/v1/reservations/${reservationId}`) : null
const reply = await yourModel.answer({ question: body, history, booking })
const sent = await api(`/v1/conversations/${threadId}/messages`, {
method: 'POST',
headers: { 'Idempotency-Key': event.eventId },
body: JSON.stringify({ message: reply }),
})
// Airbnb strips links and phone numbers — check what the guest actually got
if (sent.contentRewritten) log('delivered as', sent.deliveredContent)
return new Response(null)
}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
reservation.message.receivedWebhook: un nuevo mensaje de huésped, con hilo, reserva y canal.
GET /v1/conversations/{id}/messagesLa conversación hasta ahora, como contexto.
GET /v1/reservations/{id}Fechas, huéspedes, condiciones de la estancia y estado.
POST /v1/conversations/{id}/messagesEnvía la respuesta, de forma idempotente.
POST /v1/reviews/{id}/replyDeja que el mismo asistente responda reseñas, donde el canal permite responder.
Servidor MCP y proveedor para AI SDKDale a un agente Repull como herramientas en lugar de escribir tú las llamadas.
Empieza gratis. Configura un webhook y responde a tu primer huésped hoy.