# List feedback

`GET https://api.paxalabs.com/v1/feedback`

GET /v1/feedback lists the account's feedback reports, newest first, with each report's status and the team's note.

Pass `request_id` to find the reports that name a request before sending another about it. To page, pass the last report's `id` as `before` while `has_more` is true.

A written report is open until the team resolves it, and `resolution` carries the team's note when one was written. A report that carries only a rating stays open.

## Headers

- `authorization` (Bearer pxa_..., required): Authorization: Bearer pxa_... (recommended).
- `x-api-key` (pxa_..., optional): Alternative to the Authorization header. Ignored when Authorization is present.

See authentication at https://paxalabs.com/docs/authentication.

## Query

- `limit` (integer, optional, default 20, min 1, max 50): Reports per page.
- `before` (string, optional, pattern ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$): A report id from this account. The page starts with the next older report.
- `request_id` (string, optional, pattern ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$): Lists only reports naming this request id. Check it before sending a report again.

## Response

- `reports` (array of objects, required): The account's reports, newest first.
  - `reports[].id` (string, required): Report id. Pass it as before to list older reports.
  - `reports[].kind` ("model" or "api" or "platform" or "other", required): What the report is about.
  - `reports[].rating` ("good" or "bad" or null, required): The rating sent, or null.
  - `reports[].message` (string or null, required): The message as stored, or null.
  - `reports[].request_ids` (array of strings, required): The request ids sent, lowercased, deduplicated, and sorted.
  - `reports[].example` (object, required): The example as stored; every field is null without one.
    - `reports[].example.input` (string or null, required): The example input, or null.
    - `reports[].example.output` (string or null, required): The example output, or null.
    - `reports[].example.expected` (string or null, required): The expected output, or null.
  - `reports[].source` ("api" or "app", required): api: sent to this endpoint with a key. app: sent from the dashboard.
  - `reports[].status` ("open" or "resolved", required): A report is open until the team has acted on it, and resolved from then on. A report that carries only a rating feeds quality measures and stays open.
  - `reports[].resolution` (string or null, required): The team's note on the outcome; null when none was written.
  - `reports[].created_at` (string, required): Creation time, ISO 8601.
  - `reports[].resolved_at` (string or null, required): Resolution time, ISO 8601; null while open.
- `has_more` (boolean, required): Older reports exist. Pass the last report's id as before to fetch them.

## Errors

- `validation` (400): The request body, query, or headers failed validation against the endpoint schema, or broke a rule the endpoint's reference states. A field the schema refused adds two fields to the problem body. path names the first failing field by location and name in dot form, such as body.voice or headers.idempotency-key. A body that could not be read gives the path body alone. reason is one stable code from the validation reasons list.
- `unauthorized` (401): The request carried no API key, or the key is invalid or disabled.

## Example

curl:

```bash
curl "https://api.paxalabs.com/v1/feedback?request_id=7d9c2b7e-4a41-4c8e-9a35-1f26d8c04b7a" \
  -H "Authorization: Bearer $PAXA_API_KEY"
```

Response:

```json
{
  "reports": [
    {
      "id": "3f1c9a52-8e4b-4d7a-b6c0-2e5f9d8a1b47",
      "kind": "model",
      "rating": "bad",
      "message": "The reply to a customer dropped the polite register.",
      "request_ids": [
        "7d9c2b7e-4a41-4c8e-9a35-1f26d8c04b7a"
      ],
      "example": {
        "input": "Thank you for waiting. We will call you back today.",
        "output": "ขอบคุณที่รอ เดี๋ยวโทรกลับวันนี้",
        "expected": "ขอบคุณที่รอค่ะ ทางเราจะโทรกลับภายในวันนี้ค่ะ"
      },
      "source": "api",
      "status": "open",
      "resolution": null,
      "created_at": "2026-09-28T06:12:44.301Z",
      "resolved_at": null
    }
  ],
  "has_more": false
}
```
