Développeurs
API Replaize
Authentification
Toutes les routes demandent une clé API de l'espace, créée dans Replaize → Réglages → Clés API. Envoie-la dans l'en-tête x-api-key (ou Authorization: Bearer <clé>). La clé donne accès aux données de son espace uniquement : garde-la côté serveur.
Adresse de base : https://replaize.com/api/v1. Corps et réponses en JSON (UTF-8). Dates : ISO 8601 (2026-11-07T17:00:00Z).
Envoyer un rendez-vous — POST /bookings
À appeler à chaque événement de ton outil : RDV pris, reporté, annulé, no-show, présent. Le même externalId met à jour le RDV (idempotent) : tu peux renvoyer le même RDV autant de fois que nécessaire.
curl -X POST https://replaize.com/api/v1/bookings \
-H "x-api-key: nsk_…" -H "Content-Type: application/json" \
-d '{ "externalId": "abc-123", "status": "booked", "bookedAt": "2026-11-05T10:12:00Z", "scheduledAt": "2026-11-07T17:00:00Z", "eventName": "Appel découverte", "source": "lien-story", "trackingRef": "j57d2k...", "setter": { "email": "setter@exemple.com" }, "closer": { "name": "Paul", "email": "paul@exemple.com" }, "contact": { "firstName": "Marie", "lastName": "Dupont", "email": "marie@exemple.com", "phone": "+33612345678", "instagram": "@marie.dupont" } }'{
"externalId": "abc-123",
"status": "booked",
"bookedAt": "2026-11-05T10:12:00Z",
"scheduledAt": "2026-11-07T17:00:00Z",
"eventName": "Appel découverte",
"source": "lien-story",
"trackingRef": "j57d2k...",
"setter": { "email": "setter@exemple.com" },
"closer": { "name": "Paul", "email": "paul@exemple.com" },
"contact": {
"firstName": "Marie",
"lastName": "Dupont",
"email": "marie@exemple.com",
"phone": "+33612345678",
"instagram": "@marie.dupont"
}
}- externalId (obligatoire) : identifiant du RDV dans ton outil.
- status :
booked(défaut),rescheduled,canceled,no_show,showed. - outcome : issue de l'appel, facultative.
lost(appel tenu, pas de vente) envoie le lead dans la colonne « Appels non closés » si tu en as branché une. - Colonnes automatiques : dans Réglages → Pipeline, une colonne que tu as ajoutée peut recevoir seule les RDV
canceled/no_show, les appelslostet les venteswon. - scheduledAt (obligatoire) : date du RDV. bookedAt : date de prise (défaut : maintenant).
- trackingRef : le paramètre
rpzdu lien de réservation envoyé depuis Replaize. C'est le rattachement le plus fiable : garde ce paramètre de l'URL jusqu'au webhook. - setter :
email(ouidReplaize) du setter qui a pris le RDV. Utile quand le setter réserve à la place du prospect (« lien short ») : le RDV lui est compté même s'il n'est rattaché à aucun lead. - contact : nom, email, téléphone, pseudo Instagram du prospect.
Rattachement automatique au lead, dans cet ordre : trackingRef, pseudo Instagram, téléphone (fil WhatsApp), email du prospect (s'il l'a écrit en message, l'a donné sur un autre RDV ou s'il est saisi sur sa fiche). Sinon le RDV arrive dans Analytics → Rendez-vous → « À rattacher », où l'équipe le relie au bon lead en deux clics. Un RDV rattaché passe le lead en « Rendez-vous pris » (si le webhook est la source des RDV choisie dans Réglages → Intégrations).
Réponse :
{ "booking": { "id": "…", "externalId": "abc-123", "created": true, "attached": true, "conversationId": "…", "matchedBy": "utm", "setterUserId": "…" } }Envoyer une vente — POST /sales
À appeler à la vente, puis à chaque paiement (le même externalId met à jour cashCollected) et en cas de remboursement.
{
"externalId": "vente-789",
"status": "won",
"soldAt": "2026-11-08T15:30:00Z",
"product": "Coaching 3 mois",
"totalAmount": 2400,
"cashCollected": 800,
"currency": "EUR",
"paymentPlan": "3x",
"bookingExternalId": "abc-123",
"setter": { "email": "setter@exemple.com" },
"closer": { "name": "Paul" },
"contact": {
"firstName": "Marie",
"lastName": "Dupont",
"email": "marie@exemple.com",
"phone": "+33612345678",
"instagram": "@marie.dupont"
}
}- externalId, totalAmount (obligatoires). cashCollected : total encaissé à l'instant T (pas le dernier paiement seul). currency : code ISO (défaut
EUR). - status :
won(défaut),refunded,canceled. Une vente remboursée ou annulée sort des KPI. - soldAt : date de la vente (défaut : maintenant).
- bookingExternalId :
externalIddu RDV d'origine envoyé à /bookings, le meilleur moyen de rattacher la vente au bon lead. - setter : setter crédité. Absent : le setter du lead rattaché.
Rattachement : RDV d'origine, trackingRef, pseudo Instagram, téléphone, email ; sinon Analytics → Ventes → « À rattacher ». Une vente gagnée rattachée tague le lead Client.
Lire les KPI — GET /kpis
curl "https://replaize.com/api/v1/kpis?from=2026-11-01&to=2026-11-07" -H "x-api-key: nsk_…"- from, to (obligatoires) : jours
AAAA-MM-JJdans le fuseau de l'espace, 92 jours au plus. - setter (facultatif) :
idou email d'un setter, ouunattributed. - granularity :
day(défaut, détail par jour) outotal.
{
"timezone": "Europe/Paris",
"from": "2026-11-01",
"to": "2026-11-07",
"setters": [
{
"setter": { "id": "k17b…", "name": "Ingrid", "email": "ingrid@…", "role": "member" },
"total": {
"messagesSent": 2500, "messagesTypedInReplaize": 2310,
"repliesReceived": 1432, "replyRate": 0.573,
"newConversations": 237, "leadsReceived": 380,
"followupsDue": 450, "followupsDone": 46,
"linksSent": 36, "callsBooked": 20,
"responsesMeasured": 1210, "avgResponseTimeMs": 840000, "medianResponseTimeMs": 150000,
"suggestionsSentAsIs": 12, "suggestionsEdited": 30, "suggestionsDiscarded": 4,
"salesCount": 3, "salesAmount": 7200, "cashCollected": 2400
},
"days": [{ "date": "2026-11-01", "messagesSent": 340, "...": "…" }]
},
{ "setter": null, "total": { "messagesSent": 157, "...": "…" } }
],
"total": { "messagesSent": 2657, "...": "…" },
"workspace": {
"newConversations": 260, "messagesReceived": 3100,
"messagesSentByHumans": 2657, "messagesSentByAi": 0,
"messagesSentBySequences": 410, "messagesSentByAutomations": 22,
"leadsQualified": 40, "linksSent": 36, "callsBooked": 22,
"avgResponseTimeMs": 900000, "medianResponseTimeMs": 180000
}
}setter: null= messages non attribués (envoyés depuis l'app Instagram ou WhatsApp, hors Replaize).- avgResponseTimeMs : temps moyen entre les messages du prospect restés sans réponse et la réponse humaine du setter.
- medianResponseTimeMs : temps de réponse médian du setter (le temps « typique », moins tiré par les réponses du lendemain), approché à ±20 %.
nullsi aucune réponse mesurée. - replyRate : réponses reçues ÷ messages envoyés.
- Mêmes chiffres que l'onglet Setters d'Analytics. Mis à jour en continu ; un recalcul de contrôle a lieu chaque nuit.
Lister les RDV et les ventes — GET /bookings, GET /sales
curl "https://replaize.com/api/v1/bookings?from=2026-11-01&to=2026-11-07" -H "x-api-key: nsk_…"
curl "https://replaize.com/api/v1/sales?from=2026-11-01&to=2026-11-07" -H "x-api-key: nsk_…"RDV de toutes les sources (Calendly, iClosed, webhook) et ventes de la période, avec le lead rattaché (lead / leadId) et la règle de rattachement (matchedBy : utm, instagram, phone, email, booking, manual). 1 000 résultats au plus par appel (capped: true au-delà : réduis la plage).
Erreurs
Réponse { "message": "…" } avec le statut HTTP : 400 corps ou paramètres invalides, 401 clé absente ou invalide, 404 route inconnue, 5xx erreur Replaize (réessaie plus tard). Besoin d'aide : contact@replaize.com.