> ## 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. # Retrieve fraud reports ## OpenAPI ````json POST /v1/feedback/fraud-reports/retrieve { "openapi": "3.0.2", "info": { "title": "Feedback API", "description": "Feedback API.
", "version": "1.0.0" }, "servers": [ { "url": "https://feedback.api.veriff.com" } ], "paths": { "/v1/feedback/fraud-reports/retrieve": { "post": { "tags": [ "Fraud" ], "summary": "Retrieve fraud reports", "operationId": "retrieve_fraud_reports_api_v1_feedback_fraud_reports_retrieve_post", "parameters": [ { "name": "VRF-AUTH-CLIENT", "in": "header", "required": "true", "schema": { "type": "string" }, "description": "API key" }, { "name": "VRF-HMAC-SIGNATURE", "in": "header", "required": "true", "schema": { "type": "string" }, "description": "Full request path signed with the shared secret key" } ], "requestBody": { "required": "true", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FraudReportRetrieveRequest" }, "examples": { "retrieve_multiple_sessions": { "value": { "sessionIds": [ "aca4ac5e-ea2d-40d7-9012-0e49e783eb1a", "b1a4ac5e-ea2d-40d7-9012-0e49e783eb1b" ] } } } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FraudReportRetrieveResponse" }, "examples": { "reports_retrieved_example": { "value": { "reports": [ { "sessionId": "ddb70e9d-ca99-4294-9716-abf3a1998cdf", "status": "FOUND", "details": { "reportId": "aca4ac5e-ea2d-40d7-9012-0e49e783eb1a", "reportedBy": "user@example.com", "status": "Reviewed", "verifiedAt": "2024-01-15T09:30:00Z", "reportedAt": "2024-01-15T10:30:00Z", "reviewedAt": "2024-01-15T11:30:00Z", "fraudTypeReported": [ "document_is_manipulated" ], "customerComment": "Document appears to be digitally altered", "initialDecision": "approved", "finalDecision": "approved", "resetFp": "false", "reviewDecision": "declined", "reviewOutcome": "agree", "decisionErrorDescription": "Decision Profile Check (some_check): d07f2b48-4dc2-4470-a183-ed6032a68081: Check Result: success → QA Result: failure" } }, { "sessionId": "b1b4bc6f-fb3e-41e8-a123-1f5af894fc2b", "status": "NOT_FOUND", "errorMessage": "Report not found or not accessible" } ], "processedCount": "2", "foundCount": "1", "notFoundCount": "1" } } } } } }, "401": { "description": "Unauthorized. Possible reasons: Invalid API key or signature.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorPayload" } } } }, "429": { "description": "Too Many Requests. Rate limit exceeded.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorPayload" } } } }, "400": { "description": "Bad Request. Possible reasons: Invalid request format, no session IDs provided, or more than 10 session IDs provided.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorPayload" } } } }, "422": { "description": "Unprocessable Entity. Input validation failed.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorPayload" } } } }, "500": { "description": "Internal Server Error. An unexpected error occurred.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorPayload" } } } } }, "x-d360-narrative-url": "

Retrieve fraud reports by session IDs.

This endpoint accepts a list of session IDs and returns detailed information about each fraud report, including verification session data, QA reviews, and decision information.

Response Statuses Per Report: Each item in the reports array of the response will have a status:

", "x-d360-narrative-responses": "



Changelog

Date

Description

Aug 24, 2026

- Request body examples with sample session IDs added

- Clarification added that reportId from submit endpoint cannot be used for retrieval added

- Four new required fields in response payload: initialDecision, finalDecision, reviewDecision, reviewOutcome

- status field info updated

- sessionId field removed from details object

Dec 19, 2025

VRF-AUTH-CLIENT header description updated

Nov 28, 2025

Response payload example added

Nov 26, 2025

Example data for decisionErrorDescription added

Nov 6, 2025

Documentation published

