NewReplaize on iPhone

Developers

Replaize API

Authentication

Every route requires a workspace API key, created in Replaize → Settings → API keys. Send it in the x-api-key header (or Authorization: Bearer <key>). A key only grants access to its own workspace's data: keep it server-side.

Base URL: https://replaize.com/api/v1. JSON bodies and responses (UTF-8). Dates: ISO 8601 (2026-11-07T17:00:00Z).

Send a booking — POST /bookings

Call it on every event of your tool: booked, rescheduled, canceled, no-show, showed. The same externalId updates the booking (idempotent): you can resend the same booking as often as needed.

{
  "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 (required): the booking ID in your tool.
  • status: booked (default), rescheduled, canceled, no_show, showed.
  • outcome: optional call outcome. lost (call held, no sale) moves the lead to your “Calls not closed” column if you set one up.
  • Automatic columns: in Settings → Pipeline, a column you added can receive canceled / no_show bookings, lost calls and won sales on its own.
  • scheduledAt (required): the call date. bookedAt: when it was booked (default: now).
  • trackingRef: the rpz parameter of the booking link sent from Replaize. It is the most reliable match: keep this URL parameter until the webhook.
  • setter: email (or Replaize id) of the setter who booked the call. Useful when the setter books on the prospect's behalf: the call is credited to them even if it is not attached to a lead.
  • contact: prospect's name, email, phone, Instagram username.

Automatic match to the lead, in this order: trackingRef, Instagram username, phone (WhatsApp thread), the prospect's email (written in a message, given on another booking or entered on the lead card). Otherwise the booking lands in Analytics → Bookings → “To attach”, where the team links it to the right lead in two clicks.

Send a sale — POST /sales

Call it when the sale happens, then on every payment (the same externalId updates cashCollected) and on refund.

{
  "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 (required). cashCollected: total collected so far (not just the last payment). currency: ISO code (default EUR).
  • status: won (default), refunded, canceled. Refunded or canceled sales leave the KPIs.
  • bookingExternalId: the externalId of the original booking sent to /bookings, the best way to match the sale to the right lead.
  • setter: credited setter. If missing: the attached lead's setter.

A won sale attached to a lead tags it Client. Unmatched sales go to Analytics → Sales → “To attach”.

Read KPIs — GET /kpis

curl "https://replaize.com/api/v1/kpis?from=2026-11-01&to=2026-11-07" -H "x-api-key: nsk_…"
  • from, to (required): YYYY-MM-DD days in the workspace time zone, up to 92 days.
  • setter (optional): a setter's id or email, or unattributed.
  • granularity: day (default, daily detail) or total.
{
  "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 = unattributed messages (sent from the Instagram or WhatsApp app, outside Replaize).
  • avgResponseTimeMs: average time between the prospect's unanswered messages and the setter's human reply.
  • medianResponseTimeMs: the setter's median response time (the "typical" time, less skewed by next-day replies), approximate to ±20%. null when no reply was measured.
  • Same figures as the Setters tab in Analytics.

List bookings and sales — 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_…"

Bookings from every source (Calendly, iClosed, webhook) and sales of the period, with the attached lead and the matching rule (matchedBy). Up to 1,000 results per call (capped: true beyond that: narrow the range).

Errors

{ "message": "…" } with the HTTP status: 400 invalid body or parameters, 401 missing or invalid key, 404 unknown route, 5xx Replaize error (retry later). Need help: contact@replaize.com.