---
title: "Change status; done with a note emails the client"
method: PATCH
path: "/v1/feedback/{requestId}"
tags: ["Feedback"]
---

# Change status; done with a note emails the client

`PATCH /v1/feedback/{requestId}`

## Request

- Base URL: `https://api.dropl.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.dropl.io/v1/feedback/{requestId}`
- Auth: HTTP bearer

Requires the `feedback:write` scope (reply to change requests and update their status).

## Path parameters

- `requestId` string, uuid, required

## Request body

- UpdateFeedbackRequest
  - `status` 'open' | 'in_progress' | 'done' | 'wont_do', required
  - `resolutionNote` string, nullable: Kept with done and wont_do; done emails it to the client.

## Response `200`

Success

- FeedbackRequestDetail: The summary plus where on the page, device context, attachments, and the thread.
  - `id` string, uuid, required
  - `number` integer, required: Per-site number, shown as #12.
  - `site` object, required
    - `id` string, uuid, required
    - `name` string, required
  - `type` 'comment' | 'text_change' | 'general', required
  - `imageAction` 'replace' | 'remove', nullable, required
  - `status` 'open' | 'in_progress' | 'done' | 'wont_do', required
  - `message` string, nullable, required
  - `pageUrl` string, uri, nullable, required
  - `pagePath` string, nullable, required
  - `pageTitle` string, nullable, required
  - `currentText` string, nullable, required: Text changes: the wording on the page now.
  - `requestedText` string, nullable, required: Text changes: the exact new wording.
  - `requester` FeedbackPerson, required
    - `userId` string, uuid, nullable, required
    - `name` string, required
    - `isTeam` boolean, required
  - `deviceType` 'mobile' | 'tablet' | 'desktop', nullable, required
  - `screenshot` FeedbackAttachment, required
    - `id` string, uuid, required
    - `purpose` 'screenshot' | 'attachment' | 'replacement', required
    - `status` 'processing' | 'ready' | 'failed', required
    - `previewUrl` string, uri, nullable, required
    - `largeUrl` string, uri, nullable, required: Temporary signed URL; fetch it to look at the photo.
    - `width` integer, nullable, required
    - `height` integer, nullable, required
    - `fileName` string, nullable, required
    - `createdAt` string, date-time, required
  - `replyCount` integer, required
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required
  - `lastActivityAt` string, date-time, required
  - `element` object, nullable, required: CSS selector, tag, nearby text, and position of the clicked element.
  - `context` object, nullable, required: Device, browser, viewport, and scroll position.
  - `resolutionNote` string, nullable, required
  - `resolvedAt` string, date-time, nullable, required
  - `attachments` FeedbackAttachment[], required
    - `id` string, uuid, required
    - `purpose` 'screenshot' | 'attachment' | 'replacement', required
    - `status` 'processing' | 'ready' | 'failed', required
    - `previewUrl` string, uri, nullable, required
    - `largeUrl` string, uri, nullable, required: Temporary signed URL; fetch it to look at the photo.
    - `width` integer, nullable, required
    - `height` integer, nullable, required
    - `fileName` string, nullable, required
    - `createdAt` string, date-time, required
  - `messages` FeedbackMessage[], required
    - `id` string, uuid, required
    - `kind` 'reply' | 'status', required
    - `author` FeedbackPerson, required
      - `userId` string, uuid, nullable, required
      - `name` string, required
      - `isTeam` boolean, required
    - `body` string, required
    - `statusFrom` 'open' | 'in_progress' | 'done' | 'wont_do', required
    - `statusTo` 'open' | 'in_progress' | 'done' | 'wont_do', required
    - `attachments` FeedbackAttachment[], required
      - `id` string, uuid, required
      - `purpose` 'screenshot' | 'attachment' | 'replacement', required
      - `status` 'processing' | 'ready' | 'failed', required
      - `previewUrl` string, uri, nullable, required
      - `largeUrl` string, uri, nullable, required: Temporary signed URL; fetch it to look at the photo.
      - `width` integer, nullable, required
      - `height` integer, nullable, required
      - `fileName` string, nullable, required
      - `createdAt` string, date-time, required
    - `createdAt` string, date-time, required
  - `allowedStatuses` FeedbackStatus[], required

## Other responses

- `400`: Validation failed
- `401`: `INVALID_API_KEY`: missing, invalid, expired, or revoked key
- `403`: `INSUFFICIENT_SCOPE` (names the missing scope), `SITE_RESTRICTED_KEY`, or a plan limit
- `404`: Not found, or outside the key's sites
- `429`: Rate limited

---

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