Aether

Webhooks

Manage webhook endpoints and delivery logs. HMAC-signed events for post.published, post.failed, comment.created, and message.created.

GET
/webhooks

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key from your Aether dashboard

In: header

Response Body

application/json

application/json

curl -X GET "https://example.com/webhooks"
{  "success": true,  "data": [    {      "id": "wh_abc123",      "organizationId": "string",      "url": "http://example.com",      "events": [        "post.published"      ],      "description": "string",      "isActive": true,      "secretPrefix": "string",      "createdAt": "2019-08-24T14:15:22Z",      "updatedAt": "2019-08-24T14:15:22Z"    }  ]}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
POST
/webhooks

Creates a webhook subscription. Returns the webhook with a one-time plainSecret field for signing verification. Store this secret securely — it is never returned again. Verify incoming payloads: sha256=HMAC-SHA256(body, plainSecret) must match the X-Aether-Signature header.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key from your Aether dashboard

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/webhooks" \  -H "Content-Type: application/json" \  -d '{    "url": "https://yourapp.com/webhooks/aether",    "events": [      "post.published"    ]  }'
{  "success": true,  "data": {    "id": "wh_abc123",    "organizationId": "string",    "url": "http://example.com",    "events": [      "post.published"    ],    "description": "string",    "isActive": true,    "secretPrefix": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z",    "plainSecret": "string"  }}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
PATCH
/webhooks/{webhookId}

Update the URL, subscribed events, active status, or description.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key from your Aether dashboard

In: header

Path Parameters

webhookId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/webhooks/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "success": true,  "data": {    "id": "wh_abc123",    "organizationId": "string",    "url": "http://example.com",    "events": [      "post.published"    ],    "description": "string",    "isActive": true,    "secretPrefix": "string",    "createdAt": "2019-08-24T14:15:22Z",    "updatedAt": "2019-08-24T14:15:22Z"  }}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
DELETE
/webhooks/{webhookId}

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key from your Aether dashboard

In: header

Path Parameters

webhookId*string

Response Body

application/json

application/json

curl -X DELETE "https://example.com/webhooks/string"
Empty
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
GET
/webhooks/{webhookId}/deliveries

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key from your Aether dashboard

In: header

Path Parameters

webhookId*string

Query Parameters

page?integer
perPage?integer

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/webhooks/string/deliveries"
{  "success": true,  "data": {    "items": [      {        "id": "string",        "webhookId": "string",        "eventType": "post.published",        "httpStatus": 0,        "attemptNumber": 0,        "nextRetryAt": "2019-08-24T14:15:22Z",        "status": "pending",        "createdAt": "2019-08-24T14:15:22Z"      }    ],    "total": 0,    "hasMore": true  }}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}
{  "success": false,  "error": {    "code": "PROFILE_NOT_FOUND",    "message": "string",    "details": {}  }}

On this page