Lis et réponds aux messages des voyageurs d'Airbnb, Booking.com et Vrbo avec une seule API. Tes clients gardent leur PMS ; ton produit récupère la messagerie.
Ce que ton produit obtient
Fils, historique, réponses et pièces jointes de chaque canal, normalisés dans un format unique.
Les conversations de tous les canaux connectés dans une liste paginée, filtrable par canal et par compte.
Envoie une fois. Le message part sur le canal depuis lequel le voyageur a écrit et est enregistré dans le fil.
Les webhooks se déclenchent à chaque nouveau message d'un voyageur et à chaque réponse envoyée par l'hôte depuis l'application du canal : ta messagerie ne décroche jamais.
Comment ça marche
Liste les fils, lis-en un, réponds. Abonne-toi aux événements de messages pour que les nouveaux apparaissent dès leur arrivée.
L'hôte connecte Airbnb, Booking.com ou Vrbo via Repull Connect. Son PMS reste connecté tel quel.
GET /v1/conversations renvoie tous les fils ; l'endpoint des messages renvoie leur historique.
Fais un POST de message pour répondre et traite reservation.message.received pour garder la messagerie à jour.
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 })
}Couverture par canal
La couverture est vérifiée sur l'API en production. Couverture complète des canaux et des PMS
À côté de n'importe quel PMS
Sur Airbnb et Vrbo, Repull se connecte avec un accès limité à la messagerie. Le PMS de l'hôte continue de gérer les annonces et les calendriers, et ton produit ne lui dispute jamais le contrôle.
En bêta : réservations, messages et avis de Booking.com, sans que l'hôte retire son fournisseur de connectivité à son PMS.
Les mêmes endpoints et les mêmes événements webhook, que le voyageur ait réservé sur Airbnb, Booking.com ou Vrbo. Tu le construis une fois.
L'API derrière
GET /v1/conversationsTous les fils de tous les canaux, paginés par curseur.
GET /v1/conversations/{id}/messagesL'historique d'un fil, du plus récent ou du plus ancien.
POST /v1/conversations/{id}/messagesRéponds au voyageur sur son canal, avec des clés d'idempotence.
POST /v1/conversations/{id}/pre-approvalPré-approuve une demande : Vrbo, ou Airbnb avec un accès complet.
reservation.message.receivedWebhook : un voyageur a envoyé un message.
reservation.message.sentWebhook : l'hôte a répondu, y compris depuis l'application du canal.
Gratuit pour commencer. Connecte un compte de test et reçois des messages dès aujourd'hui.