---
title: "Get Feedback Detail"
method: GET
path: "/admin/feedbacks/{feedback_id}"
tags: ["Feedback"]
---

# Get Feedback Detail

`GET /admin/feedbacks/{feedback_id}`

Get detailed feedback information

## Path parameters

- `feedback_id` string, required

## Response `200`

Successful Response

- FeedbackDetailResponse
  - `id` string, required
  - `user_id` string, required
  - `user_exists` boolean, required
  - `user_email` string, required
  - `user_name` string, required
  - `user_role` string, required
  - `user_country` string, nullable, required
  - `user_grade` string, nullable, required
  - `classes` object[], required
  - `school_name` string, nullable, required
  - `feedback` string, required
  - `image_urls` string[], required
  - `status` 'new' | 'in-progress' | 'done', required
  - `timestamp` string, date-time, required
  - `last_status_changed_by` string, nullable, required
  - `last_status_changed_by_name` string, nullable, required
  - `status_changed_at` string, date-time, nullable, required
  - `replies` object[], required
  - `user_feedback_history` object[], required
  - `context` EnvironmentContext — Where the report was written, on what, and from which build. Every field is optional. This is diagnostic garnish attached to something a user wrote, and a client that sends one field in a shape the server does not expect must not cost that user their message; the read side already has to render a report that carries no context at all, since every feedback written before this existed has none.
    - `url` string, nullable
    - `route` string, nullable
    - `captured_at` string, date-time, nullable
    - `timezone` string, nullable
    - `locale` string, nullable
    - `platform` 'web_desktop' | 'web_mobile' | 'pwa_standalone' | 'ios_native' | 'android_native', nullable
    - `user_agent` string, nullable
    - `app_version` string, nullable
    - `native_build_version` string, nullable
    - `ota_bundle_version` string, nullable
    - `ota_active` boolean, nullable
    - `viewport_width` integer, nullable
    - `viewport_height` integer, nullable
    - `document_width` integer, nullable
    - `document_height` integer, nullable
    - `scroll_x` integer, nullable
    - `scroll_y` integer, nullable
    - `device_pixel_ratio` number, nullable
    - `is_mobile` boolean, nullable
    - `prefers_dark` boolean, nullable
    - `online` boolean, nullable
    - `connection_type` string, nullable
    - `page_load_ms` integer, nullable
    - `time_on_route_ms` integer, nullable
  - `diagnostics` SessionDiagnostics — What happened in the session, and what the investigator can replay. This is the half that carries student data, and the half that expires.
    - `console` ConsoleEntry[]
      - `level` 'log' | 'info' | 'warn' | 'error' | 'debug', required
      - `message` string, required
      - `at` string, date-time, required
    - `network` NetworkEntry[]
      - `method` string, required
      - `url` string, required
      - `status` integer, nullable
      - `duration_ms` integer, nullable
      - `at` string, date-time, required
      - `response_body` string, nullable
    - `route_history` RouteVisit[]
      - `route` string, required
      - `at` string, date-time, required
    - `click_trail` ClickEntry[]
      - `test_id` string, nullable
      - `tag` string, required
      - `label` string, nullable
      - `at` string, date-time, required
    - `posthog_replay_url` string, nullable
    - `posthog_distinct_id` string, nullable
    - `posthog_session_id` string, nullable
    - `sentry_replay_id` string, nullable
    - `sentry_last_event_id` string, nullable
  - `screenshot_url` string, nullable
  - `diagnostics_captured_at` string, date-time, nullable
  - `route_targets` RouteTarget[]
    - `kind` string, required
    - `id` string, required
    - `label` string, required
  - `owner` string, nullable
  - `owner_name` string, nullable
  - `owner_assigned_by_name` string, nullable
  - `owner_assigned_at` string, date-time, nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-05** `437cd8414e9e` — 10 info
  - added the optional property `context` to the response with the `200` status
  - added the optional property `diagnostics` to the response with the `200` status
  - added the optional property `diagnostics_captured_at` to the response with the `200` status
  - added the optional property `owner` to the response with the `200` status
  - …6 more

[Change history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/admin/feedbacks/:feedback_id/get.md)

---

[API](https://skmtc.dev/excellence-ai/apis/excellence-learning.md) · [All operations](https://skmtc.dev/excellence-ai/apis/excellence-learning/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/excellence-ai/excellence-learning/revisions/437cd8414e9e/schema)
