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

# List Feedback (Public)

> List feedback with advanced filtering and sorting. Returns feedback from public boards.

## Authentication

This endpoint requires API key authentication via the `Authorization` header.

```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```

## Query Parameters

<ParamField query="sortBy" type="string" default="newest">
  Sorting method:

  * `newest` - Most recently updated (default)
  * `top` - Most votes overall
  * `trending` - Most activity in last 7 days (votes + comments)
</ParamField>

<ParamField query="status" type="string">
  Filter by status:

  * `in_review`
  * `in_progress`
  * `planned`
  * `completed`
  * `closed`
</ParamField>

<ParamField query="boardId" type="string">
  Filter by feedback board UUID
</ParamField>

<ParamField query="search" type="string">
  Search in feedback text (case-insensitive)
</ParamField>

<ParamField query="limit" type="number" default="20">
  Maximum number of results (1-100)
</ParamField>

<ParamField query="offset" type="number" default="0">
  Number of results to skip for pagination
</ParamField>

## Response

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

  <Expandable title="Feedback Object">
    <ResponseField name="id" type="string">Feedback ID</ResponseField>
    <ResponseField name="urlId" type="string">Short URL identifier</ResponseField>
    <ResponseField name="url" type="string">URL path</ResponseField>
    <ResponseField name="title" type="string">Feedback title</ResponseField>
    <ResponseField name="text" type="string">Feedback description</ResponseField>
    <ResponseField name="status" type="string">Current status</ResponseField>
    <ResponseField name="priority" type="string">Priority level</ResponseField>
    <ResponseField name="feedbackVotesCount" type="number">Vote count</ResponseField>
    <ResponseField name="feedbackCommentsCount" type="number">Comment count</ResponseField>
    <ResponseField name="createdAt" type="string">Creation timestamp</ResponseField>
    <ResponseField name="updatedAt" type="string">Last update timestamp</ResponseField>
    <ResponseField name="subscriber" type="object">Creator info</ResponseField>
    <ResponseField name="tags" type="array">Associated tags</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object">
  <Expandable title="properties">
    <ResponseField name="offset" type="number">Current offset</ResponseField>
    <ResponseField name="limit" type="number">Current limit</ResponseField>
    <ResponseField name="count" type="number">Total count matching filters</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL - Top Voted theme={null}
  curl --location --request POST 'https://api.userorbit.com/v1/public/feedbacks.list?sortBy=top&limit=10' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json'
  ```

  ```bash cURL - Search & Filter theme={null}
  curl --location --request POST 'https://api.userorbit.com/v1/public/feedbacks.list?search=dark%20mode&status=in_review' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    'https://api.userorbit.com/v1/public/feedbacks.list?sortBy=trending&limit=20',
    {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json'
      }
    }
  );

  const data = await response.json();
  ```

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

  response = requests.post(
      'https://api.userorbit.com/v1/public/feedbacks.list',
      params={
          'sortBy': 'top',
          'status': 'in_review',
          'limit': 20
      },
      headers={
          'Authorization': 'Bearer YOUR_API_KEY',
          'Content-Type': 'application/json'
      }
  )

  data = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "data": [
      {
        "id": "22222222-1234-1234-1234-123456789012",
        "urlId": "abc123def456",
        "url": "/add-dark-mode-support-abc123def456",
        "title": "Add dark mode support",
        "text": "It would be great to have a dark mode option.",
        "status": "in_review",
        "priority": "medium",
        "boardId": "33333333-1234-1234-1234-123456789012",
        "creatorId": "87654321-1234-1234-1234-123456789012",
        "teamId": "11111111-1234-1234-1234-123456789012",
        "feedbackVotesCount": 42,
        "feedbackCommentsCount": 8,
        "publishedAt": "2024-01-15T10:30:00Z",
        "createdAt": "2024-01-15T10:30:00Z",
        "updatedAt": "2024-01-16T14:20:00Z",
        "archivedAt": null,
        "lastModifiedById": null,
        "meta": {},
        "subscriber": {
          "id": "87654321-1234-1234-1234-123456789012",
          "name": "John Doe",
          "email": "john@example.com"
        },
        "lastModifiedBy": null,
        "tags": [
          {
            "id": "tag-uuid",
            "name": "UI/UX",
            "color": "#3B82F6"
          }
        ]
      }
    ],
    "pagination": {
      "offset": 0,
      "limit": 20,
      "count": 156
    }
  }
  ```
</ResponseExample>

## Sorting Algorithms

### Top

Sorts by total vote count (all-time). Use for "most popular" or "most requested" views.

### Trending

Sorts by recent activity (votes + comments in last 7 days). Use for "hot" or "trending now" views.

### Newest

Sorts by most recent update. Use for "latest feedback" or chronological views.

## Use Cases

* **Public Feedback Portal**: Display all feedback to users
* **Feature Voting Board**: Show top-voted features
* **Trending Ideas**: Highlight gaining traction
* **Search**: Find specific feedback
* **Board-Specific Views**: Filter by board for categorization

## Notes

* Only returns feedback from **public boards**
* Archived feedback is excluded
* Search is case-insensitive and searches the `text` field
* Pagination is recommended for large datasets
* Vote and comment counts are calculated in real-time
* Default sort is by `updatedAt DESC` (most recently updated)
