Ferndesk

Webhooks

Get a webhook endpoint

Returns a single endpoint plus its 20 most recent deliveries. Requires the webhooks:manage scope.

Required scope: webhooks:manage

GET /webhooks/{id}

Get a webhook endpoint

curl --request GET \
  --url 'https://api.ferndesk.com/v1/webhooks/{ID}' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
  "id": "<string>",
  "url": "<string>",
  "events": [
    "<string>"
  ],
  "enabled": true,
  "description": "<string>",
  "failureCount": 1,
  "lastSuccessAt": "<string>",
  "lastFailureAt": "<string>",
  "disabledAt": "<string>",
  "createdAt": "<string>",
  "updatedAt": "<string>",
  "deliveries": [
    {
      "id": "<string>",
      "eventType": "<string>",
      "status": "pending",
      "responseStatus": 1,
      "attempts": 1,
      "error": "<string>",
      "createdAt": "<string>",
      "deliveredAt": "<string>",
      "nextRetryAt": "<string>"
    }
  ]
}

Endpoint with recent deliveries

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

  • id string required

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

Response

application/json
  • id string

    Webhook endpoint ID (whep_...).

  • url string

    HTTPS URL that receives POSTed webhook payloads.

  • events[] string array

    Subscribed event types (or *).

  • enabled boolean

    Whether the endpoint currently receives deliveries. Endpoints auto-disable after sustained failures.

  • description string | null

    Optional human-readable label.

  • failureCount integer

    Consecutive delivery failures. Reset to 0 on any success or on re-enable.

  • lastSuccessAt string | null
  • lastFailureAt string | null
  • disabledAt string | null

    When the endpoint was auto-disabled, if applicable.

  • createdAt string

    ISO 8601 timestamp in UTC.

  • updatedAt string

    ISO 8601 timestamp in UTC.

  • deliveries[] object array

    Up to the 20 most recent deliveries for this endpoint, newest first. A single webhook delivery attempt record.

    + Show Child Attributes
    • 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.