| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Overview
Use this read-only endpoint to retrieve structured Reusable KYC reports for a specific applicant.
The method does not recalculate or save anything; it simply fetches pre-existing REUSABLE_KYC_REPORT checks from the applicant's inspection and presents them in a clean, detailed, inline format. This lets you see exactly which check results and values (such as country, age, or document type) were inherited during the reuse process.
Required permissions
To use the method, the API token/session must have the View check results permission.
Request example
curl -X GET \
'https://api.sumsub.com/api/reusableIdentity/69ce35c7b776d140bb500000/reports?levelName=basic-kyc-level' \
-H 'Authorization: Bearer token' \
-H 'Content-Type: application/json' \
-H 'X-App-Token: <your-app-token>' \
-H 'X-App-Access-Sig: <your-signature>' \
-H 'X-App-Access-Ts: <unix-timestamp>'Response explained
The response is a JSON object representing a list of structured Reusable KYC reports for the applicant.
reports[] element fields
reports[] element fields| Field | Type | Description |
|---|---|---|
fromClientId | String | Identifier of the client account that originally verified the applicant and shared this report. |
levelName | String | Name of the verification level used to generate the report. |
createdAt | String | Date and time the report was created, in yyyy-MM-dd HH:mm:ss format. |
reuseParams | Object | Parameters defining how verification data was reused. |
dataGroups | Array of objects | List of data groups included in the report. |
reuseParams attributes
reuseParams attributes| Field | Type | Description |
|---|---|---|
preservedVerificationStatus | Boolean | Whether the original verification status was preserved during reuse. |
requireFreshSelfie | Boolean | Whether a new selfie was required from the applicant during reuse. |
dataGroups[] element fields
dataGroups[] element fields| Field | Type | Description |
|---|---|---|
type | String | Type of the data group. One of applicantData, poi, liveness, faceMatch, duplicateCheck, crossCheck. |
answer | String | Overall result of the data group. One of GREEN, RED, or IGNORED. |
checks | Array of objects | Individual checks performed within the data group, if any. |
checks[] element fields
checks[] element fields| Field | Type | Description |
|---|---|---|
type | String | Type of the check, e.g. allowedCountry, allowedDocType, unexpired, acceptableAge, acceptablePageCnt, noDuplicates, matchedRules. |
answer | String | Result of the check. One of GREEN or RED. |
country | String | Country code the document was issued in. Present only for the allowedCountry check. |
docType | String | Type of the submitted document. Present only for the allowedDocType check. |
validUntil | String | Document's expiration date. Present only for the unexpired check. |
age | Number | Applicant's age at the time of the check. Present only for the acceptableAge check. |
Response examples
If the request is successfully sent and processed, you will get a response like the one below.
{
"reports": [
{
"fromClientId": "client_name",
"levelName": "basic-kyc-level",
"createdAt": "2026-07-03 12:26:11",
"reuseParams": {
"preservedVerificationStatus": false,
"requireFreshSelfie": true
},
"dataGroups": [
{
"type": "applicantData",
"answer": "IGNORED"
},
{
"type": "poi",
"answer": "GREEN",
"checks": [
{
"type": "allowedCountry",
"answer": "GREEN",
"country": "ESP"
},
{
"type": "allowedDocType",
"answer": "GREEN",
"docType": "RESIDENCE_PERMIT"
},
{
"type": "unexpired",
"answer": "GREEN",
"validUntil": "2027-02-11"
},
{
"type": "acceptableAge",
"answer": "GREEN",
"age": 30
},
{
"type": "acceptablePageCnt",
"answer": "GREEN"
}
]
},
{
"type": "liveness",
"answer": "GREEN"
},
{
"type": "faceMatch",
"answer": "GREEN"
},
{
"type": "duplicateCheck",
"answer": "GREEN",
"checks": [
{
"type": "noDuplicates",
"answer": "GREEN"
}
]
},
{
"type": "crossCheck",
"answer": "GREEN",
"checks": [
{
"type": "matchedRules",
"answer": "GREEN"
}
]
}
]
}
]
}If the request fails, you will receive an HTTP response containing an error code along with a message explaining the error. For example:
{
"code": 404,
"description": "Applicant not found"
} 200