Appearance
Manual Verifications
Integrating Manual Verification is less complex than integrating Biometric Verification; your integration will involve a POST request containing a client’s details to be verified. Our response will describe whether the client’s details have been verified. Please be prepared for this request to take a few seconds while we query the numerous data sources needed to verify your client.
After creating a Manual Verification you may also perform an additional PUT request to export a PDF report and archive the verification from our server.
POST Create a Manual Verification
API
Description: Create a new manual verification
Endpoint: POST /api/v2/manual_eidv
Properties:
| Property | Sub-property | Required | Type | Notes |
|---|---|---|---|---|
| metadata | yes | object | An object of properties used to identify your verification | |
| reference | yes | string | Verification reference. A name to recognise the verification | |
| external_id | no | string | Your system’s object id. This can be used to make the link between your system’s entity and our verification | |
| individual | yes | object | An object of personal details of the person being verified | |
| first_name | yes | string | First name of the person being verified | |
| middle_name | no | string | Middle name of the person being verified | |
| last_name | yes | string | Last name of the person being verified | |
| date_of_birth | yes | string | Date of birth of the person being verified. Must be in format YYYY-MM-DD | |
| sex | no | string | Sex of the person being verified. Possible values are M, F, or U (unknown) | |
| identity_document | See notes | object | Not required for individuals residing in the United Kingdom. Required for individuals residing in New Zealand and Australia. An object describing the identity document held by the individual. | |
| type | yes | string | Type of identity document. Possible values are driver_licence or passport | |
| country_of_issue | yes | string | Country where the identity document was issued, in ISO-3166 Alpha3 format E.g. NZL, AUS, GBR | |
| state_of_issue | See notes | string | Required only for Australian driver licences. Australian state/territory where the identity document was issued, in abbreviated form. E.g. NSW, QLD, SA, TAS, VIC, WA, ACT, NT | |
| primary_number | yes | string | Driver licence number or passport number | |
| secondary_number | see notes | string | Required only for NZL/AUS driver licences. For NZL use the licence version number. For AUS use the licence card number. | |
| date_of_expiry | see notes | string | Required only for NZL/AUS passports. Date of expiry of the identity document Must be in format YYYY-MM-DD | |
| address | yes | object | An object describing the address where the individual resides | |
| line_1 | yes | string | Address line 1 | |
| line_2 | see notes | string | Address line 2 | |
| suburb | see notes | string | Required for NZL and AUS | |
| city | see notes | string | Required for NZL and GBR | |
| state | see notes | string | Required for AUS | |
| postcode | yes | string | ||
| country | yes | string | Country of the address, in ISO-3166 Alpha3 format . E.g. NZL, AUS, GBR |
Response body:
| Property | Sub-property | Type | Notes |
|---|---|---|---|
| metadata | object | An object of properties used to identify your verification | |
| reference | string | The same reference provided in your request | |
| external_id | string | The same external_id provided in your request | |
| transaction_id | string | Our unique identifier for the verification | |
| timestamp | string | UTC time, in RFC3339 format | |
| api_version | string | ||
| request_id | string | Our unique identifier for your request | |
| results | object | An object containing the results of the Manual EIDV | |
| overall | boolean | ||
| name | boolean | True if the individual’s name has been verified | |
| date_of_birth | boolean | True if the individu al’s date of birth has been verified | |
| address | boolean | True if the individual’s address has been verified | |
| pep_clear | boolean | True if the individual was not found in PEP, sanction or adverse media watchlists | |
| document | boolean | True if the individual’s identity document was verified (if provided). Not applicable to individuals residing in GBR. | |
| verify_address | boolean | True if address verification was enabled for the verification. Note that address verification is done in either case, but the result is taken into account for the overall result only if this value is true | |
| report | string | API Path to /export_and_archive endpoint for this verification | |
| assets | object | Additional assets (if any) | |
| pep_watchlist | string | API Path to PDF document containing PEP Watchlist report (if pep_clear is false, and doc is available) | |
| error_type | string | Type of error (if any) | |
| message | string | Explanation of error (if any) | |
| validation_errors | object | (Advanced) Erroneous values from your request body, with values replaced by validation errors. Useful for implementing form validation. |
Sample Response
json
{
"metadata": {
"reference": "MORTGAGE-1234567",
"external_id": "593d9f00-aa93-4f19-8669-53801ac26a0d",
"transaction_id": "fYcvgm2QiHqMpn2t",
"timestamp": "2022-12-16T10:26:11+00:00",
"api_version": "v2",
"request_id": "75482a27-5149-4bfa-b30a-60c5a2de30ef"
},
"results": {
"Page": 28,
"overall": true,
"name": true,
"date_of_birth": true,
"address": true,
"pep_clear": false,
"mortality_list_clear": true, // Only for customers in GB
"document": true, // always false for individuals residing in GBR
},
"report": "/api/v2/manual_eidv/fYcvgm2QiHqMpn2t/export_and_archive",
"assets": {
"pep_watchlist": "/api/v2/manual_eidv/fYcvgm2QiHqMpn2t/assets/pep_watchlist.pdf"
},
"data_sources": {
"config": [
{
"field": "summary_of_data_sources_searched",
"label": "Summary of data sources searched"
},
{
"field": "name",
"label": "Name"
},
{
"field": "date_of_birth",
"label": "Date of Birth"
},
{
"field": "address",
"label": "Address"
}
],
"rows": [
{
"summary_of_data_sources_searched": "Comprehensive Account",
"name": "NotPresent",
"date_of_birth": "NotPresent",
"address": "NotPresent"
},
{
"summary_of_data_sources_searched": "Retail Energy Account",
"name": "NotPresent",
"date_of_birth": "NotPresent",
"address": "NotPresent"
},
{
"summary_of_data_sources_searched": "NZ Property Owner",
"name": "NotPresent",
"date_of_birth": "NA",
"address": "NotPresent"
},
{
"summary_of_data_sources_searched": "NZTA Driver Licence",
"name": "NoMatch",
"date_of_birth": "NoMatch",
"address": "NA"
},
{
"summary_of_data_sources_searched": "Bureau File",
"name": "NotSearched",
"date_of_birth": "NotSearched",
"address": "NotSearched"
}
]
}
}PUT Export created verification to PDF report (and archive from our server)
API
Description: Download PDF Report of created Manual Verification, and archive from our server
Endpoint: PUT /api/v2/manual_eidv/{transaction_id}/export_and_archive
GET Fetch PEP Watchlist result for a verification (if applicable)
API
Description: Download PDF Report of PEP Watchlist results (if the individual’s PEP check was not clear, and a report is available)
Endpoint: GET /api/v2/manual_eidv/{transaction_id}/assets/pep_watchlist
Examples
js
const axios = require('axios')
const contentDisposition = require('content-disposition') const fs = require('fs')
axios.put('https://staging.aplyid.co.uk/api/v2/manual_eidv/fYcvgm2QiHqMpn2t/assets/pep_watchlist’, {}, {
headers: {
'Aply-API-Key': 'zHb4LM9dSBAwiVECjKSoG6Fy',
'Aply-Secret': 'Uds32eU6hG2MFSMioEdXVGWNVkSnR1A7'
},
responseType: 'stream'
})
.then(response => {
// Using contentDisposition to retrieve generated filename from headers
const content = contentDisposition.parse(response.headers['content-disposition'])
// Writing downloaded PDF to our server's file system response.data.pipe(fs.createWriteStream(content.parameters.filename))
})
.catch(error => {
console.log("Something went wrong downloading pdf")
})js
// Create Manual Verification example (NZL driver licence)
axios.post('https://integration.aplyid.com/api/v2/manual_eidv', {
metadata: {
reference: 'MORTGAGE-1234567',
external_id: '593d9f00-aa93-4f19-8669-53801ac26a0d'
}, individual: {
first_name: 'John',
middle_name: 'O.',
last_name: 'Doe',
date_of_birth: '1990-01-01'
}, identity_document: {
type: 'driver_licence',
country_of_issue: 'NZL',
primary_number: 'DO12345678',
secondary_number: '123'
}, address: {
line_1: '22 Pollen Street',
suburb: 'Grey Lynn',
city: 'Auckland',
postcode: '1021',
country: 'NZL'
}
}, {
headers: {
'Aply-API-Key': 'zHb4LM9dSBAwiVECjKSoG6Fy',
'Aply-Secret': 'Uds32eU6hG2MFSMioEdXVGWNVkSnR1A7'
}
})
.then(response => {
// Do some stuff
})
.catch(error => {
console.log(error.response.data.message)
})js
const axios = require('axios')
const contentDisposition = require('content-disposition') const fs = require('fs')
axios.put('https://staging.aplyid.co.uk/api/v2/manual_eidv/fYcvgm2QiHqMpn2t/export_and_archive’, {}, {
headers: {
'Aply-API-Key': 'zHb4LM9dSBAwiVECjKSoG6Fy',
'Aply-Secret': 'Uds32eU6hG2MFSMioEdXVGWNVkSnR1A7'
},
responseType: 'stream'
})
.then(response => {
// Using contentDisposition to retrieve generated filename from headers
const content = contentDisposition.parse(response.headers['content-disposition']) // Writing downloaded PDF to our server's file system response.data.pipe(fs.createWriteStream(content.parameters.filename))
})
.catch(error => {
console.log("Something went wrong downloading pdf")
})js
// Create Manual Verification example (GBR without identity document)
axios.post('https://staging.aplyid.co.uk/api/v2/manual_eidv, {
metadata: {
reference: 'MORTGAGE-1234567',
external_id: '593d9f00-aa93-4f19-8669-53801ac26a0d'
}, individual: {
first_name: 'John',
middle_name: 'O.',
last_name: 'Doe',
date_of_birth: '1990-01-01'
}, address: {
line_1: '18 Brunswick Place',
city: 'London',
postcode: 'N1 6DZ',
country: 'GBR'
}
}, {
headers: {
'Aply-API-Key': 'zHb4LM9dSBAwiVECjKSoG6Fy',
'Aply-Secret': 'Uds32eU6hG2MFSMioEdXVGWNVkSnR1A7'
}
})
.then(response => {
// Do some stuff
})
.catch(error => {
console.log(error.response.data.message)
})Error Codes
401 Unauthorized
json
{
"metadata": {
"reference": "MORTGAGE-1234567",
"external_id": "593d9f00-aa93-4f19-8669-53801ac26a0d",
"timestamp": "2022-09-16T10:26:11+00:00",
"api_version": "v2",
"request_id": "75482a27-5149-4bfa-b30a-60c5a2de30ef"
},
"message": "Invalid credentials",
"error_type": "AUTHENTICATION"
}403 Forbidden
json
{
"metadata": {
"reference": "MORTGAGE-1234567",
"external_id": "593d9f00-aa93-4f19-8669-53801ac26a0d",
"timestamp": "2022-09-16T10:26:11+00:00",
"api_version": "v2",
"request_id": "75482a27-5149-4bfa-b30a-60c5a2de30ef"
},
"message": "Not allowed",
"error_type": "AUTHORIZATION"
}422 Validation
json
{
"metadata": {
"reference": "MORTGAGE-1234567",
"external_id": "593d9f00-aa93-4f19-8669-53801ac26a0d",
"timestamp": "2022-09-16T10:26:11+00:00",
"api_version": "v2",
"request_id": "75482a27-5149-4bfa-b30a-60c5a2de30ef"
},
"message": "First name cannot exceed 64 characters, last name required and identity document is mandatory for individuals in NZL",
"error_type": "VALIDATION",
"validation_errors": {
"individual": {
"first_name": [
"cannot exceed 64 characters"
],
"last_name": [
"required"
]
},
"identity_document": [
"mandatory for individuals living in NZL" ]
}
}500 Internal Server Error
json
{
"metadata": {
"reference": "MORTGAGE-1234567",
"external_id": "593d9f00-aa93-4f19-8669-53801ac26a0d",
"timestamp": "2022-09-16T10:26:11+00:00",
"api_version": "v2",
"request_id": "75482a27-5149-4bfa-b30a-60c5a2de30ef"
},
"message": "Unexpected error occured. Please contact us on 0800xxx and quote the request_id",
"error_type": "SYSTEM"
}