" } } }, "components": { "schemas": { "FraudReportRetrieveRequest": { "properties": { "sessionIds": { "items": { "type": "string", "format": "uuid", "description": "A session ID associated with a fraud report." }, "type": "array", "minItems": "1", "maxItems": "10", "title": "Session IDs", "description": "List of session IDs to retrieve fraud reports for (max 10 per request). Note that the reportId returned by the submit endpoint cannot be used as a retrieve key.", "example": [ "aca4ac5e-ea2d-40d7-9012-0e49e783eb1a", "b1a4ac5e-ea2d-40d7-9012-0e49e783eb1b" ] } }, "type": "object", "required": [ "sessionIds" ], "title": "FraudReportRetrieveRequest", "description": "Request body model for retrieving fraud reports by session IDs." }, "FraudReportRetrieveResponse": { "properties": { "reports": { "items": { "$ref": "#/components/schemas/FraudReportRetrieveResponseItem" }, "type": "array", "title": "Report Results", "description": "Detailed results for each individual report retrieval, including status and detailed information if found." }, "processedCount": { "type": "integer", "title": "Processed Count", "description": "Total number of session IDs processed in this request.", "example": "2" }, "foundCount": { "type": "integer", "title": "Found Count", "description": "Number of reports that were successfully found.", "example": "1" }, "notFoundCount": { "type": "integer", "title": "Not Found Count", "description": "Number of reports that were not found or not accessible.", "example": "1" } }, "type": "object", "required": [ "reports", "processedCount", "foundCount", "notFoundCount" ], "title": "FraudReportRetrieveResponse", "description": "Response model for fraud report retrieval, providing both detailed per-item results and summary statistics for the batch operation." }, "ErrorPayload": { "type": "object", "required": [ "code", "message" ], "properties": { "code": { "type": "string", "title": "Error Code", "description": "A machine-readable error code indicating the type of error.", "example": "BAD_REQUEST" }, "message": { "type": "string", "title": "Error Message", "description": "A human-readable message explaining the error.", "example": "The categories are not valid." } }, "title": "ErrorPayload", "description": "Generic error response structure." }, "FraudReportRetrieveResponseItem": { "properties": { "sessionId": { "type": "string", "format": "uuid", "title": "Session ID", "description": "The session ID that was queried.", "example": "ddb70e9d-ca99-4294-9716-abf3a1998cdf" }, "status": { "type": "string", "enum": [ "FOUND", "NOT_FOUND" ], "example": "FOUND", "title": "Status", "description": "The retrieval status of this report ('FOUND' or 'NOT_FOUND')." }, "details": { "allOf": [ { "$ref": "#/components/schemas/FraudReportDetailedInfo" } ], "nullable": "true", "title": "Detailed Information", "description": "Detailed fraud report information. Present only when status is 'FOUND'." }, "errorMessage": { "type": "string", "nullable": "true", "title": "Error Message", "description": "Error message if the report was not found. Present only when status is 'NOT_FOUND'.", "example": "Report not found or not accessible" } }, "type": "object", "required": [ "sessionId", "status" ], "title": "FraudReportRetrieveResponseItem", "description": "Represents the retrieval result for a single fraud report within a batch request." }, "FraudReportDetailedInfo": { "properties": { "reportId": { "type": "string", "format": "uuid", "title": "Report ID", "description": "The unique identifier for this fraud report.", "example": "aca4ac5e-ea2d-40d7-9012-0e49e783eb1a" }, "reportedBy": { "type": "string", "title": "Reported By", "description": "The user email or automation that reported this fraud.", "example": "user@example.com" }, "status": { "type": "string", "enum": [ "Received", "In Review", "Reviewed" ], "title": "Status", "description": "Status of the report. 'Received' means the report was submitted but not yet reviewed, 'In Review' means a QA review is in progress, 'Reviewed' means QA review is complete.", "example": "Reviewed" }, "verifiedAt": { "type": "string", "format": "date-time", "nullable": "true", "title": "Verified At", "description": "Timestamp when the verification session was verified.", "example": "2024-01-15T09:30:00Z" }, "reportedAt": { "type": "string", "format": "date-time", "title": "Reported At", "description": "Timestamp when the fraud report was submitted.", "example": "2024-01-15T10:30:00Z" }, "reviewedAt": { "type": "string", "format": "date-time", "nullable": "true", "title": "Reviewed At", "description": "Timestamp when the report was reviewed.", "example": "2024-01-15T11:30:00Z" }, "fraudTypeReported": { "items": { "type": "string", "description": "A fraud category code.", "example": "CATEGORY_1" }, "type": "array", "title": "Fraud Types Reported", "description": "List of fraud category codes reported for this session." }, "customerComment": { "type": "string", "nullable": "true", "title": "Customer Comment", "description": "Optional comment provided during reporting.", "example": "Document appears to be digitally altered" }, "initialDecision": { "type": "string", "title": "Initial Decision", "description": "Initial decision made for this verification. 'pending' means no decision has been reached yet.", "enum": [ "approved", "declined", "resubmission_requested", "review", "pending" ], "example": "declined" }, "finalDecision": { "type": "string", "title": "Final Decision", "description": "Final decision made for this verification. 'pending' means no decision has been reached yet.", "enum": [ "approved", "declined", "resubmission_requested", "review", "pending" ], "example": "declined" }, "resetFp": { "type": "boolean", "nullable": "true", "title": "Reset False Positive", "description": "Indicates if this was marked as a false positive that was reset.", "example": "false" }, "reviewDecision": { "type": "string", "title": "Review Decision", "description": "The raw decision of the most recent QA review that reached a decision. 'pending' means no QA review has reached a decision yet.", "enum": [ "approved", "declined", "resubmission_requested", "review", "pending" ], "example": "declined" }, "reviewOutcome": { "type": "string", "title": "Review Outcome", "description": "Agreement verdict. 'agree' means the QA review changed the decision, so Veriff confirms the reported fraud. 'disagree' means the QA review reached the same decision, so the fraud claim was rejected. 'pending' means there is no QA decision yet or no initial decision to compare against.", "enum": [ "agree", "disagree", "pending" ], "example": "agree" }, "decisionErrorDescription": { "type": "string", "nullable": "true", "title": "Decision Error Description", "description": "Description of any decision errors if applicable.", "example": "Decision Profile Check (some_check): d07f2b48-4dc2-4470-a183-ed6032a68081: Check Result: success → QA Result: failure Decision Profile Check (some_other_check): d07f2b48-4dc2-4470-a183-ed6032a68081: Check Result: success → QA Result: failure" } }, "type": "object", "required": [ "reportId", "reportedBy", "status", "reportedAt", "fraudTypeReported", "initialDecision", "finalDecision", "reviewDecision", "reviewOutcome" ], "title": "FraudReportDetailedInfo", "description": "Detailed information about a fraud report including verification session data, QA reviews, and decisions. Fields with no value are omitted from the response (response_model_exclude_none) rather than returned as null." } } } } ````