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

# Fetch BGV Report (JSON)

> Fetch the background verification report for a case as structured JSON instead of a PDF. Call this endpoint after submitting a candidate via `BGVSubmitViewV2` to check progress and view results using the `case_id` returned in `data.cases_created[].case_id`.

The report is available as soon as the case exists — check `data.status` to know whether results are still in progress or final.

## Overview

Fetch the background verification report for a BGV case as structured JSON instead of a PDF. Call this endpoint with the `case_id` returned by the [Submit Candidates for BGV (Bulk)](/api-reference/bgv/bgv-submit-v2) endpoint to check progress and read results directly in your own application.

***

## When to Call This Endpoint

```
POST /api/recruiter/v2/bgv-submit/
          │
          ▼
  cases_created[].case_id returned here
          │
          ▼
GET /api/recruiter/v2/report-json/?case_id=<case_id>
          │
          │  data.status == "in_progress"?
          ▼
   wait, then poll again
          │
          ▼
  data.status == "completed"
```

Unlike the [Download BGV Report](/api-reference/bgv/bgv-report-download) endpoint, this one can be called as soon as the case is created — you don't need to wait for completion. Check `data.status` on each call to know whether the case is still `in_progress`, under review (`in_audit`), or `completed`. Within a case, individual checks may also still show `result: "pending"` even after others have finished — don't treat a `200` response alone as a sign that verification is done.

Poll on a backoff interval (for example `30s → 60s → 5m`) rather than continuously. Avoid polling more than once every 15 seconds.

***

## Response Format

| Field          | Description                                             |
| -------------- | ------------------------------------------------------- |
| `reference_id` | Reference number for the case.                          |
| `generated_at` | Timestamp for this report snapshot.                     |
| `status`       | Case status: `in_progress`, `in_audit`, or `completed`. |
| `result`       | Overall result for the case (see below).                |
| `candidate`    | `{ name, photo }` for the candidate.                    |
| `summary`      | Count of checks by result.                              |
| `checks`       | List of requested checks with their individual results. |

### Result values

| Value               | Meaning                                                    |
| ------------------- | ---------------------------------------------------------- |
| `clear`             | Verified with no issues.                                   |
| `minor_discrepancy` | A small, non-blocking mismatch.                            |
| `discrepancy`       | A material mismatch requiring attention.                   |
| `unable_to_verify`  | The check could not reach a conclusion.                    |
| `not_available`     | Not enough information was available to perform the check. |
| `pending`           | The check has not finished yet.                            |

### Each item in `checks`

| Field          | Description                                                                                                     |
| -------------- | --------------------------------------------------------------------------------------------------------------- |
| `type`         | Check type, e.g. `identity_aadhaar`, `criminal`, `employment`.                                                  |
| `name`         | Display name, e.g. "Aadhaar Verification".                                                                      |
| `category`     | Display group, e.g. "Identity", "Criminal & Compliance".                                                        |
| `status`       | `in_progress` or `completed`.                                                                                   |
| `result`       | One of the result values above.                                                                                 |
| `completed_at` | When the check finished, or `null` if not yet.                                                                  |
| `fields`       | Verified details (name, DOB, masked ID number, etc.), where applicable.                                         |
| `documents`    | Document/report page image URLs, where applicable.                                                              |
| `remark`       | A short note about the outcome, where applicable.                                                               |
| `entries`      | Per-item results for multi-part checks (employment, reference, address, social/professional), where applicable. |

**Example response (completed, clear):**

