Ferndesk

Webhooks

Get a delivery

Returns a single delivery record for an endpoint, including status, response code, attempts, and retry schedule. Requires the webhooks:manage scope.

Required scope: webhooks:manage

GET /webhooks/{id}/deliveries/{deliveryId}

Get a delivery

curl --request GET \
  --url 'https://api.ferndesk.com/v1/webhooks/{ID}/deliveries/{DELIVERYID}' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
  "id": "<string>",
  "eventType": "<string>",
  "status": "pending",
  "responseStatus": 1,
  "attempts": 1,
  "error": "<string>",
  "createdAt": "<string>",
  "deliveredAt": "<string>",
  "nextRetryAt": "<string>"
}

Delivery record

Authorizations

  • Authorization string required header

    All requests require a Bearer token in the Authorization header. API keys are prefixed with fdsk_ and should be kept secret. You can generate and manage keys from the Developer settings page.

    Keys can be restricted to any subset of these scopes (each endpoint lists the scope it requires via x-required-scopes):

    • content:read: Read and search help center articles, collections, sections, and translations
    • content:write: Create and edit article drafts, users, tasks; move articles and collections
    • content:publish: Publish, unpublish, restore, and trash content (make changes live)
    • analytics:read: Read help center reporting, analytics, and article feedback
    • conversations:read: Read AI assistant conversations and transcripts
    • webhooks:manage: Create and manage outbound webhook subscriptions

    Granting content:write or content:publish implies content:read. Keys minted before scoping have null scopes = full access (legacy mode).

Path Parameters

  • deliveryId string required

    Delivery ID (whdl_...). Example: whdl_01JXY9AZK4KV

  • id string required

    Webhook endpoint ID (whep_...). Example: whep_01JXY9AZK4KV

Response

application/json
  • id string

    Delivery ID (whdl_...).

  • eventType string

    Event type delivered.

  • status string enum enum

    Delivery lifecycle status. Allowed values: pending, success, failed.

  • responseStatus integer | null

    HTTP status returned by the endpoint, or null before the first attempt / on a network error.

  • attempts integer

    Delivery attempts made so far.

  • error string | null

    Last error message, if the most recent attempt failed.

  • createdAt string

    ISO 8601 timestamp in UTC.

  • deliveredAt string | null

    When the delivery first succeeded, if it has.

  • nextRetryAt string | null

    When the next retry is scheduled, for pending failed deliveries.