Pour les éditeurs de logiciels

Chaque conversation avec un voyageur,
dans ton produit.

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

Une messagerie complète, pas un flux de notifications.

Fils, historique, réponses et pièces jointes de chaque canal, normalisés dans un format unique.

Une seule liste de fils

Les conversations de tous les canaux connectés dans une liste paginée, filtrable par canal et par compte.

Des réponses envoyées sur le bon canal

Envoie une fois. Le message part sur le canal depuis lequel le voyageur a écrit et est enregistré dans le fil.

Livraison en temps réel

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

Une messagerie en trois appels et un webhook.

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.

  1. 1

    Connecte l'hôte

    L'hôte connecte Airbnb, Booking.com ou Vrbo via Repull Connect. Son PMS reste connecté tel quel.

  2. 2

    Charge les fils

    GET /v1/conversations renvoie tous les fils ; l'endpoint des messages renvoie leur historique.

  3. 3

    Réponds et écoute

    Fais un POST de message pour répondre et traite reservation.message.received pour garder la messagerie à jour.

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 })
}

Couverture par canal

Ce qui fonctionne où

AirbnbFils, envoi, modification et annulation d'envoi, marquer comme lu. Les pré-approbations et offres spéciales demandent un accès complet, qu'Airbnb n'autorise pas à côté d'un autre PMS.
Booking.comConversations, envoi, pièces jointes.
VrboConversations, envoi de texte. Pré-approbation des demandes et modification du devis.
PMS de l'hôteLes messages des voyageurs de tous les canaux gérés par le PMS, réservations directes comprises, pour les PMS auxquels on se connecte. Les réponses repartent par le PMS quand son API le permet.

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

Tes clients gardent les outils qu'ils utilisent déjà.

Le PMS garde la main sur l'annonce

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.

Booking.com via l'accès extranet de l'hôte

En bêta : réservations, messages et avis de Booking.com, sans que l'hôte retire son fournisseur de connectivité à son PMS.

Une intégration, tous les canaux

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.

Comment Repull fonctionne à côté d'un PMS→

L'API derrière

Endpoints et événements

GET /v1/conversations

Tous les fils de tous les canaux, paginés par curseur.

GET /v1/conversations/{id}/messages

L'historique d'un fil, du plus récent ou du plus ancien.

POST /v1/conversations/{id}/messages

Réponds au voyageur sur son canal, avec des clés d'idempotence.

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

Pré-approuve une demande : Vrbo, ou Airbnb avec un accès complet.

reservation.message.received

Webhook : un voyageur a envoyé un message.

reservation.message.sent

Webhook : l'hôte a répondu, y compris depuis l'application du canal.

Lance la messagerie que tes clients réclament.

Gratuit pour commencer. Connecte un compte de test et reçois des messages dès aujourd'hui.