| 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 | Effective preservedVerificationStatus value the reuse ran with.
|
requireFreshSelfie | Boolean | Effective requireFreshSelfie value the reuse ran with; only meaningful when preservedVerificationStatus is false.
|
dataGroups[] element fields
dataGroups[] element fields| Field | Type | Description |
|---|---|---|
type | String | Type of the data group. One of applicantData, poi, liveness, faceMatch, duplicateCheck, crossCheck, email, phone, questionnaire, questionnaire2, questionnaire3, questionnaire4.A questionnaire (or questionnaire2 - questionnaire4) group represents a questionnaire step required by the recipient level. When the reused (donor) applicant never completed that questionnaire, the group is returned with answer: IGNORED — see the note below. |
answer | String | Overall result of the data group. One of GREEN (check passed, no issues), RED (check failed, violations found), or IGNORED. IGNORED marks a step that is required at the recipient's verification level but had no check copied from the donor — the step is listed so you can detect it is missing, and carries no checks. |
checks | Array of objects | Individual checks performed within the data group, if any. |
NoteA
questionnaire/questionnaire2–questionnaire4group withanswer: IGNORED(Check was skipped) means the recipient level requires a questionnaire step that the reused applicant did not complete on the donor level. The step is reported so you can see it was missing at reuse time, and the reused applicant is not force-approved while it is outstanding — the recipient must complete the questionnaire. Steps that were already passed on the donor are still carried over asGREEN.
checks[] element fields
checks[] element fields| Field | Type | Description |
|---|---|---|
type | String | Type of the check, for example, allowedCountry, allowedDocType, unexpired, acceptableAge, acceptablePageCnt, noDuplicates, matchedRules, email, phone. |
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. |
email | String | Present on an email check. The confirmed email address. |
phone | String | Present on a phone check. The confirmed phone number. |
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": "questionnaire",
"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"
}
]
},
{
"type": "email",
"answer": "GREEN",
"checks": [
{
"type": "email",
"answer": "GREEN",
"email": "[email protected]"
}
]
},
{
"type": "phone",
"answer": "GREEN",
"checks": [
{
"type": "phone",
"answer": "GREEN",
"phone": "+15551234567"
}
]
}
]
}
]
}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