Applicants API

Create and manage applicant records for identity verification, AML screening, and compliance workflows.

Applicants API

Applicants represent individuals or entities undergoing compliance checks. Create applicant records before starting verifications or AML screenings.

Overview

Applicants store:

  • Personal information (name, DOB, address)
  • Contact details (email, phone)
  • Verification history
  • AML screening results
  • Risk scores

0 Credits Creating applicants is free - credits consumed only when performing checks.

Create Applicant

POST/api/v3/applicants🔒 Auth Required0

Create a new applicant record

Create an applicant for verification or screening.

Request Body

FieldTypeRequiredDescription
firstNamestringYesFirst name (max 100 chars)
lastNamestringYesLast name (max 100 chars)
emailstringYesEmail address (unique per organisation)
dateOfBirthstringNoISO 8601 date (YYYY-MM-DD)
countrystringNoISO 3166-1 alpha-2 country code (e.g., GB, US)
phonestringNoE.164 format (e.g., +44 7911 123456)
addressobjectNoAddress details
nationalitystringNoISO 3166-1 alpha-2 code
metadataobjectNoCustom data (max 10 keys)

Address Object

FieldTypeDescription
streetstringStreet address
citystringCity
postalCodestringPostal/ZIP code
countrystringISO 3166-1 alpha-2 code

Example Request

const response = await fetch('https://api.veriplus.co.uk/api/v3/applicants', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    firstName: 'John',
    lastName: 'Doe',
    email: '[email protected]',
    dateOfBirth: '1990-01-15',
    country: 'GB',
    phone: '+44 7911 123456',
    address: {
      street: '123 High Street',
      city: 'London',
      postalCode: 'SW1A 1AA',
      country: 'GB'
    },
    nationality: 'GB',
    metadata: {
      customerId: 'cust_abc123',
      source: 'website'
    }
  })
});
 
const data = await response.json();
console.log('Applicant ID:', data.data.applicantId);

Response

{
  "success": true,
  "data": {
    "applicantId": "app_1234567890",
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "dateOfBirth": "1990-01-15",
    "country": "GB",
    "status": "ACTIVE",
    "createdAt": "2024-01-15T10:30:00Z"
  }
}

Get Applicant

GET/api/v3/applicants/:id🔒 Auth Required0

Retrieve applicant details

Retrieve full applicant details including verification history.

const applicantId = 'app_1234567890';
 
const response = await fetch(
  `https://api.veriplus.co.uk/api/v3/applicants/${applicantId}`,
  {
    headers: {
      'Authorization': `Bearer ${apiKey}`
    }
  }
);
 
const data = await response.json();
console.log('Applicant:', data.data);

Response

{
  "success": true,
  "data": {
    "applicantId": "app_1234567890",
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "dateOfBirth": "1990-01-15",
    "country": "GB",
    "phone": "+44 7911 123456",
    "address": {
      "street": "123 High Street",
      "city": "London",
      "postalCode": "SW1A 1AA",
      "country": "GB"
    },
    "nationality": "GB",
    "status": "ACTIVE",
    "riskScore": 15,
    "lastVerifiedAt": "2024-01-15T10:32:14Z",
    "metadata": {
      "customerId": "cust_abc123"
    },
    "createdAt": "2024-01-15T10:30:00Z",
    "updatedAt": "2024-01-15T10:32:14Z"
  }
}

List Applicants

GET/api/v3/applicants🔒 Auth Required0

List all applicants

Retrieve a paginated list of applicants.

Query Parameters

ParameterTypeDescription
limitnumberResults per page (default: 20, max: 100)
cursorstringPagination cursor
statusstringFilter by status (ACTIVE, SUSPENDED, ARCHIVED)
countrystringFilter by country code
searchstringSearch by name or email
createdFromstringISO 8601 date
createdTostringISO 8601 date
const params = new URLSearchParams({
  status: 'ACTIVE',
  country: 'GB',
  limit: '50'
});
 
const response = await fetch(
  `https://api.veriplus.co.uk/api/v3/applicants?${params}`,
  {
    headers: {
      'Authorization': `Bearer ${apiKey}`
    }
  }
);
 
const data = await response.json();
console.log(`Found ${data.data.length} applicants`);

Response

{
  "success": true,
  "data": [
    {
      "applicantId": "app_123",
      "firstName": "John",
      "lastName": "Doe",
      "email": "[email protected]",
      "status": "ACTIVE",
      "createdAt": "2024-01-15T10:30:00Z"
    }
  ],
  "pagination": {
    "hasMore": true,
    "nextCursor": "xyz789",
    "total": 1234
  }
}

Update Applicant

PATCH/api/v3/applicants/:id🔒 Auth Required0

Update applicant information

Update applicant details. Only provided fields will be updated.

