---
title: "Get job feedback"
method: GET
path: "/v1/jobs/{jobUuid}/feedback"
tags: ["Job Feedback"]
---

# Get job feedback

`GET /v1/jobs/{jobUuid}/feedback`

## Request

- Base URL: `https://gateway.app.clavata.ai:8443`
- URL: `https://gateway.app.clavata.ai:8443/v1/jobs/{jobUuid}/feedback`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clavata/apis/clavata-public-api-v1/docs/v1/jobs/:jobUuid/feedback/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieves the feedback recorded against a job, one entry per (content or video occurrence, label) pair that has been given feedback, oldest first (by when the feedback was first submitted, then ID). Replacing feedback keeps its original position. Omitting `page_size` uses the default of 1000. The maximum `page_size` is 1000. Negative `page_size` is rejected. When more feedback remains, `next_page_token` is set; pass it as `page_token` with the same job_uuid to fetch the next page. actual_outcome is the thresholded section or label result, not a per-frame occurrence score. Available to policy-first and label-first accounts; works on any job in the account, including jobs from `POST /v1/labels/evaluate`.

## Path parameters

- `jobUuid` string, required

## Query parameters

- `pageSize` integer
- `pageToken` string

## Response `200`

A successful response.

- V1GetJobFeedbackResponse
  - `annotations` V1JobAnnotation[]: The feedback recorded against the job, oldest first (by created_at, then id). Replacing feedback keeps the entry's original position.
    - `id` string
    - `jobUuid` string
    - `jobResultId` string
    - `target` V1JobFeedbackTarget: JobFeedbackTarget names the content item — and optionally the video frame or transcript chunk within it — that a feedback item is about.
      - `contentHash` string: job_results.content_hash. Required when the job evaluated more than one content item. Omit for the single-result case (typical video job).
      - `occurrence` JobFeedbackTargetOccurrence: Occurrence is a video frame or transcript chunk, identified the way GetJobLabels reports it.
        - `modality` 'MODALITY_UNSPECIFIED' | 'MODALITY_VIDEO' | 'MODALITY_AUDIO' | 'MODALITY_IMAGE' | 'MODALITY_TEXT', required
        - `startMs` string, int64, required: Milliseconds from the start of the media. Frames are point-in-time; chunks use the chunk's start bound. 0 is a valid start.
        - `endMs` string, int64: Set for ranged hits (audio chunks); unset for point-in-time frames.
    - `label` string: The resolved label identity: the policy section name for policy jobs, or the label ID for label jobs.
    - `labelId` string: The label ID. Only set for label jobs.
    - `labelVersionId` string: The version of the label that was evaluated. Only set for label jobs.
    - `expectedOutcome` 'EVALUATION_RESULT_UNSPECIFIED' | 'EVALUATION_RESULT_FLAGGED' | 'EVALUATION_RESULT_NOT_FLAGGED'
    - `actualOutcome` 'EVALUATION_RESULT_UNSPECIFIED' | 'EVALUATION_RESULT_FLAGGED' | 'EVALUATION_RESULT_NOT_FLAGGED'
    - `comment` string
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `nextPageToken` string: Set when more feedback remains after this page. Pass it as page_token to fetch the next page.

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests
- `499`: Precheck Failures (Canceled)
- `default`: An unexpected error response.

## Changes

- **2026-10-16** `d7a854b0070f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/clavata/apis/clavata-public-api-v1/changes/v1/jobs/:jobUuid/feedback/get.md)

---

[API](https://skmtc.dev/clavata/apis/clavata-public-api-v1.md) - [All operations](https://skmtc.dev/clavata/apis/clavata-public-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clavata/apis/clavata-public-api-v1/revisions/d7a854b0070f?raw)
