Nexa API · v1

Developers

Reference

Webhooks

Read your registered endpoints and what happened to each delivery.

The read side of webhooks. Registering an endpoint is done by a business owner in the Nexa portal — see the Webhooks guide for why — but an integrator can read the configuration and the delivery log without waiting on their customer, which is what you want at three in the afternoon when an event did not arrive.

The delivery log is the first place to look. It carries the exact payload we signed and the status code your server answered with, so “we never got it” and “we got it and threw a 500” are one request apart.

The webhook_endpoint object

iduuid
Opaque.
objectstring
Always "webhook_endpoint".
urlstring
Where we POST.
descriptionstring · nullable
The owner's label.
event_typesstring[]
What this endpoint is subscribed to.
enabledboolean
False until the first ping succeeds, and again if we auto-disable it.
disabled_reasonstring · nullable
Why we switched it off.
secret_last4string · nullable
The tail of the signing secret, so you can tell which one is configured. The secret itself is only shown in the portal.
consecutive_failuresinteger
Reset by any success. At 20 we disable the endpoint.
last_success_attimestamp · nullable
ISO 8601, UTC.
last_failure_attimestamp · nullable
ISO 8601, UTC.
{
  "id": "c1e935f2-4b8c-4a0e-92d7-f4b8c1e935f2",
  "object": "webhook_endpoint",
  "url": "https://erp.example.com/hooks/nexa",
  "description": "SAP inbound",
  "event_types": [
    "operation.created",
    "operation.completed"
  ],
  "enabled": true,
  "disabled_reason": null,
  "secret_last4": "1a2b",
  "consecutive_failures": 0,
  "last_success_at": "2026-09-23T10:04:02.000Z",
  "last_failure_at": null,
  "created_at": "2026-09-01T12:00:00.000Z",
  "updated_at": "2026-09-23T10:04:02.000Z"
}

Endpoints

List your registered endpoints

GET/webhooks
Scope webhooks:readPaginated

Accepts limit and cursor. See Pagination.

curl https://nexa.com.tn/api/v1/webhooks \
  -H "Authorization: Bearer $NEXA_API_KEY"

Response

GET /v1/webhooks
{
  "data": [
    {
      "id": "c1e935f2-4b8c-4a0e-92d7-f4b8c1e935f2",
      "object": "webhook_endpoint",
      "url": "https://erp.example.com/hooks/nexa",
      "description": "SAP inbound",
      "event_types": [
        "operation.created",
        "operation.completed"
      ],
      "enabled": true,
      "disabled_reason": null,
      "secret_last4": "1a2b",
      "consecutive_failures": 0,
      "last_success_at": "2026-09-23T10:04:02.000Z",
      "last_failure_at": null,
      "created_at": "2026-09-01T12:00:00.000Z",
      "updated_at": "2026-09-23T10:04:02.000Z"
    }
  ],
  "pagination": {
    "limit": 50,
    "has_more": true,
    "next_cursor": "eyJvIjo1MH0"
  }
}

List recent delivery attempts

GET/webhooks/{endpointId}/deliveries
Scope webhooks:readPaginated

Includes the exact payload we signed and what your server answered. Statuses are pending, delivering, succeeded, failed (will retry) and dead (gave up).

Path parameters

endpointIduuidrequired
The endpoint.

Accepts limit and cursor. See Pagination.

curl https://nexa.com.tn/api/v1/webhooks/c1e935f2-4b8c-4a0e-92d7-f4b8c1e935f2/deliveries \
  -H "Authorization: Bearer $NEXA_API_KEY"

Response

GET /v1/webhooks/{endpointId}/deliveries
{
  "data": [
    {
      "id": "935f2c1a-7e4c-481a-90e6-2d7f4b8c1e93",
      "object": "webhook_delivery",
      "endpoint_id": "c1e935f2-4b8c-4a0e-92d7-f4b8c1e935f2",
      "event_id": "evt_5f2c1a7e-9b3d-4c81-a0e6-2d7f4b8c1e93",
      "event_type": "operation.created",
      "status": "succeeded",
      "attempt_count": 1,
      "response_status": 200,
      "error": null,
      "next_attempt_at": "2026-09-23T10:04:00.000Z",
      "last_attempt_at": "2026-09-23T10:04:02.000Z",
      "delivered_at": "2026-09-23T10:04:02.000Z",
      "created_at": "2026-09-23T10:04:00.000Z",
      "payload": {
        "id": "evt_5f2c1a7e-9b3d-4c81-a0e6-2d7f4b8c1e93"
      }
    }
  ],
  "pagination": {
    "limit": 50,
    "has_more": true,
    "next_cursor": "eyJvIjo1MH0"
  }
}
On this page