---
title: "Report fraud"
slug: "report-fraud"
description: "Submit and process multiple fraud reports efficiently with detailed status updates for each report. Ensure accurate fraud detection and reporting."
updated: 2025-12-19T13:16:13Z
published: 2025-12-19T13:16:13Z
excludeFromSearch: true
---

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

# Submit fraud report

Post/v1/feedback/fraud-reports

		
			

**Submit one or more fraud reports for evaluation and processing.**

This endpoint accepts a batch of reports and processes each independently. Each report will receive a separate status in the response, enabling partial success scenarios where some reports succeed while others fail.

**Response statuses per report**

Each item in the `reports` array of the response will have a `status`:

- `reported`: The fraud report was successfully processed and recorded. The `reportId` field will contain the ID that was assigned to the report.
- `error`: The report could not be processed. The `details`field will contain the reason, such as:
  - "The categories [...] are not valid."
  - "The specified sessionId was not found."
  - "The verification is in a state that cannot be reported."
  - "A report already exists for this session."
  - "An unexpected error occurred..."

		
		

Header parametersVRF-AUTH-CLIENTstringRequired

Your integration's API key, can be found in Customer Portal

VRF-HMAC-SIGNATUREstringRequired

Full request path and request payload body signed with the shared secret key. There must be a new line break between the endpoint URL and the payload body ("\n" or any alternative logic in other programming language). See [HMAC Authentication and Endpoint Security](https://devdocs.veriff.com/docs/hmac-authentication-and-endpoint-security) for more info.

Body parameters<select class='api-response-data' aria-label='Media type'><option value='c6b62f64-a9f5-4334-96f3-26fc2bbd4b57'>application/json</option>
</select><select class='select-example' aria-label='Media type'><option value='898f7951-f622-41a4-9ed0-0243169e3f1d'>submitting_several_reports</option>
<option value='db02c175-b1d8-4f3d-8ece-e88db2f7f0df'>submitting_one_report</option>
</select>submitting_several_reports

```json
{
  "reports": [
    {
      "sessionId": "d4f37a0d-2858-4270-aa74-0be2a78cadcb",
      "categories": [
        "document_is_manipulated"
      ],
      "comment": "Right side of the document appears to be cut off"
    },
    {
      "sessionId": "cef3dc5b-4af1-476f-b75d-708dea4b7582",
      "categories": [
        "injected_media"
      ],
      "comment": "Media is injected"
    }
  ]
}
```

submitting_one_report

```json
{
  "reports": [
    {
      "sessionId": "d4f37a0d-2858-4270-aa74-0be2a78cadcb",
      "categories": [
        "document_is_manipulated"
      ],
      "comment": "Right side of the document appears to be cut off"
    }
  ]
}
```

Expand Allobject  

Request body model for submitting one or more fraud reports.

reports Array of object (FraudReportItem)   Required

List of fraud reports to submit.

Min items1object  

Represents a single fraud report within a submission request.

sessionIdstring  (uuid)    Required

The unique identifier of the Veriff session being reported.

categories Array of string   Required

List of fraud category codes associated with this report.

Min items1string    

A fraud category code (obtainable from `/fraud-categories`).

ExampleDOCUMENT_MANIPULATED
commentstring  (uuid)   | null  

Optional additional details or context about the fraud report (max 500 characters recommended).

ExampleDocument corners appear cropped; possible tampering.
user_uuidstring  (uuid)   | null  

The unique identifier of the user who creates the report.

Exampled6c23ba2-100a-4361-995e-bb57c29ba5f2

Responses200

Successful Response

<select class='api-response-data' aria-label='Media type'><option value='405a071b-e769-4b90-be89-8fc2a0edfac0'>application/json</option>
</select><select class='select-example' aria-label='Media type'><option value='98dd715d-5e65-4a48-ab20-50b13b85e470'>reporting_success</option>
<option value='2a493257-a846-47f0-b897-592faf8b9598'>reporting_success_and_error</option>
<option value='86a198a2-c7f0-452a-8cd5-7f131705fa66'>reporting_error</option>
</select>reporting_success

```json
{
  "reports": [
    {
      "sessionId": "d4f37a0d-2858-4270-aa74-0be2a78cadcb",
      "reportId": "a565f8b9-9c0a-4e8e-95c4-94c4b51e150e",
      "status": "reported"
    }
  ]
}
```

reporting_success_and_error

```json
{
  "reports": [
    {
      "sessionId": "d4f37a0d-2858-4270-aa74-0be2a78cadcb",
      "reportId": "a565f8b9-9c0a-4e8e-95c4-94c4b51e150e",
      "status": "reported"
    },
    {
      "sessionId": "cef3dc5b-4af1-476f-b75d-708dea4b7582",
      "reportId": "3a8d086a-bd10-4e66-ba29-a4d2671d0b49",
      "status": "error",
      "details": "The verification is in a state that cannot be reported."
    }
  ]
}
```

reporting_error

```json
{
  "reports": [
    {
      "sessionId": "cef3dc5b-4af1-476f-b75d-708dea4b7582",
      "reportId": "3a8d086a-bd10-4e66-ba29-a4d2671d0b49",
      "status": "error",
      "details": "The verification is in a state that cannot be reported."
    }
  ]
}
```

Expand Allobject  

Response model for fraud report submission, providing both detailed per-item results and summary statistics for the batch operation.

reports Array of object (FraudReportResponseItem)   

Detailed results for each individual report submission, including status and error details if applicable.

object  

Represents the processing result for a single fraud report within a batch submission.

sessionIdstring  (uuid)   | null  

The session ID corresponding to this report result.

reportIdstring  (uuid)   | null  

The unique ID assigned to the successfully processed fraud report. Null if processing failed.

statusstring    

The processing status of this individual report ('reported' or 'error').

Valid values[
  "reported",
  "error"
]Examplereported
detailsstring   | null  

Provides error details if the status is 'error', otherwise null.

Examplenull

processedCountinteger    

Total number of reports received and processed in this request batch.

Example2
successCountinteger    

Number of reports that were successfully submitted and recorded.

Example1
errorCountinteger    

Number of reports that failed validation or processing.

Example1

400

Bad Request. Possible reasons: Invalid categories, invalid session state, report already exists.

<select class='api-response-data' aria-label='Media type'><option value='2caeb175-4345-4d04-b813-c832f819b266'>application/json</option>
</select>object  

Generic error response structure.

codestring    

A machine-readable error code indicating the type of error.

ExampleBAD_REQUEST
messagestring    

A human-readable message explaining the error.

ExampleThe categories are not valid.

401

Unauthorized. Possible reasons: Invalid API key or signature.

<select class='api-response-data' aria-label='Media type'><option value='974dd665-bfc3-4480-b804-72df106986c8'>application/json</option>
</select><select class='select-example' aria-label='Media type'><option value='959fb771-a918-44b7-bc37-61a964d26d02'>invalidApiKey</option>
</select>invalidApiKey

```json
{
  "code": "1803",
  "message": "Integration with the API key '6ee9e344-20a6-439d-bf21-b6610db63ad6' was not found."
}
```

object  

Generic error response structure.

codestring    

A machine-readable error code indicating the type of error.

ExampleBAD_REQUEST
messagestring    

A human-readable message explaining the error.

ExampleThe categories are not valid.

422

Unprocessable Entity. Input validation failed.

<select class='api-response-data' aria-label='Media type'><option value='52b931a9-4f00-40ef-97e1-2d6a012f8245'>application/json</option>
</select><select class='select-example' aria-label='Media type'><option value='f6b2af6e-3697-4cca-8219-837dbd53cc2e'>categoriesFieldRequired</option>
</select>categoriesFieldRequired

```json
{
  "code": "UNPROCESSABLE_ENTITY",
  "message": "Validation failed: reports: Field required"
}
```

object  

Generic error response structure.

codestring    

A machine-readable error code indicating the type of error.

ExampleBAD_REQUEST
messagestring    

A human-readable message explaining the error.

ExampleThe categories are not valid.

429

Too Many Requests. Rate limit exceeded.

<select class='api-response-data' aria-label='Media type'><option value='df24ec26-0347-42c6-b3c3-317c1f5a6ada'>application/json</option>
</select><select class='select-example' aria-label='Media type'><option value='51480c95-ec1b-4fa9-85b7-1084781c1535'>rateLimitExceeded</option>
</select>rateLimitExceeded

```json
{
  "code": "RATE_LIMIT_EXCEEDED",
  "message": "Limit exceeded: 1000 per minute"
}
```

object  

Generic error response structure.

codestring    

A machine-readable error code indicating the type of error.

ExampleBAD_REQUEST
messagestring    

A human-readable message explaining the error.

ExampleThe categories are not valid.

500

Internal Server Error. An unexpected error occurred.

<select class='api-response-data' aria-label='Media type'><option value='e82c3b78-dbc9-4aee-b69f-a6f06f5d0c5e'>application/json</option>
</select><select class='select-example' aria-label='Media type'><option value='a60d146a-d9d3-45d1-9aa7-1df36a5da972'>internalServerError</option>
</select>internalServerError

```json
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "An unexpected error occurred."
}
```

object  

Generic error response structure.

codestring    

A machine-readable error code indicating the type of error.

ExampleBAD_REQUEST
messagestring    

A human-readable message explaining the error.

ExampleThe categories are not valid.

		
			

<title style="font-size:15px;">Document Versioning</title>

**Changelog**

| Date | Description |
| --- | --- |
| Dec 19, 2025 | VRF-HMAC-SIGNATURE header description updated |
| Nov 6, 2025 | "Article Versioning" changed to "Changelog" |
| Oct 3, 2025 | Note about pre-release removed |
| Sep 18, 2025 | Name of the article changed |
| Mar 12, 2025 | Documentation published |
