# Webhooks

Verwenden Sie Webhooks, um Aufgaben- und Abrechnungsereignisse ohne Abfrage zu empfangen. Tripo sendet JSON-Nutzlasten an Ihren HTTPS-Endpunkt, wenn abonnierte Ereignisse auftreten.

## Einrichtung

1. Öffnen Sie Einstellungen und dann Webhooks.
2. Fügen Sie einen HTTPS-Endpunkt hinzu, z. B. `https://api.yourapp.com/tripo-webhook`.
3. Wählen Sie die Veranstaltungstypen aus, die Sie erhalten möchten.
4. Speichern Sie den Endpunkt.
5. Kopieren Sie das Signaturgeheimnis und bewahren Sie es sicher auf. Es wird nur einmal angezeigt.

## Ereignistypen

| Veranstaltung | Beschreibung |
| --- | --- |
| `task.completed` | Eine Aufgabe wurde erfolgreich abgeschlossen. |
| `task.failed` | Eine Aufgabe ist fehlgeschlagen oder wurde abgebrochen. |
| `balance.low` | Der Kontostand ist unter den konfigurierten Schwellenwert für die Kreditwarnung gefallen. |

## Anforderungsheader

| Kopfzeile | Beschreibung |
| --- | --- |
| `Tripo-Webhook-Id` | Webhook Endpunkt ID. |
| `Tripo-Webhook-Delivery` | Einmalige Lieferung ID. Verwenden Sie es für Idempotenz. |
| `Tripo-Webhook-Event` | Ereignistyp, z. B. `task.completed`. |
| `Tripo-Webhook-Signature` | HMAC-SHA256-Signatur über `{timestamp}.{raw_body}`. |
| `Content-Type` | Immer `application/json`. |

## Überprüfung

1. Analysieren Sie `t` und `v1` von `Tripo-Webhook-Signature`.
2. Berechnen Sie HMAC-SHA256 mit dem Signaturgeheimnis über `t + "." + rawBody`.
3. Vergleichen Sie den berechneten Hex-Digest mit `v1` mithilfe eines Zeitkonstantenvergleichs.
4. Lehnen Sie optional Zeitstempel ab, die älter als etwa fünf Minuten sind.

## Best Practices

- Geben Sie schnell eine `2xx`-Antwort zurück und verarbeiten Sie dann schwere Aufgaben asynchron.
- Überprüfen Sie jede Nutzlast, bevor Sie den Anwendungsstatus ändern.
- Deduplizieren Sie Ereignisse mit `Tripo-Webhook-Delivery`.
- Verwenden Sie `balance.low`, um Benutzer zu benachrichtigen, bevor die Aufgabenerstellung aufgrund unzureichender Credits fehlschlägt.
