Axsync API v2

Webhooks

Subscriptions that deliver events to your HTTPS endpoint. Deliveries are signed and retried with exponential backoff.

The webhook object

FieldTypeDescription
idstringUnique identifier, prefixed with wh_.
url requiredstringHTTPS endpoint.
events requiredstring[]Subscribed event types.
secretstringSigning secret (shown once).
activebooleanWhether deliveries are sent.
created_attimestampCreation time, RFC 3339 in UTC.

Example

{
  "id": "wh_8f3k2Q9xLm",
  "url": "https://hooks.example.com/axsync",
  "events": [
    "note.created",
    "note.updated"
  ],
  "secret": "whsec_9d2b…",
  "active": true,
  "created_at": "2026-09-14T08:21:07Z"
}

GET /webhooks

List webhooks. Returns a paginated list of webhooks.

Required scope: webhooks:read

Query parameters

FieldTypeDescription
limitintegerPage size, 1–100. Default 25.
cursorstringCursor from the previous page.
sortstringField to sort by, prefix - for descending.
filterstringFilter expression, see Filtering and sorting.

Request

curl -X GET "https://api.axnode.net/v2/webhooks" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/webhooks', {
  method: 'GET',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.get(
    'https://api.axnode.net/v2/webhooks',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "data": [
    {
      "id": "wh_8f3k2Q9xLm",
      "url": "https://hooks.example.com/axsync",
      "events": [
        "note.created",
        "note.updated"
      ],
      "secret": "whsec_9d2b…",
      "active": true,
      "created_at": "2026-09-14T08:21:07Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

POST /webhooks

Create a webhook. Creates a webhook.

Required scope: webhooks:write

Body parameters

FieldTypeDescription
url requiredstringHTTPS endpoint.
events requiredstring[]Subscribed event types.
secretstringSigning secret (shown once).
activebooleanWhether deliveries are sent.

Request

curl -X POST "https://api.axnode.net/v2/webhooks" \
  -H "Authorization: Bearer $AXSYNC_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]}'
const res = await fetch('https://api.axnode.net/v2/webhooks', {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]})
});
const data = await res.json();
import requests

res = requests.post(
    'https://api.axnode.net/v2/webhooks',
    headers={'Authorization': f'Bearer {token}'}, json={"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]},
)
data = res.json()

Response 201

{
  "id": "wh_8f3k2Q9xLm",
  "url": "https://hooks.example.com/axsync",
  "events": [
    "note.created",
    "note.updated"
  ],
  "secret": "whsec_9d2b…",
  "active": true,
  "created_at": "2026-09-14T08:21:07Z"
}

GET /webhooks/{id}

Retrieve a webhook. Retrieves a webhook by its identifier.

Required scope: webhooks:read

Request

curl -X GET "https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm', {
  method: 'GET',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.get(
    'https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "id": "wh_8f3k2Q9xLm",
  "url": "https://hooks.example.com/axsync",
  "events": [
    "note.created",
    "note.updated"
  ],
  "secret": "whsec_9d2b…",
  "active": true,
  "created_at": "2026-09-14T08:21:07Z"
}

PATCH /webhooks/{id}

Update a webhook. Updates fields of a webhook. Only supplied fields change.

Required scope: webhooks:write

Body parameters

FieldTypeDescription
url requiredstringHTTPS endpoint.
events requiredstring[]Subscribed event types.
secretstringSigning secret (shown once).
activebooleanWhether deliveries are sent.

Request

curl -X PATCH "https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm" \
  -H "Authorization: Bearer $AXSYNC_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]}'
const res = await fetch('https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm', {
  method: 'PATCH',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]})
});
const data = await res.json();
import requests

res = requests.patch(
    'https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm',
    headers={'Authorization': f'Bearer {token}'}, json={"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]},
)
data = res.json()

Response 200

{
  "id": "wh_8f3k2Q9xLm",
  "url": "https://hooks.example.com/axsync",
  "events": [
    "note.created",
    "note.updated"
  ],
  "secret": "whsec_9d2b…",
  "active": true,
  "created_at": "2026-09-14T08:21:07Z"
}

DELETE /webhooks/{id}

Delete a webhook. Permanently deletes a webhook. This cannot be undone.

Required scope: webhooks:write

Request

curl -X DELETE "https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.delete(
    'https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "deleted": true,
  "id": "wh_8f3k2Q9xLm"
}

POST /webhooks/{id}/test

Send a test event. Delivers a sample `ping` event to the endpoint.

Required scope: webhooks:write

Body parameters

FieldTypeDescription
url requiredstringHTTPS endpoint.
events requiredstring[]Subscribed event types.
secretstringSigning secret (shown once).
activebooleanWhether deliveries are sent.

Request

curl -X POST "https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm/test" \
  -H "Authorization: Bearer $AXSYNC_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]}'
const res = await fetch('https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm/test', {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]})
});
const data = await res.json();
import requests

res = requests.post(
    'https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm/test',
    headers={'Authorization': f'Bearer {token}'}, json={"url": "https://hooks.example.com/axsync", "events": ["note.created", "note.updated"]},
)
data = res.json()

Response 200

{
  "id": "wh_8f3k2Q9xLm",
  "url": "https://hooks.example.com/axsync",
  "events": [
    "note.created",
    "note.updated"
  ],
  "secret": "whsec_9d2b…",
  "active": true,
  "created_at": "2026-09-14T08:21:07Z"
}

GET /webhooks/{id}/deliveries

List deliveries. Recent delivery attempts with status codes and latency.

Required scope: webhooks:read

Request

curl -X GET "https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm/deliveries" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm/deliveries', {
  method: 'GET',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.get(
    'https://api.axnode.net/v2/webhooks/wh_8f3k2Q9xLm/deliveries',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "data": [
    {
      "id": "wh_8f3k2Q9xLm",
      "url": "https://hooks.example.com/axsync",
      "events": [
        "note.created",
        "note.updated"
      ],
      "secret": "whsec_9d2b…",
      "active": true,
      "created_at": "2026-09-14T08:21:07Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}