---
title: "Consulter, annuler et clôturer des rendez-vous avec l’API"
description: "Lister et filtrer les rendez-vous depuis l'API Apenday, lire le détail de leurs champs, puis annuler, clôturer ou déclarer manqué un rendez-vous."
url: "https://support.apenday.com/support/consulter-et-annuler-des-rendez-vous-avec-lapi/"
updated: "2026-10-27"
category: Développeurs
tags:
  - Administrateur
---

# Consulter, annuler et clôturer des rendez-vous avec l’API

Cette page décrit la ressource `/api/public/appointments`. La génération de la clé d'API et les conventions communes sont décrites dans la page [Utiliser l'API Apenday](https://support.apenday.com/support/utiliser-lapi-apenday/). Les identifiants d'événement et d'agence portés par les champs `meeting_id` et `agency_id` se résolvent avec la page [Retrouver vos identifiants d'événements et d'agences avec l'API](https://support.apenday.com/support/retrouver-vos-identifiants-devenements-et-dagences-avec-lapi/).

## Lister vos rendez-vous

```
curl "https://app.apenday.com/api/public/appointments?itemsPerPage=50" 
  -H "X-AUTH-TOKEN: VOTRE_CLE_API" 
  -H "Accept: application/ld+json"
```

La collection renvoie les rendez-vous du périmètre de votre clé. L'ordre n'est pas garanti sans paramètre `order`.

## Filtrer et trier la liste

| Paramètre | Effet |
| --- | --- |
| `date[after]`, `date[before]` | Date de début postérieure ou antérieure à la valeur, borne incluse |
| `date[strictly_after]`, `date[strictly_before]` | Mêmes filtres, borne exclue |
| `status` | Statut exact. Répéter `status[]` pour plusieurs valeurs |
| `search` | Recherche partielle dans les réponses au formulaire et dans les paramètres UTM du rendez-vous |
| `order[date]`, `order[created_at]`, `order[id]` | Tri, valeur `asc` ou `desc` |

Les dates s'écrivent au format ISO 8601, par exemple `2026-09-01T00:00:00+02:00`. Elles sont converties en UTC avant comparaison.

Statuts possibles : `scheduled`, `terminated`, `missed`, `cancelled`, `cancelled_by_consultant`.

```
curl -G "https://app.apenday.com/api/public/appointments" 
  -H "X-AUTH-TOKEN: VOTRE_CLE_API" 
  -H "Accept: application/ld+json" 
  --data-urlencode "date[after]=2026-09-01T00:00:00+02:00" 
  --data-urlencode "status=scheduled" 
  --data-urlencode "order[date]=asc"
```

## Les champs d'un rendez-vous

| Champ | Type | Contenu |
| --- | --- | --- |
| `id` | chaîne | Identifiant du rendez-vous |
| `meeting_id` | chaîne | Identifiant de l'événement |
| `meeting_name` | chaîne | Nom de l'événement |
| `meeting_technical_name` | chaîne ou `null` | Nom technique de l'événement |
| `meeting_type` | chaîne | `default`, `call`, `video` ou `other` |
| `status` | chaîne | Statut du rendez-vous |
| `date` | chaîne | Date et heure de début, au format ISO 8601 avec décalage horaire |
| `end_date` | chaîne | Date et heure de fin, même format |
| `consultants` | tableau | Conseillers affectés, chacun avec `name`, `email` et `external_id` |
| `customer_firstname` | chaîne | Prénom saisi dans le formulaire |
| `customer_lastname` | chaîne | Nom saisi dans le formulaire |
| `customer_email` | chaîne | Adresse e-mail saisie dans le formulaire |
| `customer_phone_number` | chaîne | Numéro de téléphone saisi dans le formulaire |
| `other_form_values` | objet | Les autres réponses au formulaire, plus `createdAt` et `updatedAt` |
| `agency_name` | chaîne ou `null` | Nom de l'agence |
| `agency_id` | entier ou `null` | Identifiant Apenday de l'agence |
| `agency_external_id` | chaîne ou `null` | Identifiant de l'agence dans votre système |
| `agency_crm_id` | chaîne ou `null` | Identifiant de l'agence dans votre CRM |
| `satisfaction_score` | entier ou `null` | Note de l'enquête de satisfaction |
| `satisfaction_comment` | chaîne ou `null` | Commentaire de l'enquête de satisfaction |
| `utm_campain` | chaîne ou `null` | Paramètre UTM de campagne |
| `utm_source` | chaîne ou `null` | Paramètre UTM de source |
| `utm_medium` | chaîne ou `null` | Paramètre UTM de support |
| `tags` | tableau | Libellés des tags posés sur le rendez-vous |

## Le bloc front_actions

Ce bloc rassemble les URLs des pages publiques du rendez-vous.

| Clé | Présente quand |
| --- | --- |
| `cancel` | Le rendez-vous est encore annulable |
| `update` | Le rendez-vous est encore modifiable |
| `survey` | Le rendez-vous peut être évalué |
| `download_ics` | Le rendez-vous est au statut `scheduled` |

Les clés présentes varient selon l'état du rendez-vous et le type d'événement. N'en considérez aucune comme garantie et testez sa présence avant de l'utiliser. Le bloc `front_actions` est entièrement absent de la réponse quand aucune action n'est disponible, ce qui est notamment le cas d'un rendez-vous passé : ne comptez pas non plus sur la présence de la clé elle-même.

## Consulter un rendez-vous

```
curl "https://app.apenday.com/api/public/appointments/IDENTIFIANT" 
  -H "X-AUTH-TOKEN: VOTRE_CLE_API" 
  -H "Accept: application/ld+json"
```

La réponse porte les mêmes champs qu'un élément de la collection.

## Annuler un rendez-vous

```
curl -X DELETE "https://app.apenday.com/api/public/appointments/IDENTIFIANT/cancel" 
  -H "X-AUTH-TOKEN: VOTRE_CLE_API" 
  -H "Accept: application/ld+json"
```

La réponse est un `204`, sans corps.

Un rendez-vous au statut `scheduled` s'annule jusqu'à son heure de fin. Au-delà, il ne s'annule plus : déclarez-le manqué ou clôturez-le.

L'annulation fait passer le rendez-vous au statut `cancelled_by_consultant`, et non `cancelled`, qui reste réservé aux annulations faites par le client depuis son lien de gestion. Elle déclenche les notifications d'annulation paramétrées sur l'événement, ainsi que l'événement webhook `meeting_cancelled_by_consultant`. Sur un rendez-vous de groupe, les rendez-vous individuels rattachés sont annulés dans le même mouvement. La souscription aux webhooks est décrite dans la page [Utiliser les webhooks Apenday](https://support.apenday.com/support/utiliser-les-webhook-apenday/).

Une clé générée par un conseiller annule uniquement les rendez-vous qui lui sont affectés, et seulement si le droit **Autoriser le conseiller à annuler ses rendez-vous** est activé dans **Paramètres > Espace client > Organisation > Droits** (voir [Affiner les droits utilisateurs](https://support.apenday.com/support/affiner-les-droits-utilisateurs/)). Sinon, la réponse est un `403`. Les clés générées par un responsable d'équipe ou un administrateur ne dépendent pas de ce droit.

## Clôturer un rendez-vous

```
curl -X PUT "https://app.apenday.com/api/public/appointments/IDENTIFIANT/terminate" 
  -H "X-AUTH-TOKEN: VOTRE_CLE_API" 
  -H "Accept: application/ld+json"
```

L'appel ne porte ni corps ni en-tête `Content-Type`. La réponse est un `200` qui porte le rendez-vous à jour, avec les mêmes champs qu'un élément de la collection.

Un rendez-vous au statut `scheduled` se clôture à partir de son heure de début. Il passe au statut `terminated`. La clôture déclenche les notifications paramétrées sur l'événement pour ce statut, ainsi que l'événement webhook `meeting_terminated`.

Aucun tag, commentaire ni motif n'est demandé, même quand l'événement rend un tag obligatoire à la clôture : cette obligation s'applique au conseiller qui clôture le rendez-vous dans Apenday, pas à l'API.

Une séance de groupe dont des participants restent à classer ne se clôture pas par l'API : ses participants se clôturent ou se déclarent manqués un par un, dans Apenday.

## Déclarer un rendez-vous manqué

```
curl -X PUT "https://app.apenday.com/api/public/appointments/IDENTIFIANT/miss" 
  -H "X-AUTH-TOKEN: VOTRE_CLE_API" 
  -H "Accept: application/ld+json"
```

Les règles sont celles de la clôture : appel sans corps, possible à partir de l'heure de début, réponse `200` avec le rendez-vous à jour, aucun tag ni motif demandé. Le rendez-vous passe au statut `missed`. L'appel déclenche les notifications paramétrées sur l'événement pour ce statut, ainsi que l'événement webhook `meeting_missed`.

Sur une séance de groupe, chaque participant encore au statut `scheduled` est aussi déclaré manqué.

## En cas de refus

Le motif d'un refus est dans le champ `hydra:description` de la réponse, repris dans `detail`, en anglais. Dans les messages ci-dessous, `{id}` est l'identifiant du rendez-vous.

| Code | Message | Que faire |
| --- | --- | --- |
| `400` | `The appointment is already cancelled: this status is final.` | Rien : le statut ne changera plus. Relisez le rendez-vous pour mettre votre système à jour |
| `400` | `The appointment is already terminated: this status is final.` | Idem |
| `400` | `The appointment is already declared missed: this status is final.` | Idem |
| `400` | `The appointment is over and can no longer be cancelled: declare it missed (PUT /api/public/appointments/{id}/miss) or terminated (PUT /api/public/appointments/{id}/terminate).` | Déclarer le rendez-vous manqué, ou le clôturer |
| `400` | `The appointment has not started yet: it can be terminated from its start time. To call it off, cancel it (DELETE /api/public/appointments/{id}/cancel).` | Attendre l'heure de début, ou annuler le rendez-vous |
| `400` | `The appointment has not started yet: it can be declared missed from its start time. To call it off, cancel it (DELETE /api/public/appointments/{id}/cancel).` | Attendre l'heure de début, ou annuler le rendez-vous |
| `400` | `The appointment is a group session: its attendees are terminated or declared missed one by one, in Apenday.` | Classer les participants dans Apenday |
| `403` | `The API key is not allowed to cancel this appointment.` | Annuler avec la clé d'un responsable d'équipe ou d'un administrateur, ou faire activer le droit décrit dans **Annuler un rendez-vous** |

## Points d'attention

- Un rendez-vous annulé, clôturé ou manqué ne change plus de statut. Si le refus indique le statut que vous vouliez poser, votre demande est déjà satisfaite.
- Un changement fait par l'API déclenche les mêmes envois qu'une action faite dans Apenday : notifications, webhooks et connecteurs CRM de l'espace client. Votre système peut donc recevoir le changement qu'il vient lui-même d'envoyer : ignorez un statut que vous connaissez déjà.
