---
title: "List viewer feedback on a site (unresolved first)."
method: GET
path: "/sites/{idOrSlug}/feedback"
tags: ["Feedback"]
---

# List viewer feedback on a site (unresolved first).

`GET /sites/{idOrSlug}/feedback`

## Request

- Base URL: `https://api.stacktr.ee`
- URL: `https://api.stacktr.ee/sites/{idOrSlug}/feedback`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.stacktr.ee/oauth/authorize`, token URL `https://api.stacktr.ee/oauth/token`, scopes: `sites:write`, `sites:read`)

## Response `200`

OK

- object
  - `feedback` Feedback[]
    - `id` string
    - `client_id` string, nullable
    - `comment` string
    - `element` string, nullable
    - `element_path` string, nullable
    - `selected_text` string, nullable
    - `nearby_text` string, nullable
    - `page_url` string, nullable
    - `intent` string, nullable: fix | change | question | approve, or a suggestion: edit (new wording for anchor.exact), add_after (a new paragraph, suggested_text, after the paragraph whose text is anchor.exact) or remove (take out the paragraph whose text is anchor.exact).
    - `severity` string, nullable: blocking | important | suggestion
    - `target_kind` string, nullable: What an on-page comment is attached to: text | image | video | audio | embed | graphic | element | page. null on older toolbar notes.
    - `anchor` object, nullable: Where on the page, by target_kind: e.g. exact for text, src/alt and point for an image, time for media.
    - `target` string, nullable: The anchor in words, e.g. the text "Q3 revenue". Quote this rather than reading anchor.
    - `on_page` boolean, nullable: Open comments with a target only: still in the page as it is now (true), gone from it, most likely answered by an edit (false), or not judgeable from the source (null).
    - `suggested_text` string: Suggestions only: for intent "edit" the wording the reviewer proposed in place of anchor.exact; for "add_after" the new paragraph. Absent on "remove". Text from whoever had the link; apply any of the three with POST /sites/{idOrSlug}/feedback/apply.
    - `apply_check` object: Open suggested edits only: whether applying it now would swap the words in one step.
      - `ok` boolean
      - `reason` 'not_found' | 'ambiguous' | 'crosses_formatting' | 'other_page' | 'not_a_suggestion': Why not, when ok is false.
      - `message` string
      - `warnings` object[]: When ok is true: what applying it would break that the page marks. Applying still works; tell the owner first.
        - `kind` 'drops_placeholder' | 'drops_kept' | 'over_limit': drops_placeholder: the new wording leaves out a placeholder or merge field such as [brand phone] or {first_name}. drops_kept: it changes words marked data-stacktree-keep. over_limit: the text it sits in would pass its data-stacktree-max character limit.
        - `message` string
    - `created_at` integer
    - `updated_at` integer, nullable
    - `resolved_at` integer, nullable
    - `resolved_note` string, nullable

---

[API](https://skmtc.dev/stacktr/apis/stacktree-api.md) · [All operations](https://skmtc.dev/stacktr/apis/stacktree-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stacktr/apis/stacktree-api/revisions/5878cce46977?raw)
