Webhooks
Erhalte signierte HTTP-Benachrichtigungen, wenn deine Beiträge veröffentlicht, geplant werden oder fehlschlagen
https://post.adaptlypost.com/post/api/v1/webhooksRegistriere einen Webhook-Endpunkt. Jeder Webhook erhält alle Beitrags-Ereignisse, signiert mit seinem Secret.
Body-Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
urlERFORDERLICH | string | Öffentlich erreichbarer http(s)-Endpunkt, der Ereignis-Zustellungen erhält. Private Hosts werden abgelehnt. Max. 10 Webhooks pro Workspace. |
Ereignisse
Jeder registrierte Webhook erhält alle folgenden Ereignisse. Der Ereignisname wird im Payload und im x-adaptly-event-Header gesendet, sodass du auf deiner Seite filtern kannst.
| Ereignis | Beschreibung |
|---|---|
post.published | Alle Plattformen des Beitrags wurden erfolgreich veröffentlicht |
post.partially_failed | Einige Plattformen veröffentlicht, andere fehlgeschlagen |
post.failed | Veröffentlichung auf allen Plattformen fehlgeschlagen |
post.scheduled | Ein Beitrag wurde für später geplant |
Signaturen prüfen
Jede Zustellung ist mit deinem Webhook-Secret (whsec_...) signiert. Berechne ein HMAC-SHA256 über "{timestamp}.{rawBody}" und vergleiche es mit dem x-adaptly-signature-Header, bevor du dem Payload vertraust.
Das Secret wird nur einmal angezeigt
Das Signatur-Secret (whsec_...) wird nur in der Antwort auf die Erstellungsanfrage zurückgegeben — niemals in Listen-, Abruf- oder Aktualisierungsantworten. Bewahre es sicher auf. Wenn du es verlierst, lösche den Webhook und erstelle einen neuen.const crypto = require('crypto');
const expected =
'sha256=' +
crypto
.createHmac('sha256', webhookSecret)
.update(`${req.headers['x-adaptly-timestamp']}.${rawBody}`)
.digest('hex');
const isValid = expected === req.headers['x-adaptly-signature'];Zustellung und Wiederholungen
Dein Endpunkt muss innerhalb von 10 Sekunden mit 2xx antworten. Fehlgeschlagene Zustellungen werden bis zu 5-mal mit exponentiellem Backoff wiederholt. Zustellungen können mehrfach ankommen — mache deinen Handler idempotent.
Automatische Deaktivierung
Nach 20 aufeinanderfolgenden fehlgeschlagenen Zustellungen wird der Webhook automatisch deaktiviert. Reaktiviere ihn per PATCH { "active": true } oder über das Dashboard.Webhooks verwalten
Webhooks werden mit den folgenden Endpunkten verwaltet, mit derselben API-Key-Authentifizierung:
GET /api/v1/webhooks # list registered webhooks
GET /api/v1/webhooks/:id # get one webhook
PATCH /api/v1/webhooks/:id # update url or active
DELETE /api/v1/webhooks/:id # delete a webhook
POST /api/v1/webhooks/:id/test # send a signed webhook.test eventDu kannst Webhooks auch visuell im Dashboard auf der API-Tokens-Seite verwalten.
OpenAPI-Spezifikation
Eine maschinenlesbare OpenAPI-3.0-Spezifikation der gesamten REST-API — inklusive Webhooks und Ereignis-Payload-Schema — ist öffentlich verfügbar. Importiere sie in Make, n8n oder jedes OpenAPI-kompatible Tool.
curl https://post.adaptlypost.com/post/api/v1/openapi.jsoncurl --request POST \
--url https://post.adaptlypost.com/post/api/v1/webhooks \
--header 'Authorization: Bearer <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"url": "https://your-server.com/webhook"
}'curl --request POST \
--url https://post.adaptlypost.com/post/api/v1/webhooks/<webhook-id>/test \
--header 'Authorization: Bearer <api-key>'POST <your-url>
x-adaptly-event: post.published
x-adaptly-webhook-id: wh_abc123
x-adaptly-timestamp: 1784643600
x-adaptly-signature: sha256=3f5a...
{
"id": "deliver-webhook-...",
"event": "post.published",
"createdAt": "2026-07-21T14:20:00.000Z",
"data": {
"post": {
"id": "post_xyz789",
"status": "COMPLETED",
"platforms": [
{
"platform": "TWITTER",
"status": "PUBLISHED",
"platformPostId": "1234567890",
"publishedAt": "2026-07-21T14:19:58.000Z"
}
]
}
}
}{
"id": "wh_abc123",
"url": "https://your-server.com/webhook",
"active": true,
"secret": "whsec_c99807...",
"createdAt": "2026-07-21T14:00:00.000Z",
"updatedAt": "2026-07-21T14:00:00.000Z",
"lastSuccessAt": null,
"lastFailureAt": null,
"disabledAt": null
}