> ## Documentation Index
> Fetch the complete documentation index at: https://docs.syntheo.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Référence des webhooks

> Événements de réunion signés que Syntheo envoie à un point de terminaison de votre choix.

Les webhooks permettent à Syntheo d'envoyer des événements de réunion vers votre propre service. Ils sont intégrés à l'application de bureau : c'est l'application elle-même qui envoie les requêtes, sans passer par aucun serveur intermédiaire. Configurez-les dans **Paramètres → Développeurs**, section « Webhooks ».

> [!WARNING]
>
> Les événements de réunion contiennent la note, les résumés, les participants, les actions à mener et le texte complet de la transcription. N'ajoutez qu'un point de terminaison de confiance, de préférence en HTTPS ou sur votre réseau privé.

Pour lire les données de réunion plutôt que de les recevoir, utilisez la [CLI](https://docs.syntheo.studio/fr/reference/cli.md) ou le [serveur MCP local](https://docs.syntheo.studio/fr/reference/mcp.md).

> [!NOTE]
>
> Cette page décrit les webhooks des Paramètres. L'étape d'automatisation « Envoyer vers une adresse (webhook) » est distincte : elle envoie le corps JSON que vous composez, sans signature ni nouvelle tentative. Voir [Automatisations](https://docs.syntheo.studio/fr/automations.md#envoyer-vers-une-adresse-webhook).

## Ajouter un point de terminaison

1. Ouvrez **Paramètres → Développeurs**.
2. Dans la section « Webhooks », saisissez une URL commençant par `http://` ou `https://`, puis cliquez sur « Ajoutez un webhook ».
3. Copiez le secret de signature (`whsec_...`) avec « Copier ».
4. Cliquez sur « Test » pour envoyer une livraison `webhook.test` et vérifier que votre service répond.

> [!NOTE]
>
> Le secret de signature n'est affiché qu'une seule fois. Conservez-le avant de quitter la page : Syntheo ne l'affiche plus ensuite.

Un nouveau point de terminaison reçoit « Tous les événements ». Chaque ligne affiche l'état de la dernière livraison. Utilisez « Pause » pour suspendre un point de terminaison sans le supprimer, puis « Activer » pour le reprendre. L'icône de corbeille le supprime.

Vous pouvez configurer au plus 64 points de terminaison.

## Événements

Syntheo envoie chaque événement en requête `POST` JSON, tant que l'application de bureau est ouverte.

| Événement | Déclenché quand |
| - | - |
| `meeting.completed` | Une capture se termine. |
| `note.enhanced` | Un résumé IA est généré pour une réunion. |
| `webhook.test` | Vous lancez une livraison de test. |

L'enveloppe JSON a cette forme :

```json theme={null}
{
  "id": "evt_...",
  "event": "note.enhanced",
  "created_at": "2026-07-28T09:00:00.000Z",
  "data": {
    "meeting": { "id": "...", "title": "...", "note": {...}, "summaries": [...], "participants": [...], "action_items": [...] },
    "transcript_text": "..."
  }
}
```

Pour `webhook.test`, `data` contient seulement un champ `message`.

## Livraison et nouvelles tentatives

Chaque requête expire après 10 secondes. En cas d'échec, Syntheo réessaie après 5 secondes, puis après 30 secondes. Une livraison `webhook.test` ne fait qu'une tentative.

Chaque requête contient ces en-têtes :

| En-tête | Contenu |
| - | - |
| `x-syntheo-event` | Nom de l'événement. |
| `x-syntheo-delivery` | Identifiant unique de la livraison (identique pour toutes ses tentatives). |
| `x-syntheo-timestamp` | Horodatage Unix, en secondes. |
| `x-syntheo-signature` | `sha256=<hex>` : HMAC-SHA256 du corps brut de la requête, calculé avec le secret `whsec_...` du point de terminaison. |

## Vérifier la signature

Calculez le HMAC sur le corps brut exact, avant tout parsing JSON :

```js theme={null}
import crypto from "node:crypto";

const expected = `sha256=${
  crypto.createHmac("sha256", secret).update(rawBody).digest("hex")
}`;
const signature = request.headers["x-syntheo-signature"];
const received = typeof signature === "string" ? signature : "";
const valid =
  Buffer.byteLength(received) === Buffer.byteLength(expected) &&
  crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));
```

Pour vous protéger du rejeu, rejetez les `created_at` trop anciens et enregistrez chaque `id` de charge utile afin de ne traiter qu'une fois une livraison réessayée.

## Limites

> [!WARNING]
>
> Les livraisons n'ont lieu que pendant que l'application de bureau est ouverte. Les événements survenus pendant qu'elle est fermée sont perdus : ils ne sont pas mis en file d'attente.

Syntheo envoie un événement à 64 points de terminaison au plus et exécute au plus 4 livraisons simultanées.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.