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

# Feedback Management

> User feedback and evaluation endpoints

## List All Feedbacks

<api method="GET" endpoint="/api/evaluations/feedbacks/all" />

Retrieve all feedback entries in the system. Admin only.

### Response

<ResponseField name="feedbacks" type="array">
  Array of all feedback objects

  <Expandable title="FeedbackResponse properties">
    <ResponseField name="id" type="string">
      Unique feedback identifier
    </ResponseField>

    <ResponseField name="user_id" type="string">
      ID of the user who created the feedback
    </ResponseField>

    <ResponseField name="data" type="object">
      Feedback data including model\_id, rating, sibling\_model\_ids, tags, etc.
    </ResponseField>

    <ResponseField name="created_at" type="integer">
      Unix timestamp of creation
    </ResponseField>

    <ResponseField name="updated_at" type="integer">
      Unix timestamp of last update
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://your-instance.com/api/evaluations/feedbacks/all" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY"
  ```

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

  response = requests.get(
      "https://your-instance.com/api/evaluations/feedbacks/all",
      headers={"Authorization": f"Bearer {api_key}"}
  )
  feedbacks = response.json()
  ```
</RequestExample>

***

## Get All Feedback IDs

<api method="GET" endpoint="/api/evaluations/feedbacks/all/ids" />

Retrieve only the IDs of all feedback entries. Admin only. Useful for batch operations or checking feedback existence.

### Response

<ResponseField name="ids" type="array">
  Array of feedback ID objects

  <Expandable title="FeedbackIdResponse properties">
    <ResponseField name="id" type="string">
      Unique feedback identifier
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://your-instance.com/api/evaluations/feedbacks/all/ids" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  [
    {"id": "feedback-uuid-1"},
    {"id": "feedback-uuid-2"},
    {"id": "feedback-uuid-3"}
  ]
  ```
</ResponseExample>

***

## Delete All Feedbacks

<api method="DELETE" endpoint="/api/evaluations/feedbacks/all" />

Delete all feedback entries from the system. Admin only. This action cannot be undone.

### Response

<ResponseField name="success" type="boolean">
  Whether the deletion was successful
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X DELETE "https://your-instance.com/api/evaluations/feedbacks/all" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY"
  ```

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

  response = requests.delete(
      "https://your-instance.com/api/evaluations/feedbacks/all",
      headers={"Authorization": f"Bearer {api_key}"}
  )
  result = response.json()
  ```
</RequestExample>

***

## Export All Feedbacks

<api method="GET" endpoint="/api/evaluations/feedbacks/all/export" />

Export all feedback entries including full data models. Admin only. Returns the complete feedback objects for data export or backup.

### Response

<ResponseField name="feedbacks" type="array">
  Array of complete feedback model objects

  <Expandable title="FeedbackModel properties">
    <ResponseField name="id" type="string">
      Unique feedback identifier
    </ResponseField>

    <ResponseField name="user_id" type="string">
      ID of the user who created the feedback
    </ResponseField>

    <ResponseField name="type" type="string">
      Type of feedback (e.g., "rating", "comparison")
    </ResponseField>

    <ResponseField name="data" type="object">
      Complete feedback data payload
    </ResponseField>

    <ResponseField name="meta" type="object">
      Additional metadata
    </ResponseField>

    <ResponseField name="created_at" type="integer">
      Unix timestamp of creation
    </ResponseField>

    <ResponseField name="updated_at" type="integer">
      Unix timestamp of last update
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://your-instance.com/api/evaluations/feedbacks/all/export" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY" \
    -o feedbacks_export.json
  ```

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

  response = requests.get(
      "https://your-instance.com/api/evaluations/feedbacks/all/export",
      headers={"Authorization": f"Bearer {api_key}"}
  )

  with open('feedbacks_export.json', 'w') as f:
      json.dump(response.json(), f, indent=2)
  ```
</RequestExample>

***

## Get User Feedbacks

<api method="GET" endpoint="/api/evaluations/feedbacks/user" />

Retrieve all feedback entries created by the authenticated user.

### Response

<ResponseField name="feedbacks" type="array">
  Array of user's feedback objects

  <Expandable title="FeedbackUserResponse properties">
    <ResponseField name="id" type="string">
      Unique feedback identifier
    </ResponseField>

    <ResponseField name="data" type="object">
      Feedback data
    </ResponseField>

    <ResponseField name="created_at" type="integer">
      Unix timestamp of creation
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://your-instance.com/api/evaluations/feedbacks/user" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY"
  ```

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

  response = requests.get(
      "https://your-instance.com/api/evaluations/feedbacks/user",
      headers={"Authorization": f"Bearer {api_key}"}
  )
  my_feedbacks = response.json()
  ```
</RequestExample>

***

## Delete User Feedbacks

<api method="DELETE" endpoint="/api/evaluations/feedbacks" />

Delete all feedback entries created by the authenticated user.

### Response

<ResponseField name="success" type="boolean">
  Whether the deletion was successful
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X DELETE "https://your-instance.com/api/evaluations/feedbacks" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY"
  ```
