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

# Add feedback note

> Save or clear a teammate feedback note on a conversation event.

Saves free-text feedback on one event, then updates the parent conversation's `hasFeedback` flag. Use this endpoint for qualitative notes that explain why a response was marked wrong or what should change.

To record the thumbs-up or thumbs-down value itself, use [Send conversation feedback](/en/api-reference/send-feedback-conversation).

## 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="feedback" type="string">
  Feedback note to store on the event. Send an empty string to clear the note.
</ParamField>

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

  ```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-note/public",
      headers={"Authorization": "Bearer fini_your_api_key"},
      json={
          "eventId": "f61a9a11-2c3b-4704-8f57-7078854d87cf",
          "feedback": "The answer missed the 30-day refund exception.",
      },
  )
  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-note/public`,
    {
      method: "POST",
      headers: {
        Authorization: "Bearer fini_your_api_key",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        eventId: "f61a9a11-2c3b-4704-8f57-7078854d87cf",
        feedback: "The answer missed the 30-day refund exception.",
      }),
    }
  );
  const result = await response.json();
  ```
</RequestExample>

## Response

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

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

## Feedback flag

When `feedback` is non-empty, Fini sets the conversation's `hasFeedback` flag to `true`. When `feedback` is empty, Fini clears this event's note and leaves `hasFeedback` true only if another event in the same conversation still has feedback.

## Errors

<AccordionGroup>
  <Accordion title="400 Bad Request" icon="circle-exclamation">
    The body fails validation. `eventId` must be a non-empty string, and `feedback`, when provided, must be a string.
  </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>
