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

# Get job feedback

> 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`.



## OpenAPI

````yaml /openapi.json get /v1/jobs/{jobUuid}/feedback
openapi: 3.0.0
info:
  title: Clavata Public API v1
  description: Endpoints for creating and managing jobs via the Clavata Public API.
  version: 1.0.0
  contact:
    name: Clavata.ai
    url: https://clavata.ai
    email: support@clavata.ai
servers:
  - url: https://gateway.app.clavata.ai:8443
security:
  - Bearer_Token: []
tags:
  - name: Public API
    description: Endpoints for creating and managing jobs via the Clavata Public API.
paths:
  /v1/jobs/{jobUuid}/feedback:
    get:
      tags:
        - Job Feedback
      summary: Get job feedback
      description: >-
        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`.
      operationId: GatewayService_GetJobFeedback
      parameters:
        - name: jobUuid
          description: job_uuid is the unique identifier of the job
          in: path
          required: true
          schema:
            type: string
        - name: pageSize
          description: >-
            Pagination: maximum number of feedback entries to return. When unset
            or 0,

            defaults to 1000. Maximum 1000; larger values are treated as 1000.
            Negative

            values are rejected.
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: pageToken
          description: >-
            Pagination: the next_page_token from a previous response for the
            same

            job_uuid. Omit to fetch the first page.
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1GetJobFeedbackResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1GRPCErrorResponse'
        '499':
          description: Precheck Failures (Canceled)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1PrecheckFailureResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rpcStatus'
