Webhooks
Subscribe to post lifecycle events via HTTPS webhooks with HMAC-signed payloads.
Webhooks let your application receive real-time notifications when a post
moves through the publishing pipeline — without polling GET /api/v1/posts.
Endpoints
| Method | Path | Tool / scope |
|---|---|---|
GET | /api/v1/webhooks | list_webhooks · posts:read |
POST | /api/v1/webhooks | register_webhook · posts:create |
DELETE | /api/v1/webhooks/{id} | delete_webhook · posts:create |
All endpoints require Authorization: Bearer ewasl_... and a Pro+ plan.
Events
| Event | Fires when |
|---|---|
post.published | Every platform succeeded. |
post.partially_published | At least one platform succeeded, at least one failed. |
post.failed | Every platform failed. |
post.scheduled | A new scheduled post is queued. |
Register
The URL must be HTTPS (HTTP endpoints are rejected). You can subscribe to multiple events per endpoint, or register multiple endpoints.
Payload shape
Every event POST carries a JSON body:
For post.partially_published and post.failed, the results array
contains one entry per attempted platform with success: false and
error populated.
Verifying signatures
Each request includes an HMAC signature header:
Validate it before trusting the payload. (The shared secret is generated when you register the webhook and shown once in the response.)
Reject requests where Math.abs(now - parts.t) > 300 seconds to prevent
replay attacks.
Retries
If your endpoint returns a non-2xx response, eWasl retries with exponential
backoff: 1m, 5m, 30m, 2h, 12h. After the 5th failure, the webhook is
auto-disabled and failure_count is exposed via GET /api/v1/webhooks so
you can re-enable it once you've fixed the receiver.