Prove
Capability: AML / Sanctions / PEP
Market: US
Business Capabilities
Prove provides identity verification and pre-fill services tied to a customer's phone number. The flow authenticates phone possession, retrieves identity data (name, address, SSN, DOB) from authoritative sources, and optionally performs KYC/AML screening via ComplyAdvantage integration.
Flow Overview
The Prove integration follows a four-step flow:
- Start - Initiate the verification flow, obtain a correlation ID and (for mobile) an authentication URL.
- Validate - Submit the phone number for validation. On desktop, triggers an SMS challenge.
- Challenge - User completes possession check (OTP on desktop, redirect on mobile).
- Complete - Finalize the flow: retrieve pre-filled identity data and optional KYC results.
Exposed Endpoints
- Start flow:
POST /api/prove/v1/flow/start - Validate phone:
POST /api/prove/v1/flow/validate - Challenge (OTP):
POST /api/prove/v1/flow/challenge - Complete flow:
POST /api/prove/v1/flow/complete
Vault Configuration
prove.baseUrl- Base URL of the Prove API.prove.clientId- Client ID for OAuth authentication.prove.clientSecret- Client secret for OAuth authentication.prove.complyAdvantage.apiKey- API key for ComplyAdvantage KYC/AML screening (optional).
Request Structures and Samples
1. POST /api/prove/v1/flow/start
Initiates the Prove verification flow. The response includes a correlationId used in subsequent calls.
Request (desktop flow):
{
"flowType": "desktop",
"finalTargetUrl": "https://your-app.com/callback",
"smsDeliveryMode": "text"
}
Request (mobile flow):
{
"flowType": "mobile",
"finalTargetUrl": "https://your-app.com/callback"
}
Sample response (desktop):
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "started",
"flowType": "desktop"
}
Sample response (mobile):
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "started",
"flowType": "mobile",
"authenticationUrl": "https://auth.prove.com/verify?session=abc123"
}
2. POST /api/prove/v1/flow/validate
Submits the phone number for validation. On desktop, this triggers an SMS OTP to the phone.
Request:
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"phoneNumber": "+12025551234"
}
Sample response:
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "validated",
"phoneStatus": "active",
"lineType": "mobile",
"challengeRequired": true
}
3. POST /api/prove/v1/flow/challenge
Completes the possession check. On desktop, the user submits the OTP received via SMS. On mobile, this step is handled via the redirect flow.
Request:
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"otp": "123456"
}
Sample response:
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "challenged",
"possessionVerified": true
}
4. POST /api/prove/v1/flow/complete
Finalizes the verification flow. Returns pre-filled identity data and optionally performs KYC/AML screening.
Request:
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"individual": {
"firstName": "John",
"lastName": "Smith",
"dateOfBirth": "1985-03-15",
"ssn": "123456789",
"address": {
"line1": "123 Main Street",
"city": "New York",
"state": "NY",
"zipCode": "10001"
}
},
"performKyc": true
}
Sample response (with KYC):
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "completed",
"identity": {
"firstName": "John",
"lastName": "Smith",
"dateOfBirth": "1985-03-15",
"ssn": "***-**-6789",
"address": {
"line1": "123 Main Street",
"city": "New York",
"state": "NY",
"zipCode": "10001"
},
"emailAddress": "john.smith@email.com",
"identityVerified": true,
"trustScore": 850
},
"kyc": {
"provider": "ComplyAdvantage",
"status": "clear",
"riskLevel": "low",
"sanctions": {
"matched": false,
"lists": []
},
"pep": {
"matched": false,
"lists": []
},
"adverseMedia": {
"matched": false,
"articles": []
},
"searchRef": "sa-ref-abc123"
}
}
Sample response (without KYC):
{
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "completed",
"identity": {
"firstName": "John",
"lastName": "Smith",
"dateOfBirth": "1985-03-15",
"ssn": "***-**-6789",
"address": {
"line1": "123 Main Street",
"city": "New York",
"state": "NY",
"zipCode": "10001"
},
"emailAddress": "john.smith@email.com",
"identityVerified": true,
"trustScore": 850
}
}
Error Codes
| Code | Description |
|---|---|
| 400 | Bad Request - Invalid or missing parameters. |
| 401 | Unauthorized - Invalid credentials. |
| 404 | Not Found - Correlation ID not found or expired. |
| 422 | Unprocessable Entity - Phone number could not be validated. |
| 500 | Internal Server Error. |