components:
  schemas:
    v1GetJobFeedbackResponse:
      type: object
      properties:
        annotations:
          type: array
          items:
            $ref: '#/components/schemas/v1JobAnnotation'
          description: >-
            The feedback recorded against the job, oldest first (by created_at,
            then id).

            Replacing feedback keeps the entry's original position.
        nextPageToken:
          type: string
          description: >-
            Set when more feedback remains after this page. Pass it as
            page_token to

            fetch the next page.
    rpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/protobufAny'
    v1GRPCErrorResponse:
      type: object
      properties:
        code:
          type: integer
          format: int32
          description: A [gRPC status code](https://grpc.io/docs/guides/status-codes/)
          title: gRPC Status Code
          readOnly: true
        message:
          type: string
          description: The human-readable error message
          title: Error Message
          readOnly: true
      title: A gRPC Status response
    v1PrecheckFailureResponse:
      type: object
      properties:
        code:
          type: integer
          format: int32
          description: A [gRPC status code](https://grpc.io/docs/guides/status-codes/)
          title: gRPC Status Code
          readOnly: true
        message:
          type: string
          description: The human-readable error message
          title: Error Message
          readOnly: true
        details:
          type: array
          items:
            $ref: '#/components/schemas/v1PrecheckFailure'
          description: An array of objects detailing why the content failed the prechecks.
    v1JobAnnotation:
      type: object
      properties:
        id:
          type: string
          title: The unique identifier of this feedback entry
        jobUuid:
          type: string
          title: The job the feedback is about
        jobResultId:
          type: string
          title: The result within the job that the feedback is about
        target:
          $ref: '#/components/schemas/v1JobFeedbackTarget'
        label:
          type: string
          description: >-
            The resolved label identity: the policy section name for policy
            jobs, or the

            label ID for label jobs.
        labelId:
          type: string
          description: The label ID. Only set for label jobs.
        labelVersionId:
          type: string
          description: >-
            The version of the label that was evaluated. Only set for label
            jobs.
        expectedOutcome:
          $ref: '#/components/schemas/v1EvaluationResult'
        actualOutcome:
          $ref: '#/components/schemas/v1EvaluationResult'
        comment:
          type: string
          title: Why the outcome was wrong
        createdAt:
          type: string
          format: date-time
          title: When the feedback was first submitted
        updatedAt:
          type: string
          format: date-time
          title: When the feedback was last replaced
      description: JobAnnotation is one stored piece of job feedback.
    protobufAny:
      type: object
      properties:
        '@type':
          type: string
      additionalProperties: {}
    v1PrecheckFailure:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/v1PrecheckFailureType'
        message:
          type: string
          title: An error message associated with the failure
        details:
          description: >-
            Details provides Additional about the failure. The shape will be
            different for each failure

            type.
        matchConfidence:
          $ref: '#/components/schemas/v1PrecheckMatchConfidence'
    v1JobFeedbackTarget:
      type: object
      properties:
        contentHash:
          type: string
          description: >-
            job_results.content_hash. Required when the job evaluated more than
            one

            content item. Omit for the single-result case (typical video job).
        occurrence:
          $ref: '#/components/schemas/JobFeedbackTargetOccurrence'
      description: >-
        JobFeedbackTarget names the content item — and optionally the video
        frame or

        transcript chunk within it — that a feedback item is about.
    v1EvaluationResult:
      type: string
      enum:
        - EVALUATION_RESULT_UNSPECIFIED
        - EVALUATION_RESULT_FLAGGED
        - EVALUATION_RESULT_NOT_FLAGGED
      default: EVALUATION_RESULT_UNSPECIFIED
      title: |-
        - EVALUATION_RESULT_FLAGGED: Label flagged this content
         - EVALUATION_RESULT_NOT_FLAGGED: Label did not flag this content
    v1PrecheckFailureType:
      type: string
      enum:
        - PRECHECK_FAILURE_TYPE_UNSPECIFIED
        - PRECHECK_FAILURE_TYPE_NCMEC
        - PRECHECK_FAILURE_TYPE_UNSUPPORTED_IMAGE_FORMAT
        - PRECHECK_FAILURE_TYPE_INVALID_IMAGE
      default: PRECHECK_FAILURE_TYPE_UNSPECIFIED
      description: |2-
         - PRECHECK_FAILURE_TYPE_UNSPECIFIED: The precheck failure type is not specified
         - PRECHECK_FAILURE_TYPE_NCMEC: The content has been identified as CSAM due to its hash matching an entry in the NCMEC database.
         - PRECHECK_FAILURE_TYPE_UNSUPPORTED_IMAGE_FORMAT: The image format is not supported.
         - PRECHECK_FAILURE_TYPE_INVALID_IMAGE: The provided image is invalid or corrupted.
    v1PrecheckMatchConfidence:
      type: string
      enum:
        - PRECHECK_MATCH_CONFIDENCE_UNSPECIFIED
        - PRECHECK_MATCH_CONFIDENCE_EXACT
        - PRECHECK_MATCH_CONFIDENCE_HIGH
        - PRECHECK_MATCH_CONFIDENCE_MEDIUM
        - PRECHECK_MATCH_CONFIDENCE_LOW
      default: PRECHECK_MATCH_CONFIDENCE_UNSPECIFIED
      description: |2-
         - PRECHECK_MATCH_CONFIDENCE_UNSPECIFIED: Default / legacy / non-CSAM. Not a customer-facing confidence tier.
         - PRECHECK_MATCH_CONFIDENCE_EXACT: Exact match (NCMEC direct md5/sha1 hash lookup). Highest confidence; customers may auto-enforce.
         - PRECHECK_MATCH_CONFIDENCE_HIGH: PhotoDNA perceptual match, closest distance band (near-duplicate).
         - PRECHECK_MATCH_CONFIDENCE_MEDIUM: PhotoDNA perceptual match, middle distance band (moderate similarity).
         - PRECHECK_MATCH_CONFIDENCE_LOW: PhotoDNA perceptual match, farthest distance band (loose similarity; review recommended).
    JobFeedbackTargetOccurrence:
      type: object
      properties:
        modality:
          $ref: '#/components/schemas/v1Modality'
        startMs:
          type: string
          format: int64
          description: |-
            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:
          type: string
          format: int64
          description: Set for ranged hits (audio chunks); unset for point-in-time frames.
      description: |-
        Occurrence is a video frame or transcript chunk, identified the way
        GetJobLabels reports it.
      required:
        - modality
        - startMs
    v1Modality:
      type: string
      enum:
        - MODALITY_UNSPECIFIED
        - MODALITY_VIDEO
        - MODALITY_AUDIO
        - MODALITY_IMAGE
        - MODALITY_TEXT
      default: MODALITY_UNSPECIFIED
  securitySchemes:
    Bearer_Token:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.