Ferndesk

Feedback

List article feedback

Cursor-paginated article feedback with filters (article_id, type, resolved). Requires the analytics:read scope.

Required scope: analytics:read

GET /feedback

List article feedback

curl --request GET \
  --url 'https://api.ferndesk.com/v1/feedback' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
  "results": [
    {
      "id": "<string>",
      "articleId": "<string>",
      "articleTitle": "<string>",
      "type": "positive",
      "feedback": "<string>",
      "email": "<string>",
      "resolved": true,
      "createdAt": "<string>",
      "user": {}
    }
  ],
  "has_more": true,
  "next_cursor": "<string>"
}

Feedback page

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).

Query Parameters

  • article_id string

    Filter by article.

  • page_size integer

    Number of items to return per page (1-100). Example: 20

  • resolved string enum

    Filter by resolved state.

  • start_cursor string

    Opaque pagination cursor. Pass the next_cursor from a previous response to fetch the next page. Example: eyJ2IjoxLCJrIjpbIjIwMjYtMDEtMDEiLCJhcnRfMSJdfQ

  • type string enum

    Filter by feedback type.

Response

application/json
  • results[] object array

    Items in this page. Article feedback entry.

    + Show Child Attributes
    • id string
    • articleId string | null
    • articleTitle string | null
    • type string enum enum

      Allowed values: positive, negative.

    • feedback string
    • email string | null
    • resolved boolean
    • createdAt string

      ISO 8601 timestamp in UTC.

    • user anyOf

      The help center user auto-matched from the submitter email (unique on email + helpdesk), or null when the submitter is anonymous or unrecognized.

      + Show Child Attributes
      • anyOf options 2 variants anyOf

        One or more options can apply.

        + Show Child Attributes
        • option 1 object
          + Show Child Attributes
          • id string

            Ferndesk help center user ID (hcusr_...).

          • name string | null

            Help center user display name.

          • email string (email)

            Help center user email address. Emails are stored lowercase.

        • option 2 null
  • has_more boolean

    Whether more items are available after this page.

  • next_cursor string | null

    Cursor to pass as start_cursor for the next page, or null on the last page.