PII inquiry with OTP
The same inquiry, with phone-number ownership proven by a one-time password
This is the same PII inquiry as PII inquiry without OTP, with one extra call in front of it: you send an OTP to the phone number, the user reads it back, and you pass it along with the inquiry. That proves the person in front of you actually controls the number being validated.
Use this variant when phone-ownership matters — onboarding a new customer, or any flow where the phone number has not already been verified elsewhere in your product.
Same endpoints, same response. The OTP variant adds one preceding call and two request fields: otpRequestId and otpCode.
The flow
otpRequestId and otpCode travel together. Send both, or send neither and use the no-OTP variant. Sending only one is rejected.
Step 1 — Request the OTP
POST /api/FRAServices/RequestOtpForPii
cURL
smsProviders takes the same values as the rest of the API: 1 Infobip, 2 Vodafone, 3 Cequens, 4 Victory Link, 5 BroadNet, 6 Ezagel, 7 Orange. Existing callers that omit the field are unaffected.
Keep the otpRequestId — you echo it back on the inquiry call.
Step 2 — Submit the inquiry
Pick the endpoint that matches what you hold.
With ID images
POST /api/FRAServices/PersonallyIdentifiableInformation
cURL
With the ID as one PDF
POST /api/FRAServices/PersonallyIdentifiableInformationPdf
cURL
See Submit the ID as one PDF for the optional fields.
With an existing transaction
POST /api/FRAServices/CheckIdAndFRAByTransaction
cURL
Response
Identical to the no-OTP variant — see Response for the full payload and every field.
Errors
A failed OTP check and a failed ID image both return HTTP 400, with the case in error_code.
OTP not verified
ID image validation failed
Applies to PersonallyIdentifiableInformation and CheckIdAndFRAByTransaction. The failing fields come back in data.validation_errors.
See Error codes for the full list.

