Rendez-vous
Un rendez-vous, c’est une réunion que ton agent IA a réservée dans la conversation, sur ton calendrier connecté. L’API les liste en lecture seule, créneau le plus récent d’abord.
Endpoints
Section intitulée « Endpoints »| Méthode | Chemin | Scope |
|---|---|---|
| GET | /bookings |
bookings:read |
Lister les rendez-vous
Section intitulée « Lister les rendez-vous »curl "https://app.whatsetter.com/api/v1/bookings?since=2026-09-01T00:00:00Z&limit=25" \ -H "Authorization: Bearer ws_live_…"const res = await fetch( 'https://app.whatsetter.com/api/v1/bookings?since=2026-09-01T00:00:00Z&limit=25', { headers: { Authorization: 'Bearer ws_live_…' } },);const { data: bookings, pagination } = await res.json();import requests
r = requests.get( "https://app.whatsetter.com/api/v1/bookings", params={"since": "2026-09-01T00:00:00Z", "limit": 25}, headers={"Authorization": "Bearer ws_live_…"},)bookings = r.json()["data"]{ "data": [ { "id": "66f1a2b3c4d5e6f7a8b9c0f5", "status": "booked", "lead_id": "33612345678@c.us", "campaign_id": "acme-france-1-ab12", "provider": "calendly", "source": "chat", "start_at": "2026-09-23T13:00:00.000Z", "end_at": "2026-09-23T13:30:00.000Z", "timezone": "Europe/Paris", "attendee": { "name": "Julien", "email": "julien@example.com", "phone": "+33612345678" }, "cancel_url": "https://calendly.com/cancellations/…", "reschedule_url": "https://calendly.com/reschedulings/…", "canceled_at": null, "cancellation_reason": null, "created_at": "2026-09-18T16:45:00.000Z" } ], "pagination": { "has_more": false, "next_cursor": "66f1a2b3c4d5e6f7a8b9c0f5" }}| Paramètre | Effet |
|---|---|
status |
Correspondance exacte sur un statut ci-dessous. |
campaign_id |
Le slug de la campagne ou son id. |
since |
Seulement les rendez-vous qui commencent à partir de cette date ISO 8601. |
limit, cursor |
Pagination, 1 à 100 par page. |
Champs et statuts
Section intitulée « Champs et statuts »| Champ | Signification |
|---|---|
status |
booked, canceled, rescheduled, failed ou no_show. |
lead_id |
L’id WhatsApp du lead (33612345678@c.us), la même valeur que whatsapp_id sur un lead. Pour ouvrir le lead, appelle GET /leads?phone=+33612345678. |
campaign_id |
Le slug de la campagne. |
provider |
Le fournisseur de calendrier où vit la réunion. |
source |
Comment elle a été réservée : chat (par l’agent dans la conversation), static_link (le lead a utilisé le lien de réservation), webhook (signalée par le fournisseur), manual. |
start_at, end_at |
En UTC. Affiche-les dans timezone. |
attendee |
Nom, email et téléphone donnés par le lead à la réservation. |
canceled_at, cancellation_reason |
Renseignés quand la réunion a été annulée. |
La liste est triée sur start_at, créneau le plus récent d’abord : les réunions à venir passent avant les réunions passées.
Les liens sont des secrets
Section intitulée « Les liens sont des secrets »cancel_url et reschedule_url sont des liens de capacité générés par le fournisseur de calendrier : quiconque en détient un peut annuler ou déplacer la réunion, sans se connecter. Traite-les comme des mots de passe : stocke-les chiffrés, ne les journalise jamais, ne les montre jamais à quelqu’un qui ne pourrait pas agir sur la réunion. Ils valent null quand le fournisseur n’en a pas fourni.
Les erreurs que tu rencontreras
Section intitulée « Les erreurs que tu rencontreras »| HTTP | code |
Quand |
|---|---|---|
| 401 | missing_api_key, invalid_api_key |
Clé absente, inconnue ou révoquée. |
| 403 | insufficient_scope |
La clé n’a pas bookings:read. |
| 422 | validation_error |
since n’est pas une date ISO 8601, limit hors de 1 à 100, curseur invalide ou expiré. |
| 429 | rate_limited |
Trop de requêtes cette minute. Respecte Retry-After. |

