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

# Analyze Image (Forensics)

> Statelessly analyze a single image for AI generation and digital manipulation. Requires the **Fraud Detection** feature. Returns both independent verdicts with their own confidence scores, and — when the image is judged manipulated — the regions of the detected edits (normalized to `[0, 1]`).



## OpenAPI

````yaml post /forensics/analyze
openapi: 3.0.0
info:
  title: ValueChecker API
  description: The ValueChecker Application Programming Interface.
  version: 0.150.1
  x-logo:
    url: >-
      https://files.valuechecker.net/images/default-category-images/Value-Checker_top_bar_logo.png
    backgroundColor: '#FFFFFF'
    altText: ValueChecker logo
  contact:
    name: Contact
    url: https://www.valuechecker.net/contact/
    email: support@valuechecker.net
servers:
  - url: https://api.valuechecker.net/
    description: ValueChecker API URL.
security:
  - apiKey: []
tags:
  - name: default
externalDocs:
  description: PDF Documentation (official)
  url: https://www.valuechecker.net/docs/api/pdf
paths:
  /forensics/analyze:
    post:
      tags:
        - default
      summary: Analyze Image (Forensics)
      description: >-
        Statelessly analyze a single image for AI generation and digital
        manipulation. Requires the **Fraud Detection** feature. Returns both
        independent verdicts with their own confidence scores, and — when the
        image is judged manipulated — the regions of the detected edits
        (normalized to `[0, 1]`).
      parameters:
        - $ref: '#/components/parameters/client_id'
        - $ref: '#/components/parameters/session-id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - image
              properties:
                image:
                  type: string
                  minLength: 1
                  description: >-
                    The image to analyze: a publicly reachable URL or a
                    base64-encoded image string.
            example:
              image: https://img.valuechecker.net/attachments/receipt_front.jpg
      responses:
        '200':
          description: >-
            OK - Returns the forensics verdicts for the image. All fields are
            `null` when the analysis could not be produced.
          content:
            application/json:
              schema:
                type: object
                properties:
                  is_ai_generated:
                    type: boolean
                    nullable: true
                    description: Whether the image was judged AI-generated.
                  is_digitally_manipulated:
                    type: boolean
                    nullable: true
                    description: Whether the image was judged digitally manipulated.
                  ai_generated_confidence:
                    type: number
                    nullable: true
                    description: Confidence (0-1) of the AI-generated verdict.
                  manipulation_confidence:
                    type: number
                    nullable: true
                    description: Confidence (0-1) of the manipulation verdict.
                  confidence:
                    type: number
                    nullable: true
                    description: >-
                      The higher of the two confidences, for consumers that
                      expect one overall score.
                  analysis:
                    type: string
                    nullable: true
                    description: Free-text explanation of the verdicts.
                  detect_edits:
                    type: object
                    nullable: true
                    description: >-
                      Present only when the image is manipulated and the
                      edit-detection call succeeded. `regions` may be empty when
                      the manipulation is not localized. Box coordinates are
                      normalized to `[0, 1]`.
                    properties:
                      regions:
                        type: array
                        items:
                          type: object
                          properties:
                            x_min:
                              type: number
                            y_min:
                              type: number
                            x_max:
                              type: number
                            y_max:
                              type: number
              example:
                is_ai_generated: false
                is_digitally_manipulated: true
                ai_generated_confidence: 0.08
                manipulation_confidence: 0.91
                confidence: 0.91
                analysis: >-
                  The price region shows resampling artefacts inconsistent with
                  the surrounding pixels.
                detect_edits:
                  regions:
                    - x_min: 0.31
                      y_min: 0.44
                      x_max: 0.52
                      y_max: 0.55
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  title:
                    type: string
                  description:
                    type: string
              example:
                title: Invalid analyze payload.
                description: 'image: Field required'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
components:
  parameters:
    client_id:
      name: client_id
      in: query
      schema:
        type: integer
      example: '10'
      description: >-
        The client ID for the request. It's required if you have access to
        multiple clients with your API key. Otherwise, it's optional.
    session-id:
      name: session-id
      in: query
      schema:
        type: string
      example: a1b2c3d4e5f6g7h8i9j0
      description: Optional session identifier of the user.
  responses:
    '401':
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              event_code:
                type: string
              event_dict:
                type: object
                properties:
                  event_severity:
                    type: string
                  title:
                    type: string
                  description:
                    type: string
          example:
            error: Invalid Authorization header
            event_code: ERIT00
            event_dict:
              event_severity: ERROR
              title: Invalid Authorization header
              description: Please provide the right authorization token
    '403':
      description: Forbidden
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              event_code:
                type: string
              event_dict:
                type: object
                properties:
                  event_severity:
                    type: string
                  title:
                    type: string
                  description:
                    type: string
          example:
            error: Forbidden
            event_code: ERIT02
            event_dict:
              event_severity: ERROR
              title: Forbidden
              description: Access denied
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Note! Prefix your <api-key> with `apiKey `. Note the space after "apiKey
        ".

````