---
title: "Generate a Private Prosecutors Index report."
method: POST
path: "/reports/private-prosecutors-index/jobs"
tags: ["reports"]
---

# Generate a Private Prosecutors Index report.

`POST /reports/private-prosecutors-index/jobs`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/reports/private-prosecutors-index/jobs`
- Auth: none declared

Creates an asynchronous job to produce a CSV report listing all applications to commence a private prosecution recorded under code MX99010, filtered by date range and legacy report location semantics. Returns an acknowledgement containing the job ID that can be used to track progress and download the report once complete. The CSV output is capped by server configuration, defaulting to 100,000 rows.

## Request body

- PrivateProsecutorsIndexFilterDto: Filter criteria for POST /reports/private-prosecutors-index/jobs. Both dateFrom and dateTo are required and are treated as inclusive bounds. Blank fields will be rejected, nulls should be used instead.
  - `dateFrom` string, date, required: Inclusive start date (YYYY-MM-DD).
  - `dateTo` string, date, required: Inclusive end date (YYYY-MM-DD).
  - `location` LegacyReportLocation: Location filters for legacy MIS reports. Blank fields will be rejected, nulls should be used instead. Location filters are optional. Use courtLocationCode on its own, cjaCode on its own, otherLocationDescription on its own, or cjaCode and otherLocationDescription together. courtLocationCode is mutually exclusive with cjaCode and otherLocationDescription.
    - `courtLocationCode` string: Court location code (case-insensitive contains match).
    - `otherLocationDescription` string: Other location description (case-insensitive contains match).
    - `cjaCode` string: Criminal Justice Area code. Can be supplied on its own or with otherLocationDescription.
  - `applicantSurname` string: Applicant surname (case-insensitive contains match).
  - `applicantFirstName` string: Applicant first name (case-insensitive contains match).
  - `applicantOrganisationName` string: Applicant organisation name (case-insensitive contains match).
  - `standardApplicantName` string: Standard applicant name (case-insensitive contains match).
  - `respondentSurname` string: Respondent surname (case-insensitive contains match).
  - `respondentFirstName` string: Respondent first name (case-insensitive contains match).
  - `respondentOrganisationName` string: Respondent organisation name (case-insensitive contains match).

## Response `202`

Report job accepted for asynchronous processing.

- JobAcknowledgement: Acknowledgement returned when a background job is created.
  - `id` string, uuid, required: Unique identifier for the job, in UUID v4 format.
  - `type` 'ACTIVITY_AUDIT_REPORT' | 'FEES_REPORT' | 'LIST_MAINTENANCE_REPORT' | 'SEARCH_WARRANTS_REPORT' | 'WORKLOAD_REPORT' | 'DURATION_REPORT' | 'PRIVATE_PROSECUTORS_INDEX_REPORT' | 'BULK_UPLOAD_ENTRIES', required: The type of the job being polled by the user.
  - `status` 'RECEIVED' | 'VALIDATING' | 'PROCESSING' | 'FAILED' | 'COMPLETED', required: The status of the job being polled by the user.
  - `createdCount` integer: Number of applications imported by this job, excluding the CSV header and including subsequently soft-deleted applications. Available only when polling a completed BULK_UPLOAD_ENTRIES job; omitted from all other responses. Counted from retained job-to-application mappings, not the current list size.
  - `mainFeeTotal` number: Current main fees in GBP for non-deleted applications created by this upload, regardless of payment or remission status. Available only when polling a completed BULK_UPLOAD_ENTRIES job; zero when no applicable fees remain. Calculated on read, so later changes to applications or associated fees can change this value. Omitted from all other responses.
  - `offsiteFeeTotal` number: Current applicable offsite fees in GBP for non-deleted applications created by this upload, regardless of payment or remission status. Available only when polling a completed BULK_UPLOAD_ENTRIES job; zero when no applicable fees remain. Calculated on read, not an upload-time snapshot. Omitted from all other responses.
  - `totalFeeValue` number: Sum of mainFeeTotal and offsiteFeeTotal in GBP. Available only when polling a completed BULK_UPLOAD_ENTRIES job. Zero when no applicable fees remain; calculated on read. Omitted from all other responses.
  - `error_description` string: Details of a failed job. Bulk-upload validation failures may include actionable input errors; unexpected bulk-upload processing failures use a generic message and identify the job reference to quote to support.

## Other responses

- `400`: Invalid request parameters.
- `401`: Authentication required or token invalid.
- `403`: Authenticated but not permitted to perform this action.
- `500`: Unexpected server error.

## Changes

- **2026-10-08** `d4587b3d88ec`: 1 info
  - added the optional property `createdCount` to the response with the `202` status
- **2026-09-17** `22203fd337b7`: 3 info
  - added the optional property `mainFeeTotal` to the response with the `202` status
  - added the optional property `offsiteFeeTotal` to the response with the `202` status
  - added the optional property `totalFeeValue` to the response with the `202` status

[Operation history](https://skmtc.dev/hm-courts-and-tribunals-service/apis/applications-register-api/changes/reports/private-prosecutors-index/jobs/post.md)

---

[API](https://skmtc.dev/hm-courts-and-tribunals-service/apis/applications-register-api.md) - [All operations](https://skmtc.dev/hm-courts-and-tribunals-service/apis/applications-register-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hm-courts-and-tribunals-service/apis/applications-register-api/revisions/36521cfe1ab7?raw)