</RequestExample>

***

## List Feedbacks (Paginated)

<api method="GET" endpoint="/api/evaluations/feedbacks/list" />

Retrieve a paginated list of feedback entries with sorting options. Admin only.

### Query Parameters

<ParamField query="order_by" type="string" optional>
  Field to order results by (e.g., "created\_at", "updated\_at")
</ParamField>

<ParamField query="direction" type="string" optional>
  Sort direction: "asc" or "desc"
</ParamField>

<ParamField query="page" type="integer" default="1">
  Page number (1-indexed, minimum: 1)
</ParamField>

### Response

<ResponseField name="items" type="array">
  Array of feedback entries for the current page (30 items per page)
</ResponseField>

<ResponseField name="total" type="integer">
  Total number of feedback entries
</ResponseField>

<ResponseField name="page" type="integer">
  Current page number
</ResponseField>

<ResponseField name="pages" type="integer">
  Total number of pages
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://your-instance.com/api/evaluations/feedbacks/list?page=1&order_by=created_at&direction=desc" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY"
  ```

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

  response = requests.get(
      "https://your-instance.com/api/evaluations/feedbacks/list",
      params={
          "page": 1,
          "order_by": "created_at",
          "direction": "desc"
      },
      headers={"Authorization": f"Bearer {api_key}"}
  )
  feedback_list = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "items": [
      {
        "id": "feedback-uuid-1",
        "user_id": "user-123",
        "data": {
          "model_id": "gpt-4",
          "rating": "1",
          "sibling_model_ids": ["claude-3"],
          "tags": ["coding", "helpful"]
        },
        "created_at": 1709395200,
        "updated_at": 1709395200
      }
    ],
    "total": 150,
    "page": 1,
    "pages": 5
  }
  ```
</ResponseExample>

***

## Create Feedback

<api method="POST" endpoint="/api/evaluations/feedback" />

Create a new feedback entry for model evaluation.

### Request Body

<ParamField body="type" type="string" optional>
  Type of feedback (e.g., "rating", "comparison")
</ParamField>

<ParamField body="data" type="object" required>
  Feedback data payload

  <Expandable title="Common data properties">
    <ParamField body="model_id" type="string">
      ID of the model being evaluated
    </ParamField>

    <ParamField body="rating" type="string">
      Rating value: "1" (positive/win) or "-1" (negative/loss)
    </ParamField>

    <ParamField body="sibling_model_ids" type="array">
      Array of model IDs that were compared against
    </ParamField>

    <ParamField body="tags" type="array">
      Array of tags describing the conversation topic (e.g., \["coding", "debugging"])
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="meta" type="object" optional>
  Additional metadata
</ParamField>

### Response

<ResponseField name="id" type="string">
  Unique identifier for the created feedback
</ResponseField>

<ResponseField name="user_id" type="string">
  ID of the user who created the feedback
</ResponseField>

<ResponseField name="type" type="string">
  Type of feedback
</ResponseField>

<ResponseField name="data" type="object">
  Feedback data
</ResponseField>

<ResponseField name="meta" type="object">
  Metadata
</ResponseField>

<ResponseField name="created_at" type="integer">
  Unix timestamp of creation
</ResponseField>

