Download OpenAPI specification:
LE-KO Know Your Customer (KYC) verification API for identity verification, document processing, and compliance management.
✨ Initiates a new KYC verification process for a coach
| x-current-user-id required | string <uuid> |
| notes | string <= 500 characters Optional notes for the verification request |
{- "notes": "Initial KYC verification request"
}{- "id": "00000000-0000-1000-9000-55f01dda9dd0",
- "coachId": "00000000-0000-1000-9000-55f01dda9dd0",
- "status": "pending",
- "currentStep": "passport_verification",
- "avatarVerification": {
- "isHuman": true,
- "confidence": 0.95,
- "processedAt": "2024-01-15T10:30:00Z"
}, - "passportVerification": {
- "ocrSuccess": true,
- "passportData": {
- "firstName": "John",
- "lastName": "Doe",
- "passportNumber": "A1234567",
- "dateOfBirth": "1990-01-15",
- "issuedDate": "2030-01-15",
- "placeOfBirth": "New York, USA",
- "middleName": "James",
- "subdivision": "NY"
}, - "processedAt": "2024-01-15T10:35:00Z"
}, - "imageMatchResult": {
- "matchScore": 0.87,
- "isMatched": true,
- "processedAt": "2024-01-15T10:40:00Z"
}, - "createdAt": "2024-01-15T10:00:00Z",
- "updatedAt": "2024-01-15T10:40:00Z"
}✨ List all KYC verifications
| number | integer (PageNumber) >= 0 Default: 0 Example: number=0 Page number |
| limit | integer (Limit) [ 1 .. 100 ] Default: 10 Example: limit=10 Page limit |
| coachId | string <uuid> (CoachId) Example: coachId=00000000-0000-1000-9000-510d9bb07630 Coach ID |
| x-current-user-id required | string <uuid> |
Array of objects | |||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||
| count required | integer (Count) Page entries count | ||||||||||||||||||||||||||
| page required | integer (PageNumber) >= 0 Default: 0 Page number | ||||||||||||||||||||||||||
| limit required | integer (Limit) [ 1 .. 100 ] Default: 10 Page limit | ||||||||||||||||||||||||||
| total required | integer (Total) >= 0 Default: 0 Total count | ||||||||||||||||||||||||||
{- "data": [
- {
- "id": "00000000-0000-1000-9000-55f01dda9dd0",
- "coachId": "00000000-0000-1000-9000-55f01dda9dd0",
- "status": "pending",
- "currentStep": "passport_verification",
- "avatarVerification": {
- "isHuman": true,
- "confidence": 0.95,
- "processedAt": "2024-01-15T10:30:00Z"
}, - "passportVerification": {
- "ocrSuccess": true,
- "passportData": {
- "firstName": "John",
- "lastName": "Doe",
- "passportNumber": "A1234567",
- "dateOfBirth": "1990-01-15",
- "issuedDate": "2030-01-15",
- "placeOfBirth": "New York, USA",
- "middleName": "James",
- "subdivision": "NY"
}, - "processedAt": "2024-01-15T10:35:00Z"
}, - "imageMatchResult": {
- "matchScore": 0.87,
- "isMatched": true,
- "processedAt": "2024-01-15T10:40:00Z"
}, - "createdAt": "2024-01-15T10:00:00Z",
- "updatedAt": "2024-01-15T10:40:00Z"
}
], - "count": 10,
- "page": 0,
- "limit": 10,
- "total": 1000
}✨ Retrieve details of a specific KYC verification
| verificationId required | string <uuid> (VerificationId) Example: 00000000-0000-1000-9000-55f01dda9dd0 ID of the verification to retrieve |
| x-current-user-id required | string <uuid> |
| id required | string <uuid> (VerificationId) KYC verification ID | ||||||||||||||||||||||||||||
| coachId required | string <uuid> (CoachId) Coach ID | ||||||||||||||||||||||||||||
| status required | string (Status) Enum: "pending" "avatar_verified" "passport_verified" "approved" "rejected" "admin_review_required" Current status of the KYC verification process | ||||||||||||||||||||||||||||
| currentStep required | string (VerificationStep) Enum: "initialize" "avatar_verification" "passport_verification" "image_matching" "admin_review" "completed" Current step in the KYC verification process | ||||||||||||||||||||||||||||
object (AvatarVerification) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (PassportVerification) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (ImageMatchResult) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (VerificationFailure) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (AdminApproval) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| notes | string Additional notes or comments | ||||||||||||||||||||||||||||
| createdAt required | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
| updatedAt required | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
| completedAt | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
{- "id": "00000000-0000-1000-9000-55f01dda9dd0",
- "coachId": "00000000-0000-1000-9000-55f01dda9dd0",
- "status": "pending",
- "currentStep": "passport_verification",
- "avatarVerification": {
- "isHuman": true,
- "confidence": 0.95,
- "processedAt": "2024-01-15T10:30:00Z"
}, - "passportVerification": {
- "ocrSuccess": true,
- "passportData": {
- "firstName": "John",
- "lastName": "Doe",
- "passportNumber": "A1234567",
- "dateOfBirth": "1990-01-15",
- "issuedDate": "2030-01-15",
- "placeOfBirth": "New York, USA",
- "middleName": "James",
- "subdivision": "NY"
}, - "processedAt": "2024-01-15T10:35:00Z"
}, - "imageMatchResult": {
- "matchScore": 0.87,
- "isMatched": true,
- "processedAt": "2024-01-15T10:40:00Z"
}, - "createdAt": "2024-01-15T10:00:00Z",
- "updatedAt": "2024-01-15T10:40:00Z"
}✨ Update a specific KYC passport data
| verificationId required | string <uuid> (VerificationId) Example: 00000000-0000-1000-9000-55f01dda9dd0 KYC verification ID |
| x-current-user-id required | string <uuid> |
| firstName required | string <string> (PassportFirstName) First name exactly as in the passport |
| lastName required | string <string> (PassportLastName) Last name exactly as in the passport |
| passportNumber required | string Passport number extracted from passport |
| dateOfBirth required | string <date> (PassportDoB) Date of birth exactly as in the passport in RFC-3339 format (YYYY-MM-DD) |
| issuedDate required | string <date> (Date) Date in RFC-3339 format (YYYY-MM-DD) |
| placeOfBirth required | string Place of birth if available |
| middleName required | string Middle name if available |
| subdivision required | string Subdivision if available |
{- "firstName": "John",
- "lastName": "Doe",
- "passportNumber": "A1234567",
- "dateOfBirth": "1990-01-15",
- "issuedDate": "2030-01-15",
- "placeOfBirth": "New York, USA",
- "middleName": "James",
- "subdivision": "NY"
}{- "errors": [
- {
- "code": "validation",
- "message": "string",
- "endpoint": "string",
- "requestId": "string"
}
]
}✨ Upload an avatar image to verify it contains a human face
| verificationId required | string <uuid> (VerificationId) Example: 00000000-0000-1000-9000-55f01dda9dd0 ID of the verification |
| x-current-user-id required | string <uuid> |
| fileKey required | string (AvatarFileKey) Key to avatar image bytes in S3 |
| id required | string <uuid> (VerificationId) KYC verification ID | ||||||||||||||||||||||||||||
| coachId required | string <uuid> (CoachId) Coach ID | ||||||||||||||||||||||||||||
| status required | string (Status) Enum: "pending" "avatar_verified" "passport_verified" "approved" "rejected" "admin_review_required" Current status of the KYC verification process | ||||||||||||||||||||||||||||
| currentStep required | string (VerificationStep) Enum: "initialize" "avatar_verification" "passport_verification" "image_matching" "admin_review" "completed" Current step in the KYC verification process | ||||||||||||||||||||||||||||
object (AvatarVerification) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (PassportVerification) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (ImageMatchResult) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (VerificationFailure) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (AdminApproval) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| notes | string Additional notes or comments | ||||||||||||||||||||||||||||
| createdAt required | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
| updatedAt required | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
| completedAt | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
{- "fileKey": "some-key"
}{- "id": "00000000-0000-1000-9000-55f01dda9dd0",
- "coachId": "00000000-0000-1000-9000-55f01dda9dd0",
- "status": "pending",
- "currentStep": "passport_verification",
- "avatarVerification": {
- "isHuman": true,
- "confidence": 0.95,
- "processedAt": "2024-01-15T10:30:00Z"
}, - "passportVerification": {
- "ocrSuccess": true,
- "passportData": {
- "firstName": "John",
- "lastName": "Doe",
- "passportNumber": "A1234567",
- "dateOfBirth": "1990-01-15",
- "issuedDate": "2030-01-15",
- "placeOfBirth": "New York, USA",
- "middleName": "James",
- "subdivision": "NY"
}, - "processedAt": "2024-01-15T10:35:00Z"
}, - "imageMatchResult": {
- "matchScore": 0.87,
- "isMatched": true,
- "processedAt": "2024-01-15T10:40:00Z"
}, - "createdAt": "2024-01-15T10:00:00Z",
- "updatedAt": "2024-01-15T10:40:00Z"
}✨ Upload a passport image for OCR text extraction and verification
| verificationId required | string <uuid> (VerificationId) Example: 00000000-0000-1000-9000-55f01dda9dd0 ID of the verification |
| x-current-user-id required | string <uuid> |
| fileKey required | string (PassportFileKey) Key to passport image bytes in S3 |
| id required | string <uuid> (VerificationId) KYC verification ID | ||||||||||||||||||||||||||||
| coachId required | string <uuid> (CoachId) Coach ID | ||||||||||||||||||||||||||||
| status required | string (Status) Enum: "pending" "avatar_verified" "passport_verified" "approved" "rejected" "admin_review_required" Current status of the KYC verification process | ||||||||||||||||||||||||||||
| currentStep required | string (VerificationStep) Enum: "initialize" "avatar_verification" "passport_verification" "image_matching" "admin_review" "completed" Current step in the KYC verification process | ||||||||||||||||||||||||||||
object (AvatarVerification) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (PassportVerification) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (ImageMatchResult) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (VerificationFailure) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (AdminApproval) | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| notes | string Additional notes or comments | ||||||||||||||||||||||||||||
| createdAt required | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
| updatedAt required | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
| completedAt | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||||||||||||
{- "fileKey": "some-key"
}{- "id": "00000000-0000-1000-9000-55f01dda9dd0",
- "coachId": "00000000-0000-1000-9000-55f01dda9dd0",
- "status": "pending",
- "currentStep": "passport_verification",
- "avatarVerification": {
- "isHuman": true,
- "confidence": 0.95,
- "processedAt": "2024-01-15T10:30:00Z"
}, - "passportVerification": {
- "ocrSuccess": true,
- "passportData": {
- "firstName": "John",
- "lastName": "Doe",
- "passportNumber": "A1234567",
- "dateOfBirth": "1990-01-15",
- "issuedDate": "2030-01-15",
- "placeOfBirth": "New York, USA",
- "middleName": "James",
- "subdivision": "NY"
}, - "processedAt": "2024-01-15T10:35:00Z"
}, - "imageMatchResult": {
- "matchScore": 0.87,
- "isMatched": true,
- "processedAt": "2024-01-15T10:40:00Z"
}, - "createdAt": "2024-01-15T10:00:00Z",
- "updatedAt": "2024-01-15T10:40:00Z"
}✨ Get the current status and progress of a recent KYC verification for the current user
| x-current-user-id required | string <uuid> |
| id required | string <uuid> (VerificationId) KYC verification ID | ||||||||||||||||||
| status required | string (Status) Enum: "pending" "avatar_verified" "passport_verified" "approved" "rejected" "admin_review_required" Current status of the KYC verification process | ||||||||||||||||||
| currentStep required | string (VerificationStep) Enum: "initialize" "avatar_verification" "passport_verification" "image_matching" "admin_review" "completed" Current step in the KYC verification process | ||||||||||||||||||
required | object | ||||||||||||||||||
| |||||||||||||||||||
| nextStep | string (VerificationStep) Enum: "initialize" "avatar_verification" "passport_verification" "image_matching" "admin_review" "completed" Current step in the KYC verification process | ||||||||||||||||||
| createdAt | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||
| updatedAt | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||
{- "id": "00000000-0000-1000-9000-55f01dda9dd0",
- "status": "pending",
- "currentStep": "avatar_verification",
- "progress": {
- "avatarVerified": {
- "success": true,
- "attempts": 0
}, - "passportVerified": {
- "success": true,
- "attempts": 0
}, - "imagesMatched": true
}, - "nextStep": "avatar_verification",
- "createdAt": "2024-11-29T12:09:53+00:00",
- "updatedAt": "2024-11-29T12:09:53+00:00"
}✨ Admin endpoint to approve or reject a KYC verification
| verificationId required | string <uuid> (VerificationId) Example: 00000000-0000-1000-9000-55f01dda9dd0 KYC verification ID |
| x-current-user-id required | string <uuid> |
| approved required | boolean Whether the verification is approved |
| reason | string Enum: "document_unclear" "identity_mismatch" "fake_document" "insufficient_quality" "inappropriate_content" Reason for rejection |
| notes | string <= 500 characters Optional notes for the approval |
| reviewerId | string ID of the admin who approved |
| id required | string <uuid> (VerificationId) KYC verification ID | ||||||||||||||||||
| status required | string (Status) Enum: "pending" "avatar_verified" "passport_verified" "approved" "rejected" "admin_review_required" Current status of the KYC verification process | ||||||||||||||||||
| currentStep required | string (VerificationStep) Enum: "initialize" "avatar_verification" "passport_verification" "image_matching" "admin_review" "completed" Current step in the KYC verification process | ||||||||||||||||||
required | object | ||||||||||||||||||
| |||||||||||||||||||
| nextStep | string (VerificationStep) Enum: "initialize" "avatar_verification" "passport_verification" "image_matching" "admin_review" "completed" Current step in the KYC verification process | ||||||||||||||||||
| createdAt | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||
| updatedAt | string <date-time> (DateTime) Date and time in RFC-3339 | ||||||||||||||||||
{- "approved": true,
- "notes": "All documents verified successfully",
- "reviewerId": "admin-123"
}{- "id": "00000000-0000-1000-9000-55f01dda9dd0",
- "status": "pending",
- "currentStep": "avatar_verification",
- "progress": {
- "avatarVerified": {
- "success": true,
- "attempts": 0
}, - "passportVerified": {
- "success": true,
- "attempts": 0
}, - "imagesMatched": true
}, - "nextStep": "avatar_verification",
- "createdAt": "2024-11-29T12:09:53+00:00",
- "updatedAt": "2024-11-29T12:09:53+00:00"
}