Client-Only Verification
Perform lite screening checks when the consumer is not in the flow. The client provides all subject data, and the check completes within seconds.
Overview
Use Case: Verify individuals when they cannot use the consumer mobile app, or when you already have their information and just need screening results.
Key Features:
- AML screening (sanctions/PEP checks)
- Optional address verification
- Optional CCJ/Insolvency check (UK only)
- Optional ongoing monitoring
- Completes in seconds (no consumer interaction required)
Subject Type: Individual
Template ID: checkTemplates/clientonly-verification-check-v1-0-0
When to Use This Check
✅ Good for:
- Quick screening of clients or counterparties
- Situations where the consumer cannot access the mobile app
- Batch processing of existing client data
- Ongoing monitoring of existing relationships
❌ Not suitable for:
- Full identity verification with document checks (use Identity Verification instead)
- Source of funds verification (use Source of Funds instead)
- Business verification (use KYB Verification instead)
Prerequisites
- Thirdfort account with API access
- Client credentials (Client ID and Secret)
- Subject data: Name, date of birth (optional but recommended), address
- Package support: Ongoing monitoring requires package support (if enabled)
Parameters Reference
Required Parameters
| Parameter | Type | Description |
|---|---|---|
displayName | string | Human-readable name for the check |
clientReference | string | Your own reference ID for tracking |
template | string | Must be checkTemplates/clientonly-verification-check-v1-0-0 |
params.@type | string | Must be type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams |
params.subject.givenName | string | First name of the individual |
params.subject.familyName | string | Last name of the individual |
params.address | Address | Residential address of the individual |
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
params.subject.otherNames | string | - | Middle names |
params.subject.dateOfBirth | Date | - | Date of birth (structured object: {year, month, day}, recommended for better screening accuracy) |
params.subject.yearOfBirth | uint32 | - | Year of birth (alternative to full date) |
params.enableOngoingMonitoring | bool | false | Continuous AML screening monitoring |
params.requireAddressVerification | bool | false | Electronic address matching & verification |
params.requireCcjInsolvency | bool | false | Surface CCJs or insolvency indicators on an individual (UK addresses only) |
params.internationalAddressVerificationConsent | bool | false | Required for non-UK addresses if address verification is enabled |
Output-Only Fields
| Field | Description |
|---|---|
params.screeningSettings | Auto-populated from organization/team settings - cannot be set by client |
Address Format
The address field uses the following structure (camelCase in JSON):
{
"buildingNumber": "10",
"street": "Downing Street",
"locality": "London",
"postalCode": "SW1A 2AA",
"countryCode": "GBR"
}
Required fields:
buildingNumberorbuildingNamestreetlocalitypostalCodecountryCode(ISO 3166-1 alpha-3 code, e.g.,"GBR","USA")
Optional fields:
subBuildingbuildingNamesubLocalityadministrativeArea
Complete Example
Create Check Request
curl -X POST "https://api.thirdfort.dev/client/api/v1/organizations/{org_id}/teams/{team_id}/checks" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"displayName": "Client-only verification for John Smith",
"clientReference": "client-12345",
"template": "checkTemplates/clientonly-verification-check-v1-0-0",
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": {
"givenName": "John",
"familyName": "Smith",
"dateOfBirth": {
"year": 1985,
"month": 6,
"day": 15
}
},
"address": {
"buildingNumber": "123",
"street": "High Street",
"locality": "London",
"postalCode": "SW1A 1AA",
"countryCode": "GBR"
},
"enableOngoingMonitoring": true,
"requireAddressVerification": true
}
}'
Note: The endpoint includes the parent (team) in the URL path. Replace {org_id} and {team_id} with your actual organization and team IDs.
Response
{
"name": "organizations/NT6bqXp6k47SbagGAUHHG7/teams/gZzg3caveKLhe3VXjRiyXL/checks/eaa99a49-7c7c-43e0-a929-ec2dddec8a85",
"displayName": "Client-only verification for John Smith",
"clientReference": "client-12345",
"state": "ACTIVE",
"createTime": "2026-03-06T14:06:59.758655Z",
"updateTime": null,
"template": "checkTemplates/clientonly-verification-check-v1-0-0",
"params": { ... },
"relatedSubjects": [ ... ],
"creator": "partners/thirdfort/integrations/4",
"ongoingMonitoring": {
"enabled": true,
"activeUntil": null
},
...
}
Key Response Fields:
name- Resource name of the check (use for subsequent API calls)state- Current check state (see Check States below)ongoingMonitoring.enabled- Confirms ongoing monitoring is active
The check will complete within seconds and transition to INACTIVE state.
Check States
ACTIVE: The check is actively processing or waiting for dataINACTIVE: The check has completed its current processing cycle and results are availableCANCELLED: The check has been permanently cancelledDELETED: The check has been soft-deleted
For client-only checks: Checks typically move from ACTIVE to INACTIVE within seconds once processing completes.
Understanding Results
Get Check Summary
curl -X GET "https://api.thirdfort.dev/client/api/v1/organizations/{org_id}/teams/{team_id}/checks/{check_id}/checkSummary" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Note: The endpoint is /checkSummary (camelCase), not /summary.
Summary Response
{
"name": "organizations/.../teams/.../checks/.../checkSummary",
"createTime": "2026-03-06T14:07:00.537001Z",
"payload": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckSummary",
"overallRecommendation": {
"recommendation": "CONSIDER",
"description": "One or more items require consideration"
},
"screeningCheckResult": { ... },
"addressVerificationCheckResult": { ... },
"ccjInsolvencyCheckResult": null,
"providedSubjectData": { ... }
},
"sourceFindings": [ ... ],
"reportUrl": "https://files.thirdfort.dev/client/downloads/objects/6ff46f10-ae87-42e6-8601-1f0c32ed5ba6",
"summaryReportUrl": "https://files.thirdfort.dev/client/downloads/objects/8df632f9-e3f9-4e9e-88aa-ca449debf3b8"
}
Result Fields
| Field | Description |
|---|---|
payload.overallRecommendation | Overall check recommendation object with recommendation and description |
payload.screeningCheckResult | AML screening results (sanctions/PEP) - always included |
payload.addressVerificationCheckResult | Address verification results - only if requireAddressVerification: true |
payload.ccjInsolvencyCheckResult | CCJ/Insolvency results - only if requireCcjInsolvency: true and UK address |
payload.providedSubjectData | Echo of the subject data you provided |
reportUrl | Download link for full PDF report (top-level field) |
summaryReportUrl | Download link for summary PDF report (top-level field) |
sourceFindings | Array of finding resource names that contributed to this summary |
Recommendation Values
CLEAR: No concerning issues found - proceed with confidenceCONSIDER: Anomalies detected that may be explainable - review findingsFAIL: Serious anomalies detected, unlikely explainable - high risk
Findings
If the check identifies specific issues (e.g., sanctions matches), retrieve detailed findings:
curl -X GET "https://api.thirdfort.dev/client/api/v1/organizations/{org_id}/teams/{team_id}/checks/{check_id}/findings" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response:
{
"findings": [
{
"name": "organizations/.../teams/.../checks/.../findings/KB6J4BVVVWNH3J6",
"displayName": "John A. Smith",
"state": "UNREVIEWED",
"payload": { ... },
"sources": ["ComplyAdvantage"],
"createTime": "2026-03-06T14:07:00.516804Z"
}
],
"nextPageToken": ""
}
Finding States:
UNREVIEWED- Not yet reviewedDISMISSED- Reviewed and determined not relevantCONFIRMED- Reviewed and confirmed as relevantRETRACTED_BY_PROVIDER- Provider retracted the finding
Downloading PDF Reports
Download PDF reports using the URLs from the summary:
# Download full PDF report
curl -X GET "https://files.thirdfort.dev/client/downloads/objects/6ff46f10-ae87-42e6-8601-1f0c32ed5ba6" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o report.pdf
# Download summary PDF report
curl -X GET "https://files.thirdfort.dev/client/downloads/objects/8df632f9-e3f9-4e9e-88aa-ca449debf3b8" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o summary-report.pdf
Note:
- PDF downloads require the same OAuth 2.0 access token used for API calls
- Use the complete URLs from
reportUrlandsummaryReportUrlfields directly - URLs include
/objects/in the path
Common Configurations
Basic Screening Only
Minimal configuration for quick AML screening:
{
"displayName": "Basic screening for John Smith",
"clientReference": "client-12345",
"template": "checkTemplates/clientonly-verification-check-v1-0-0",
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": {
"givenName": "John",
"familyName": "Smith",
"dateOfBirth": {
"year": 1985,
"month": 6,
"day": 15
}
},
"address": {
"buildingNumber": "123",
"street": "High Street",
"locality": "London",
"postalCode": "SW1A 1AA",
"countryCode": "GBR"
}
}
}
With Ongoing Monitoring
Enable continuous sanctions monitoring:
{
"displayName": "Screening with ongoing monitoring",
"clientReference": "client-12345",
"template": "checkTemplates/clientonly-verification-check-v1-0-0",
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": { ... },
"address": { ... },
"enableOngoingMonitoring": true
}
}
Note: Requires your organization package to support ongoing monitoring.
With Address Verification
Verify the provided address:
{
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": { ... },
"address": { ... },
"requireAddressVerification": true
}
}
With CCJ/Insolvency Check (UK Only)
Check for County Court Judgments and insolvency:
{
"params": {
"@type": "type.googleapis.com/thirdfort.client.checks.type.v1.ClientOnlyVerificationCheckParams",
"subject": { ... },
"address": {
"countryCode": "GBR",
...
},
"requireCcjInsolvency": true
}
}
Note: Only available for UK addresses (countryCode: "GBR").
Best Practices
Date of Birth
Always provide dateOfBirth when available for better screening accuracy:
{
"subject": {
"givenName": "John",
"familyName": "Smith",
"dateOfBirth": {
"year": 1985,
"month": 6,
"day": 15
}
}
}
If only the year is known, use yearOfBirth:
{
"subject": {
"givenName": "John",
"familyName": "Smith",
"yearOfBirth": 1985
}
}
Address Quality
Provide complete, accurate addresses for best results:
✅ Good:
{
"buildingNumber": "123",
"street": "High Street",
"locality": "London",
"postalCode": "SW1A 1AA",
"countryCode": "GBR"
}
❌ Poor:
{
"buildingNumber": "123",
"street": "High St",
"locality": "London",
"countryCode": "GBR"
}
Ongoing Monitoring
Enable ongoing monitoring for long-term relationships:
- Continuously monitors for new sanctions/PEP listings
- Automatically creates findings when matches are detected
- Requires package support - contact api@thirdfort.com to enable
Troubleshooting
Common Issues
400 Bad Request - "field required"
- Ensure
displayNameandclientReferenceare included - Verify
@typefield is present inparams - Check that
dateOfBirthuses structured object format (not string)
400 Bad Request - "invalid date"
- Use structured date format:
{year: 1985, month: 6, day: 15} - Don't use string format like
"1985-06-15"
404 Not Found
- Verify the endpoint includes parent in URL:
/v1/{parent}/checks - Check that organization and team IDs are correct
- Ensure endpoint is
/checkSummarynot/summary
Check stays in ACTIVE state
- Client-only checks should complete within seconds
- If stuck, contact support with the check ID