<ResponseField name="updated_at" type="integer">
  Unix timestamp of last update
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://your-instance.com/api/evaluations/feedback" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "comparison",
      "data": {
        "model_id": "gpt-4",
        "rating": "1",
        "sibling_model_ids": ["claude-3", "llama-3"],
        "tags": ["coding", "python", "helpful"]
      },
      "meta": {
        "context": "code generation task"
      }
    }'
  ```

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

  response = requests.post(
      "https://your-instance.com/api/evaluations/feedback",
      headers={"Authorization": f"Bearer {api_key}"},
      json={
          "type": "comparison",
          "data": {
              "model_id": "gpt-4",
              "rating": "1",
              "sibling_model_ids": ["claude-3", "llama-3"],
              "tags": ["coding", "python", "helpful"]
          },
          "meta": {
              "context": "code generation task"
          }
      }
  )
  feedback = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "id": "feedback-uuid-new",
    "user_id": "user-123",
    "type": "comparison",
    "data": {
      "model_id": "gpt-4",
      "rating": "1",
      "sibling_model_ids": ["claude-3", "llama-3"],
      "tags": ["coding", "python", "helpful"]
    },
    "meta": {
      "context": "code generation task"
    },
    "created_at": 1709395200,
    "updated_at": 1709395200
  }
  ```
</ResponseExample>

***

## Get Feedback by ID

<api method="GET" endpoint="/api/evaluations/feedback/{id}" />

Retrieve a specific feedback entry by ID. Users can only access their own feedback unless they are admins.

### Path Parameters

<ParamField path="id" type="string" required>
  Unique feedback identifier
</ParamField>

### Response

<ResponseField name="id" type="string">
  Unique feedback identifier
</ResponseField>

<ResponseField name="user_id" type="string">
  ID of the user who created the feedback
</ResponseField>

<ResponseField name="type" type="string">
  Type of feedback
</ResponseField>

<ResponseField name="data" type="object">
  Feedback data
</ResponseField>

<ResponseField name="meta" type="object">
  Metadata
</ResponseField>

<ResponseField name="created_at" type="integer">
  Unix timestamp of creation
</ResponseField>

<ResponseField name="updated_at" type="integer">
  Unix timestamp of last update
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://your-instance.com/api/evaluations/feedback/feedback-uuid-1" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY"
  ```

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

  feedback_id = "feedback-uuid-1"
  response = requests.get(
      f"https://your-instance.com/api/evaluations/feedback/{feedback_id}",
      headers={"Authorization": f"Bearer {api_key}"}
  )
  feedback = response.json()
  ```
</RequestExample>

***

## Update Feedback by ID

<api method="POST" endpoint="/api/evaluations/feedback/{id}" />

Update an existing feedback entry. Users can only update their own feedback unless they are admins.

### Path Parameters

<ParamField path="id" type="string" required>
  Unique feedback identifier
</ParamField>

### Request Body

<ParamField body="type" type="string" optional>
  Type of feedback
</ParamField>

<ParamField body="data" type="object" required>
  Updated feedback data payload
</ParamField>

<ParamField body="meta" type="object" optional>
  Updated metadata
</ParamField>

### Response

Returns the updated feedback object with the same structure as the create endpoint.

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://your-instance.com/api/evaluations/feedback/feedback-uuid-1" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "data": {
        "model_id": "gpt-4",
        "rating": "1",
        "sibling_model_ids": ["claude-3"],
        "tags": ["coding", "python", "helpful", "clear"]
      }
    }'
  ```

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

  feedback_id = "feedback-uuid-1"
  response = requests.post(
      f"https://your-instance.com/api/evaluations/feedback/{feedback_id}",
      headers={"Authorization": f"Bearer {api_key}"},
      json={
          "data": {
              "model_id": "gpt-4",
              "rating": "1",
              "sibling_model_ids": ["claude-3"],
              "tags": ["coding", "python", "helpful", "clear"]
          }
      }
  )
  updated_feedback = response.json()
  ```
</RequestExample>

***

## Delete Feedback by ID

<api method="DELETE" endpoint="/api/evaluations/feedback/{id}" />

Delete a specific feedback entry. Users can only delete their own feedback unless they are admins.

### Path Parameters

<ParamField path="id" type="string" required>
  Unique feedback identifier
</ParamField>

### Response

<ResponseField name="success" type="boolean">
  Whether the deletion was successful
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X DELETE "https://your-instance.com/api/evaluations/feedback/feedback-uuid-1" \
    -H "Authorization: Bearer $OPENWEBUI_API_KEY"
  ```

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

  feedback_id = "feedback-uuid-1"
  response = requests.delete(
      f"https://your-instance.com/api/evaluations/feedback/{feedback_id}",
      headers={"Authorization": f"Bearer {api_key}"}
  )
  result = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  true
  ```
</ResponseExample>