```json theme={null}
{
  "status": "success",
  "code": 200,
  "message": "Report JSON fetched successfully.",
  "data": {
    "reference_id": "2605310236148021",
    "generated_at": "2026-06-15T10:30:00.123456+00:00",
    "status": "completed",
    "result": "clear",
    "candidate": {
      "name": "Vivek Patel",
      "photo": "https://storage.googleapis.com/konnectnxt/profile_pictures/abc.png"
    },
    "summary": {
      "total": 2,
      "clear": 2,
      "minor_discrepancy": 0,
      "discrepancy": 0,
      "unable_to_verify": 0,
      "not_available": 0,
      "pending": 0
    },
    "checks": [
      {
        "type": "criminal",
        "name": "Criminal Record Check",
        "category": "Criminal & Compliance",
        "status": "completed",
        "result": "clear",
        "completed_at": "13 May, 2026, 11:02",
        "documents": [
          "https://storage.googleapis.com/konnectnxt/criminal/page_1.png"
        ]
      },
      {
        "type": "identity_aadhaar",
        "name": "Aadhaar Verification",
        "category": "Identity",
        "status": "completed",
        "result": "clear",
        "completed_at": "13 May, 2026, 11:02",
        "fields": [
          { "label": "Name", "value": "Nallala Vivek" },
          { "label": "Date of Birth", "value": "08-01-2001" },
          { "label": "Gender", "value": "Male" },
          { "label": "Aadhaar Number", "value": "xxxxxxxx8300" }
        ]
      }
    ]
  },
  "errors": null
}
```

**Example response (still in progress):**

```json theme={null}
{
  "status": "success",
  "code": 200,
  "message": "Report JSON fetched successfully.",
  "data": {
    "reference_id": "2605310236148021",
    "generated_at": "2026-06-15T09:05:00.000000+00:00",
    "status": "in_progress",
    "result": "pending",
    "candidate": { "name": "Vivek Patel", "photo": "" },
    "summary": {
      "total": 2,
      "clear": 1,
      "minor_discrepancy": 0,
      "discrepancy": 0,
      "unable_to_verify": 0,
      "not_available": 0,
      "pending": 1
    },
    "checks": [
      {
        "type": "criminal",
        "name": "Criminal Record Check",
        "category": "Criminal & Compliance",
        "status": "in_progress",
        "result": "pending",
        "completed_at": null,
        "remark": "Criminal verification is still in progress."
      },
      {
        "type": "identity_aadhaar",
        "name": "Aadhaar Verification",
        "category": "Identity",
        "status": "completed",
        "result": "clear",
        "completed_at": "13 May, 2026, 11:02",
        "fields": [{ "label": "Name", "value": "Nallala Vivek" }]
      }
    ]
  },
  "errors": null
}
```


## OpenAPI

````yaml GET /recruiter/v2/report-json/
openapi: 3.0.0
info:
  title: KonnectNXT API Store
  description: >-
    A sample API that uses a plant store as an example to demonstrate features
    in the OpenAPI specification
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://bgv.konnectnxt.com/api
    description: Production
  - url: https://testbgv.konnectnxt.com/api
    description: QA
security:
  - bearerAuth: []
