# Webhooks

Utilisez Webhooks pour recevoir des événements de tâches et de facturation sans interrogation. Tripo envoie des charges utiles JSON à votre point de terminaison HTTPS lorsque des événements souscrits se produisent.

## Configuration

1. Ouvrez Paramètres, puis Webhooks.
2. Ajoutez un point de terminaison HTTPS, tel que `https://api.yourapp.com/tripo-webhook`.
3. Sélectionnez les types d'événements que vous souhaitez recevoir.
4. Enregistrez le point de terminaison.
5. Copiez le secret de signature et stockez-le en toute sécurité. Il n'est affiché qu'une seule fois.

## Types d'événements

| Événement | Descriptif |
| --- | --- |
| `task.completed` | Une tâche terminée avec succès. |
| `task.failed` | Une tâche a échoué ou a été annulée. |
| `balance.low` | Le solde du compte est tombé en dessous du seuil d'alerte de crédit configuré. |

## En-têtes de demande

| En-tête | Descriptif |
| --- | --- |
| `Tripo-Webhook-Id` | Point de terminaison Webhook ID. |
| `Tripo-Webhook-Delivery` | Livraison unique ID. Utilisez-le pour l'idempotence. |
| `Tripo-Webhook-Event` | Type d'événement, tel que `task.completed`. |
| `Tripo-Webhook-Signature` | Signature HMAC-SHA256 sur `{timestamp}.{raw_body}`. |
| `Content-Type` | Toujours `application/json`. |

## Vérification

1. Analysez `t` et `v1` à partir de `Tripo-Webhook-Signature`.
2. Calculez HMAC-SHA256 avec le secret de signature sur `t + "." + rawBody`.
3. Comparez le résumé hexadécimal calculé avec `v1` en utilisant une comparaison à temps constant.
4. Rejetez éventuellement les horodatages datant de plus de cinq minutes environ.

## Meilleures pratiques

- Renvoyez rapidement une réponse `2xx`, puis traitez les travaux lourds de manière asynchrone.
- Vérifiez chaque charge utile avant de modifier l’état de l’application.
- Dédupliquez les événements à l’aide de `Tripo-Webhook-Delivery`.
- Utilisez `balance.low` pour alerter les utilisateurs avant que la création de tâches échoue en raison de crédits insuffisants.
