> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usefini.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mark feedback resolved

> Mark a negatively rated conversation event as resolved or unresolved.

Updates the resolution flag on one event, then recalculates the parent conversation's `resolved` value from all negatively rated Fini responses in that conversation.

Use [Send conversation feedback](/en/api-reference/send-feedback-conversation) first to record a thumbs-down event, then call this endpoint when the issue behind that feedback has been handled.

## Headers

<ParamField header="Authorization" type="string" required>
  Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `write` scope.
</ParamField>

<ParamField header="Content-Type" type="string" required>
  Send `application/json`.
</ParamField>

## Path parameters

<ParamField path="id" type="string" required>
  Conversation ID containing the event.
</ParamField>

## Body parameters

<ParamField body="eventId" type="string" required>
  ID of the event to update. The event must belong to the conversation and workspace.
</ParamField>

<ParamField body="resolved" type="boolean" required>
  Whether the feedback on this event has been resolved.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://api-prod.usefini.com/v2/hc-interactions/0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8/feedback-resolved/public' \
    --header 'Authorization: Bearer fini_your_api_key' \
    --header 'Content-Type: application/json' \
    --data '{
      "eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
      "resolved": true
    }'
  ```

  ```python Python theme={null}
  import requests

  conversation_id = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8"
  response = requests.post(
      f"https://api-prod.usefini.com/v2/hc-interactions/{conversation_id}/feedback-resolved/public",
      headers={"Authorization": "Bearer fini_your_api_key"},
      json={
          "eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
          "resolved": True,
      },
  )
  result = response.json()
  ```

  ```javascript Node.js theme={null}
  const conversationId = "0b8626b0-4cc8-4a3d-8fc2-f18ad1a4a1a8";

  const response = await fetch(
    `https://api-prod.usefini.com/v2/hc-interactions/${conversationId}/feedback-resolved/public`,
    {
      method: "POST",
      headers: {
        Authorization: "Bearer fini_your_api_key",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        eventId: "f61a9a11-2c3b-4704-8f57-7078854d87cf",
        resolved: true,
      }),
    }
  );
  const result = await response.json();
  ```
</RequestExample>

## Response

<ResponseField name="success" type="boolean">
  `true` after the event and conversation resolution state have been updated.
</ResponseField>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "success": true
  }
  ```
</ResponseExample>

## Resolution recalculation

After the event is updated, Fini examines all Fini-authored events with `approved=false`:

* no negatively rated Fini events sets the conversation's `resolved` value to `null`
* all negatively rated Fini events resolved sets it to `true`
* any unresolved negatively rated Fini event sets it to `false`

## Errors

<AccordionGroup>
  <Accordion title="400 Bad Request" icon="circle-exclamation">
    The body fails validation. `eventId` must be a non-empty string, and `resolved` must be a boolean.
  </Accordion>

  <Accordion title="401 Unauthorized" icon="lock">
    The API key is missing, malformed, revoked, or invalid.
  </Accordion>

  <Accordion title="403 Forbidden" icon="shield-halved">
    The API key does not include the `write` scope required for this route.
  </Accordion>

  <Accordion title="406 Not Acceptable" icon="ban">
    The conversation or event is inaccessible, the conversation has no events, or the supplied event does not exist in the conversation.
  </Accordion>

  <Accordion title="500 Internal Server Error" icon="triangle-exclamation">
    Fini could not load or update the requested conversation event.
  </Accordion>
</AccordionGroup>