paths:
  /recruiter/v2/report-json/:
    get:
      tags:
        - BGV Report
      summary: Fetch the BGV report for a case as structured JSON.
      description: >-
        Fetch the background verification report for a case as structured JSON
        instead of a PDF. Call this endpoint after submitting a candidate via
        `BGVSubmitViewV2` to check progress and view results using the `case_id`
        returned in `data.cases_created[].case_id`.


        The report is available as soon as the case exists — check `data.status`
        to know whether results are still in progress or final.
      operationId: getBgvReportJson
      parameters:
        - name: case_id
          in: query
          required: true
          description: >-
            UUID of the case to fetch. Obtained from the `BGVSubmitViewV2`
            response (`data.cases_created[].case_id`).
          schema:
            type: string
            format: uuid
            example: 6bc26096-dfe5-4c44-937b-27063820dc28
      responses:
        '200':
          description: >-
            Report fetched successfully. Note: a `200` does not imply the
            verification is finished — inspect `data.status` and each check's
            `status`/`result`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportSuccessEnvelope'
              examples:
                completed_clear:
                  summary: Completed case, all checks clear
                  value:
                    status: success
                    code: 200
                    message: Report JSON fetched successfully.
                    data:
                      reference_id: '2605310236148021'
                      generated_at: '2026-06-15T10:30:00.123456+00:00'
                      status: completed
                      result: clear
                      candidate:
                        name: Vivek Patel
                        photo: >-
                          https://storage.googleapis.com/konnectnxt/profile_pictures/abc.png
                      summary:
                        total: 2
                        clear: 2
                        minor_discrepancy: 0
                        discrepancy: 0
                        unable_to_verify: 0
                        not_available: 0
                        pending: 0
                      checks:
                        - type: criminal
                          name: Criminal Record Check
                          category: Criminal & Compliance
                          status: completed
                          result: clear
                          completed_at: 13 May, 2026, 11:02
                          documents:
                            - >-
                              https://storage.googleapis.com/konnectnxt/criminal/page_1.png
                        - type: identity_aadhaar
                          name: Aadhaar Verification
                          category: Identity
                          status: completed
                          result: clear
                          completed_at: 13 May, 2026, 11:02
                          fields:
                            - label: Name
                              value: Nallala Vivek
                            - label: Date of Birth
                              value: 08-01-2001
                            - label: Gender
                              value: Male
                            - label: Aadhaar Number
                              value: xxxxxxxx8300
                    errors: null
                in_progress:
                  summary: Case still processing (poll again)
                  value:
                    status: success
                    code: 200
                    message: Report JSON fetched successfully.
                    data:
                      reference_id: '2605310236148021'
                      generated_at: '2026-06-15T09:05:00.000000+00:00'
                      status: in_progress
                      result: pending
                      candidate:
                        name: Vivek Patel
                        photo: ''
                      summary:
                        total: 2
                        clear: 1
                        minor_discrepancy: 0
                        discrepancy: 0
                        unable_to_verify: 0
                        not_available: 0
                        pending: 1
                      checks:
                        - type: criminal
                          name: Criminal Record Check
                          category: Criminal & Compliance
                          status: in_progress
                          result: pending
                          completed_at: null
                          remark: Criminal verification is still in progress.
                        - type: identity_aadhaar
                          name: Aadhaar Verification
                          category: Identity
                          status: completed
                          result: clear
                          completed_at: 13 May, 2026, 11:02
                          fields:
                            - label: Name
                              value: Nallala Vivek
                    errors: null
                with_discrepancy:
                  summary: Completed case with a discrepancy and a multi-part check
                  value:
                    status: success
                    code: 200
                    message: Report JSON fetched successfully.
                    data:
                      reference_id: '2605310236148021'
                      generated_at: '2026-06-15T12:00:00.000000+00:00'
                      status: completed
                      result: discrepancy
                      candidate:
                        name: Vivek Patel
                        photo: ''
                      summary:
                        total: 2
                        clear: 1
                        minor_discrepancy: 0
                        discrepancy: 1
                        unable_to_verify: 0
                        not_available: 0
                        pending: 0
                      checks:
                        - type: employment
                          name: Employment Verification
                          category: Employment
                          status: completed
                          result: discrepancy
                          completed_at: 14 May, 2026, 16:20
                          entries:
                            - company_name: Acme Corp
                              designation: Senior Engineer
                              result: discrepancy
                        - type: identity_pan
                          name: PAN Verification
                          category: Identity
                          status: completed
                          result: clear
                          completed_at: 14 May, 2026, 10:00
                          fields:
                            - label: Name on PAN
                              value: VIVEK PATEL
                    errors: null
        '400':
          description: Invalid or missing `case_id` (not a valid UUID).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              example:
                status: error
                code: 400
                message: Invalid case_id format.
                data: null
                errors: Invalid case_id format.
        '401':
          description: Missing or invalid Bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              example:
                status: error
                code: 401
                message: Bearer token is missing or invalid.
                data: null
                errors: Bearer token is missing or invalid.
        '403':
          description: The authenticated organization does not own this case.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              example:
                status: error
                code: 403
                message: You do not have access to this case.
                data: null
                errors: You do not have access to this case.
        '404':
          description: No case exists for the supplied `case_id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              example:
                status: error
                code: 404
                message: No record found for this case ID.
                data: null
                errors: No record found for this case ID.
        '500':
          description: >-
            Unexpected server error. The message is generic and never contains
            internal detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
              example:
                status: error
                code: 500
                message: >-
                  An unexpected error occurred. Please try again or contact
                  support.
                data: null
                errors: >-
                  An unexpected error occurred. Please try again or contact
                  support.
      security:
        - bearerAuth: []
components:
  schemas:
    ReportSuccessEnvelope:
      type: object
      description: Success response. The report is in `data`.
      required:
        - status
        - code
        - message
        - data
        - errors
      properties:
        status:
          type: string
          enum:
            - success
          example: success
        code:
          type: integer
          example: 200
        message:
          type: string
          example: Report JSON fetched successfully.
        data:
          $ref: '#/components/schemas/Report'
        errors:
          type: object
          nullable: true
          example: null
    ErrorEnvelope:
      type: object
      description: >-
        Error response. `data` is always null on error; `errors` holds the
        failure detail.
      required:
        - status
        - code
        - message
        - data
        - errors
      properties:
        status:
          type: string
          enum:
            - error
          example: error
        code:
          type: integer
          example: 400
        message:
          type: string
          example: Invalid case_id format.
        data:
          type: object
          nullable: true
          example: null
        errors:
          description: Either a string message or a structured object describing the error.
          oneOf:
            - type: string
            - type: object
          nullable: true
    Report:
      type: object
      description: The BGV report for one case.
      required:
        - reference_id
        - generated_at
        - status
        - result
        - candidate
        - summary
        - checks
      properties:
        reference_id:
          type: string
          description: >-
            Human-facing KonnectNXT reference number for the case (`kn_ref_no`).
            Stable for the life of the case.
          example: '2605310236148021'
        generated_at:
          type: string
          format: date-time
          description: >-
            ISO-8601 timestamp at which this report snapshot was generated.
            Changes on every call.
          example: '2026-06-15T10:30:00.123456+00:00'
        status:
          $ref: '#/components/schemas/CaseStatus'
        result:
          $ref: '#/components/schemas/Verdict'
          description: >-
            Overall result for the case, based on all of its checks. If checks
            disagree, the worst result wins, in this order: discrepancy >
            unable_to_verify > minor_discrepancy > not_available > clear. Shows
            `pending` only while every check is still pending.
        candidate:
          $ref: '#/components/schemas/Candidate'
        summary:
          $ref: '#/components/schemas/Summary'
        checks:
          type: array
          description: >-
            Flat list of all requested checks. Sorted by category, then name.
            Group by the `category` field for display.
          items:
            $ref: '#/components/schemas/Check'
    CaseStatus:
      type: string
      description: >-
        Lifecycle status of the case as a whole.

        - `in_progress`: one or more checks are still running.

        - `in_audit`: checks are done but the report is under KonnectNXT
        quality-control / action-required review.

        - `completed`: case finalised; all per-check verdicts are final.
      enum:
        - in_progress
        - in_audit
        - completed
      example: completed
    Verdict:
      type: string
      description: >-
        The verification result.

        - `clear`: verified with no issues.

        - `minor_discrepancy`: a small, typically non-blocking mismatch.

        - `discrepancy`: a material mismatch requiring attention.

        - `unable_to_verify`: the check could not reach a conclusion.

        - `not_available`: not enough information was available to perform the
        check.

        - `pending`: the check has not finished yet — poll again.
      enum:
        - clear
        - minor_discrepancy
        - discrepancy
        - unable_to_verify
        - not_available
        - pending
      example: clear
    Candidate:
      type: object
      description: Basic candidate identity.
      required:
        - name
        - photo
      properties:
        name:
          type: string
          example: Vivek Patel
        photo:
          type: string
          description: KonnectNXT-hosted profile picture URL, or an empty string if none.
          example: https://storage.googleapis.com/konnectnxt/profile_pictures/abc.png
    Summary:
      type: object
      description: >-
        Count of checks bucketed by verdict. `total` equals the sum of all
        verdict buckets.
      required:
        - total
        - clear
        - minor_discrepancy
        - discrepancy
        - unable_to_verify
        - not_available
        - pending
      properties:
        total:
          type: integer
          example: 2
        clear:
          type: integer
          example: 2
        minor_discrepancy:
          type: integer
          example: 0
        discrepancy:
          type: integer
          example: 0
        unable_to_verify:
          type: integer
          example: 0
        not_available:
          type: integer
          example: 0
        pending:
          type: integer
          example: 0
    Check:
      type: object
      description: >-
        A single verification check. `fields`, `documents`, `remark`, and
        `entries` are optional and only present when they carry data.
      required:
        - type
        - name
        - category
        - status
        - result
        - completed_at
      properties:
        type:
          type: string
          description: >-
            Stable public slug for the check type. Use this (not `name`) for
            programmatic branching.
          enum:
            - identity_aadhaar
            - identity_pan
            - identity_passport
            - identity_driving_licence
            - credit_score
            - credit_report
            - bank_account
            - employment
            - reference
            - criminal
            - global_database
            - education
            - address_digital
            - address_physical
            - social_professional
            - social_media
            - doctor_registration
            - nurse_registration
          example: identity_aadhaar
        name:
          type: string
          description: Human-readable display name for the check.
          example: Aadhaar Verification
        category:
          type: string
          description: Display grouping for the check.
          enum:
            - Identity
            - Financial
            - Employment
            - Criminal & Compliance
            - Education
            - Address
            - Social & Professional
            - Professional Registration
          example: Identity
        status:
          $ref: '#/components/schemas/CheckStatus'
        result:
          $ref: '#/components/schemas/Verdict'
        completed_at:
          type: string
          nullable: true
          description: >-
            Display timestamp at which the check completed, or null if not yet
            completed. Format: `DD Month, YYYY, HH:MM` (organization timezone).
          example: 13 May, 2026, 11:02
        fields:
          type: array
          description: >-
            Verified details for this check, such as name, date of birth, or a
            masked document number. Present only when there are details to show.
          items:
            $ref: '#/components/schemas/Field'
        documents:
          type: array
          description: >-
            Links to scanned documents or report pages for this check. Present
            only when documents exist.
          items:
            type: string
            format: uri
            example: https://storage.googleapis.com/konnectnxt/criminal/page_1.png
        remark:
          type: string
          description: >-
            A short note about the outcome of this check. Present only when
            there is something to add.
          example: No cases found.
        entries:
          type: array
          description: >-
            Per-item results for checks that cover more than one thing, such as
            multiple employers or addresses. Present only for multi-part checks
            (employment, reference, address, social/professional).
          items:
            $ref: '#/components/schemas/CheckEntry'
    CheckStatus:
      type: string
      description: Lifecycle status of an individual check.
      enum:
        - in_progress
        - completed
      example: completed
    Field:
      type: object
      description: A labelled verified value.
      required:
        - label
        - value
      properties:
        label:
          type: string
          example: Date of Birth
        value:
          description: The verified value. Usually a string.
          example: 08-01-2001
    CheckEntry:
      type: object
      description: >-
        A single item's result within a multi-part check. Which fields are
        present depends on the check type.
      properties:
        result:
          $ref: '#/components/schemas/Verdict'
        company_name:
          type: string
          description: Present for `employment` and `reference` entries.
          example: Acme Corp
        designation:
          type: string
          description: Present for `employment` and `reference` entries.
          example: Senior Engineer
        address_type:
          type: string
          description: Present for `address_physical` entries.
          example: Permanent
        location:
          type: string
          description: Present for `address_physical` entries (city, state, country).
          example: Pune, Maharashtra, India
        platform:
          type: string
          description: Present for `social_professional` entries.
          example: linkedin
        profile_url:
          type: string
          description: Present for `social_professional` entries.
          example: https://linkedin.com/in/example
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key issued by KonnectNXT. Pass as `Authorization: Bearer
        <your_api_key>`.

````