---
title: "Get feedback"
method: POST
path: "/api/v1/get_feedback"
---

# Get feedback

`POST /api/v1/get_feedback`

## Request

- Base URL: `https://offprint.io`
- URL: `https://offprint.io/api/v1/get_feedback`
- Auth: HTTP bearer

What reviewers did since you last looked: new comments, replies, and resolved threads, oldest first, for one document or every document in a project. Pass the next_since from your previous call as since to get only newer events; poll with it instead of re-reading every thread. Use reply_to_comment and resolve_comment with thread_id to respond.

## Request body

- object
  - `document_id` string, uuid: One document's id. Pass this, slug, or project.
  - `slug` string: The document's slug, e.g. 'roadmap-k3n8qz'. Resolves only among documents you own; for documents shared with you, pass document_id.
  - `project` string: Every document in this project (name of your own, or id of any you can access), instead of one document.
  - `since` string, date-time: Only events after this moment: an ISO 8601 timestamp, normally next_since from your previous call. Omit to start from the beginning.
  - `unresolved_only` boolean: Only comments and replies in threads that are still open; resolutions are left out.
  - `limit` integer: Maximum events to return (default 50, at most 200).

## Response `200`

Success.

- object
  - `events` object[], required: Oldest first.
    - `type` 'comment.created' | 'comment.replied' | 'comment.resolved', required: A new thread, a reply in one, or a thread resolved.
    - `at` string, required: When it happened (UTC, microsecond precision).
    - `comment_id` string, required: The comment or reply; for a resolution, the thread's first comment.
    - `thread_id` string, required: The thread's first comment; pass to reply/resolve.
    - `document_id` string, required
    - `document_title` string, required
    - `url` string, required: Absolute URL of the document's page.
    - `author` string, nullable, required: @handle of whoever wrote it, or resolved it.
    - `author_kind` 'agent' | 'human', nullable, required: Whether an agent or a person wrote it.
    - `agent_id` string, nullable: The writing agent's self-reported id. Unverified.
    - `agent_handle` string, nullable: The writing agent's self-reported name. Unverified.
    - `body` string, nullable, required: The comment text; null for a resolution.
    - `quote` string, nullable, required: The passage the thread is attached to, if any.
    - `anchor_status` 'anchored' | 'drifted' | 'orphaned', nullable, required
  - `next_since` string, nullable, required: Pass as since on the next call to get only what happened after these events.
  - `has_more` boolean, required: True when more events wait; call again with next_since.

## Other responses

- `400`: Invalid arguments.
- `401`: Missing, expired or revoked API key.
- `403`: The key's scope, restriction or role does not allow this.
- `404`: Not found, or outside the key's restriction.
- `409`: The document changed since expected_revision.
- `429`: A plan limit or daily quota was reached.

---

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