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

# Image analysis feedback

> Sends [feedback](/en/api-reference/concepts#feedback) on a classification returned by [`POST /analyze/v1/image`](/api-reference/analyze/analyze-an-image) that you judge incorrect for a given image, with the classifications you would have expected instead.

Send the exact analyze request body you originally submitted in `analyzeRequest` so Bodyguard can reproduce the analysis your feedback refers to.

Before diving in, we recommend reading the [image taxonomy](/en/documentation/taxonomy/image-classifications) to understand the classifications you can add or remove.




## OpenAPI

````yaml /openapi/feedback.openapi.yaml post /feedback/v1/image
openapi: 3.1.0
info:
  title: Bodyguard Feedback API
  version: 1.0.0
servers:
  - url: https://api.bodyguard.ai
security:
  - ApiKeyAuth: []
tags:
  - name: Feedback
    description: Classification feedback endpoints.
paths:
  /feedback/v1/image:
    post:
      tags:
        - Feedback
      summary: Image analysis feedback
      description: >
        Sends [feedback](/en/api-reference/concepts#feedback) on a
        classification returned by [`POST
        /analyze/v1/image`](/api-reference/analyze/analyze-an-image) that you
        judge incorrect for a given image, with the classifications you would
        have expected instead.


        Send the exact analyze request body you originally submitted in
        `analyzeRequest` so Bodyguard can reproduce the analysis your feedback
        refers to.


        Before diving in, we recommend reading the [image
        taxonomy](/en/documentation/taxonomy/image-classifications) to
        understand the classifications you can add or remove.
      operationId: bodyguard.feedback.v1.CreateImageFeedback
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/bodyguard.feedback.v1.CreateImageFeedbackRequest
            examples:
              falsePositive:
                summary: Remove a classification that does not apply
                value:
                  analyzeRequest:
                    channelId: __YOUR_CHANNEL_ID__
                    publishedAt: '2026-04-23T10:30:00.000Z'
                    imageUrl: https://cdn.example.com/uploads/photo.jpg
                  classificationsToRemove:
                    - PARTIAL_NUDITY
                  notes: Swimwear on a beach, not nudity.
                  confidence: VERY_HIGH
      responses:
        '200':
          description: Feedback recorded.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/bodyguard.feedback.v1.CreateImageFeedbackResponse
              examples:
                recorded:
                  summary: Feedback recorded
                  value:
                    id: 018f3b05-4d80-7b19-a6c2-71e4f0d8b331
components:
  schemas:
    bodyguard.feedback.v1.CreateImageFeedbackRequest:
      type: object
      required:
        - analyzeRequest
      description: >-
        Feedback on an image analysis. Provide at least one of
        `classificationsToAdd`, `classificationsToRemove`, or `notes` — a
        request with none of the three is considered invalid.
      properties:
        analyzeRequest:
          $ref: '#/components/schemas/bodyguard.analyze.v1.AnalyzeImageRequest'
          description: >-
            The analyze request body you originally sent to `POST
            /analyze/v1/image`. Send it unchanged so Bodyguard can identify the
            exact analysis your feedback refers to. It already carries the
            [channel](/en/api-reference/concepts#channel) the image belongs to.
            If you analyzed the image by inline bytes, send the same base64
            payload in `imageData`.
        classificationsToRemove:
          type: array
          description: >-
            Classifications Bodyguard returned that you judge do not apply to
            this content. See the [image
            taxonomy](/en/documentation/taxonomy/image-classifications) for the
            full list.
          items:
            type: string
          example:
            - PARTIAL_NUDITY
        classificationsToAdd:
          type: array
          description: >-
            Classifications you judge apply to this content but that Bodyguard
            did not return. See the [image
            taxonomy](/en/documentation/taxonomy/image-classifications) for the
            full list.
          items:
            type: string
        ocrIssue:
          type: boolean
          description: >-
            Whether there is an issue with OCR or not. Can be omitted if your
            feedback does not concern OCR at all
        notes:
          type: string
          description: >-
            Free-text comment explaining why you judge the content differently.
            Counts on its own: a feedback carrying only `notes`, with no
            classification change, is valid.
        confidence:
          $ref: '#/components/schemas/bodyguard.feedback.v1.Feedback.Confidence'
    bodyguard.feedback.v1.CreateImageFeedbackResponse:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          description: Bodyguard's identifier for this feedback.
    bodyguard.analyze.v1.AnalyzeImageRequest:
      type: object
      required:
        - channelId
      properties:
        channelId:
          type: string
          description: >-
            Identifier of the [channel](/en/api-reference/concepts#channel) the
            image belongs to. Provided by Bodyguard.
        publishedAt:
          type: string
          format: date-time
          description: >-
            [Publication
            date](/en/api-reference/concepts#publication-date-publishedat) of
            the image.
        imageUrl:
          type: string
          format: uri
          description: >-
            Public URL of the image that was analyzed. Only one of `imageUrl` or
            `imageData` can be provided.
        imageData:
          type: string
          format: byte
          description: >-
            Base64-encoded image bytes. Only one of `imageUrl` or `imageData`
            can be provided.
      oneOf:
        - required:
            - imageUrl
        - required:
            - imageData
    bodyguard.feedback.v1.Feedback.Confidence:
      type: string
      description: >-
        How confident you are about the classifications you submitted. Bodyguard
        uses it to prioritise which feedback to review first. You can base it on
        who flagged the content on your side — for example `LOW` or `MEDIUM` for
        a report from an end-user, `HIGH` or `VERY_HIGH` for a decision from
        your Trust & Safety team. Optional — omit it if you cannot qualify your
        confidence.
      enum:
        - LOW
        - MEDIUM
        - HIGH
        - VERY_HIGH
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      x-default: ApiKey <your-api-key>
      description: |
        API key authentication. Provide your key in the `Authorization`
        header with the `ApiKey` scheme:
        ```
        Authorization: ApiKey <your-api-key>
        ```

````