REST APIPOST

Webhooks

Recevez des notifications HTTP signées lorsque vos publications sont publiées, planifiées ou échouent

POSThttps://post.adaptlypost.com/post/api/v1/webhooks

Enregistrez un endpoint de webhook. Chaque webhook reçoit tous les événements de publication, signés avec son secret.

Cle API (jeton Bearer)

Paramètres du corps

ParametreTaperDescription
urlREQUISstringEndpoint http(s) accessible publiquement qui recevra les livraisons d’événements. Les hôtes privés sont rejetés. Max. 10 webhooks par espace de travail.

Événements

Chaque webhook enregistré reçoit tous les événements suivants. Le nom de l’événement est envoyé dans le payload et dans l’en-tête x-adaptly-event, afin que vous puissiez filtrer de votre côté.

ÉvénementDescription
post.publishedToutes les plateformes de la publication ont publié avec succès
post.partially_failedCertaines plateformes ont publié, d’autres ont échoué
post.failedLa publication a échoué sur toutes les plateformes
post.scheduledUne publication a été planifiée

Vérification des signatures

Chaque livraison est signée avec le secret de votre webhook (whsec_...). Calculez un HMAC-SHA256 sur "{timestamp}.{rawBody}" et comparez-le à l’en-tête x-adaptly-signature avant de faire confiance au payload.

Le secret n’est affiché qu’une seule fois

Le secret de signature (whsec_...) n’est renvoyé que dans la réponse à la requête de création — jamais dans les réponses de liste, de récupération ou de mise à jour. Conservez-le en lieu sûr. Si vous le perdez, supprimez le webhook et créez-en un nouveau.
Vérifier une livraison (Node.js)
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'];

Livraison et nouvelles tentatives

Votre endpoint doit répondre avec un statut 2xx en 10 secondes. Les livraisons échouées sont retentées jusqu’à 5 fois avec un backoff exponentiel. Les livraisons peuvent arriver plusieurs fois — rendez votre handler idempotent.

Désactivation automatique

Après 20 livraisons échouées consécutives, le webhook est automatiquement désactivé. Réactivez-le via PATCH { "active": true } ou depuis le tableau de bord.

Gestion des webhooks

Les webhooks se gèrent avec les endpoints suivants, avec la même authentification par clé API :

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 event

Vous pouvez aussi gérer les webhooks visuellement depuis le tableau de bord, sur la page des tokens API.

Spécification OpenAPI

Une spécification OpenAPI 3.0 lisible par machine de toute l’API REST — y compris les webhooks et le schéma du payload d’événements — est disponible publiquement. Importez-la dans Make, n8n ou tout outil compatible OpenAPI.

curl https://post.adaptlypost.com/post/api/v1/openapi.json
Enregistrer un webhook
curl --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"
}'
Envoyer un événement de test
curl --request POST \
  --url https://post.adaptlypost.com/post/api/v1/webhooks/<webhook-id>/test \
  --header 'Authorization: Bearer <api-key>'
Exemple de livraison d’événement
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"
        }
      ]
    }
  }
}
201
{
  "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
}