const response = await fetch(
  `https://api.veriplus.co.uk/api/v3/applicants/${applicantId}`,
  {
    method: 'PATCH',
    headers: {
      'Authorization': `Bearer ${apiKey}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      phone: '+44 7911 654321',
      address: {
        street: '456 New Street',
        city: 'Manchester',
        postalCode: 'M1 1AA',
        country: 'GB'
      }
    })
  }
);
 
const data = await response.json();
console.log('Updated applicant:', data.data);

Delete Applicant

DELETE/api/v3/applicants/:id🔒 Auth Required0

Archive applicant (soft delete)

Archive an applicant. Data is retained for compliance but applicant is hidden from lists.

Soft Delete

Applicants are archived, not permanently deleted. Use for GDPR "right to be forgotten" requests. Contact support for permanent deletion.

const response = await fetch(
  `https://api.veriplus.co.uk/api/v3/applicants/${applicantId}`,
  {
    method: 'DELETE',
    headers: {
      'Authorization': `Bearer ${apiKey}`
    }
  }
);
 
if (response.ok) {
  console.log('Applicant archived');
}

Get Applicant Verification History

GET/api/v3/applicants/:id/verifications🔒 Auth Required0

List all verifications for an applicant

Retrieve verification history for an applicant.

const response = await fetch(
  `https://api.veriplus.co.uk/api/v3/applicants/${applicantId}/verifications`,
  {
    headers: {
      'Authorization': `Bearer ${apiKey}`
    }
  }
);
 
const data = await response.json();
console.log('Verifications:', data.data);

Response

{
  "success": true,
  "data": [
    {
      "verificationId": "verif_abc123",
      "status": "COMPLETED",
      "result": "APPROVED",
      "profileType": "STANDARD",
      "createdAt": "2024-01-15T10:30:00Z",
      "completedAt": "2024-01-15T10:32:14Z"
    },
    {
      "verificationId": "verif_xyz789",
      "status": "COMPLETED",
      "result": "APPROVED",
      "profileType": "EXPRESS",
      "createdAt": "2024-01-10T14:20:00Z",
      "completedAt": "2024-01-10T14:21:30Z"
    }
  ]
}

Get Applicant AML History

GET/api/v3/applicants/:id/aml-screenings🔒 Auth Required0

List all AML screenings for an applicant

Retrieve AML screening history for an applicant.

const response = await fetch(
  `https://api.veriplus.co.uk/api/v3/applicants/${applicantId}/aml-screenings`,
  {
    headers: {
      'Authorization': `Bearer ${apiKey}`
    }
  }
);
 
const data = await response.json();
console.log('AML screenings:', data.data);

Response

{
  "success": true,
  "data": [
    {
      "screeningId": "aml_abc123",
      "status": "COMPLETED",
      "matches": 0,
      "riskLevel": "LOW",
      "categories": ["SANCTIONS", "PEP"],
      "createdAt": "2024-01-15T10:30:00Z"
    }
  ]
}

Applicant Risk Score

Each applicant has a risk score (0-100) calculated from:

  • Verification results
  • AML screening results
  • Country risk
  • Historical behaviour
  • Deepfake detection results
ScoreRisk LevelDescription
0-30LowTrustworthy, low fraud risk
31-60MediumSome risk factors present
61-80HighMultiple risk factors
81-100Very HighHigh fraud risk

Access risk score via /applicants/:id endpoint in riskScore field.

Duplicate Detection

VeriPlus automatically detects potential duplicate applicants based on:

  • Email address (must be unique)
  • Name + Date of Birth combination
  • Phone number

Error on duplicate email:

{
  "success": false,
  "error": {
    "code": "DUPLICATE_APPLICANT",
    "message": "An applicant with this email already exists",
    "details": {
      "existingApplicantId": "app_existing123"
    }
  }
}

Solution: Use existing applicant ID or update existing record.

Best Practices

  1. Store Applicant IDs: Save applicant IDs in your database for future reference
  2. Use Metadata: Link to your internal customer IDs via metadata field
  3. Update Contact Info: Keep email/phone current for better results
  4. Check Duplicates: Search before creating to avoid duplicates
  5. Archive Inactive: Archive applicants who haven't been verified in 12+ months

Error Handling

Error CodeHTTP StatusDescriptionSolution
APPLICANT_NOT_FOUND404Applicant ID doesn't existVerify applicant ID
DUPLICATE_APPLICANT409Email already existsUse existing applicant
INVALID_EMAIL400Email format invalidProvide valid email
INVALID_DATE_OF_BIRTH400DOB format invalidUse YYYY-MM-DD format
INVALID_COUNTRY_CODE400Unknown country codeUse ISO 3166-1 alpha-2

Next Steps

Ready to integrate?

Get your API key and start building in minutes.

Ready to get started?

Start with our free plan. No credit card required.

We value your privacy

We use cookies to enhance your browsing experience, serve personalized content, and analyze our traffic. By clicking "Accept All", you consent to our use of cookies. Read our Privacy Policy and Cookie Policy for more information.