Skip to content

Webhook endpoints API

Generated from api/openapi.public.yaml, the same spec the API serves. Try these operations in the API console; errors are Problem Details.

GET /api/v1/workspaces/{workspaceId}/webhook-endpoints

Operation id listWebhookEndpoints
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
Status Description Body
200 OK application/json: WebhookEndpointsOutputBody
default Error application/problem+json: Problem
Terminal window
curl -X GET "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY"

POST /api/v1/workspaces/{workspaceId}/webhook-endpoints

Every delivery is a POST with the event as JSON and a Nexafon-Signature header: t=,v1=<hex HMAC-SHA256 of “.” keyed with the secret>. Reject a timestamp more than 5 minutes old. The secret is in this response only. A dashboard session needs a sign-in within the last 10 minutes; otherwise it answers 401 reauthentication_required. An SDK session is refused with 403 dashboard_sign_in_required.

Operation id createWebhookEndpoint
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)

application/json: CreateWebhookEndpointInputBody

Field Type Required Description
description string (max length 200)
events array of string yes Event types from GET /webhook-event-types (min 1 items, max 64 items)
url string yes An https URL on the public internet (min length 8, max length 2048)
Status Description Body
201 Created application/json: WebhookSecretOutputBody
401 Unauthorized application/problem+json: Problem
409 Conflict application/problem+json: Problem
422 Unprocessable Entity application/problem+json: Problem
500 Internal Server Error application/problem+json: Problem
Terminal window
curl -X POST "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"events":["string"],"url":"string"}'

GET /api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}

Operation id getWebhookEndpoint
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
endpointId path string yes Webhook endpoint id (UUID)
Status Description Body
200 OK application/json: WebhookEndpointBody
404 Not Found application/problem+json: Problem
422 Unprocessable Entity application/problem+json: Problem
500 Internal Server Error application/problem+json: Problem
Terminal window
curl -X GET "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY"

Change a webhook endpoint, or turn it off or back on

Section titled “Change a webhook endpoint, or turn it off or back on”

PATCH /api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}

A dashboard session needs a sign-in within the last 10 minutes; otherwise it answers 401 reauthentication_required. An SDK session is refused with 403 dashboard_sign_in_required.

Operation id updateWebhookEndpoint
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
endpointId path string yes Webhook endpoint id (UUID)

application/json: UpdateWebhookEndpointInputBody

Field Type Required Description
description string (max length 200)
events array of string or null (min 1 items, max 64 items)
status "active" | "disabled" active turns a disabled endpoint back on
url string (min length 8, max length 2048)
Status Description Body
200 OK application/json: WebhookEndpointBody
401 Unauthorized application/problem+json: Problem
404 Not Found application/problem+json: Problem
422 Unprocessable Entity application/problem+json: Problem
500 Internal Server Error application/problem+json: Problem
Terminal window
curl -X PATCH "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{}'

Delete a webhook endpoint and its delivery log

Section titled “Delete a webhook endpoint and its delivery log”

DELETE /api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}

Operation id deleteWebhookEndpoint
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
endpointId path string yes Webhook endpoint id (UUID)
Status Description Body
204 No Content
404 Not Found application/problem+json: Problem
422 Unprocessable Entity application/problem+json: Problem
500 Internal Server Error application/problem+json: Problem
Terminal window
curl -X DELETE "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY"

List every delivery attempt to an endpoint

Section titled “List every delivery attempt to an endpoint”

GET /api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}/deliveries

Operation id listWebhookDeliveries
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
endpointId path string yes Webhook endpoint id (UUID)
eventId query string (uuid) Only this event’s attempts
status query "succeeded" | "failed"
cursor query string The next value of the previous page
limit query integer (int64)
Status Description Body
200 OK application/json: WebhookDeliveriesOutputBody
404 Not Found application/problem+json: Problem
422 Unprocessable Entity application/problem+json: Problem
500 Internal Server Error application/problem+json: Problem
Terminal window
curl -X GET "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}/deliveries" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY"

POST /api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}/events/{eventId}/replay

The event keeps its id. It is retried on the usual schedule; the delivery log shows every attempt.

Operation id replayWebhookEndpointEvent
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
endpointId path string yes Webhook endpoint id (UUID)
eventId path string yes Event id (UUID) from the delivery log
Status Description Body
202 Accepted
404 Not Found application/problem+json: Problem
409 Conflict application/problem+json: Problem
422 Unprocessable Entity application/problem+json: Problem
500 Internal Server Error application/problem+json: Problem
Terminal window
curl -X POST "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}/events/{eventId}/replay" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY"

Replace a webhook endpoint’s signing secret

Section titled “Replace a webhook endpoint’s signing secret”

POST /api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}/rotate-secret

Until previousSecretExpiresAt the Nexafon-Signature header carries a v1 signature for each secret, so the receiver can switch over without missing an event. The new secret is in this response only. A dashboard session needs a sign-in within the last 10 minutes; otherwise it answers 401 reauthentication_required. An SDK session is refused with 403 dashboard_sign_in_required.

Operation id rotateWebhookEndpointSecret
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
endpointId path string yes Webhook endpoint id (UUID)
keepPreviousHours query integer (int64) How long deliveries are also signed with the replaced secret
Status Description Body
200 OK application/json: WebhookSecretOutputBody
401 Unauthorized application/problem+json: Problem
404 Not Found application/problem+json: Problem
422 Unprocessable Entity application/problem+json: Problem
500 Internal Server Error application/problem+json: Problem
Terminal window
curl -X POST "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}/rotate-secret" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY"

POST /api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}/test

Works on a disabled endpoint too. It is tried once; the delivery log shows the result.

Operation id sendWebhookTest
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
endpointId path string yes Webhook endpoint id (UUID)
Status Description Body
202 Accepted application/json: WebhookTestOutputBody
404 Not Found application/problem+json: Problem
422 Unprocessable Entity application/problem+json: Problem
500 Internal Server Error application/problem+json: Problem
Terminal window
curl -X POST "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-endpoints/{endpointId}/test" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY"

List the events an endpoint can subscribe to

Section titled “List the events an endpoint can subscribe to”

GET /api/v1/workspaces/{workspaceId}/webhook-event-types

Operation id listWebhookEventTypes
Authentication A secret key (sk_live_… or sk_test_…), an SDK session token (sdk_…), or a secret partner key for one of the partner’s stores.
Permission (key scope) developers:manage
Plan feature workspace.core
Name In Type Required Description
workspaceId path string yes Workspace id (UUID)
Status Description Body
200 OK application/json: WebhookEventTypesOutputBody
default Error application/problem+json: Problem
Terminal window
curl -X GET "https://api.nexafone.so/api/v1/workspaces/{workspaceId}/webhook-event-types" \
-H "Authorization: Bearer $NEXAFON_SECRET_KEY"