Skip to content

In-Person

The strongest verification mode. Combines a NIN lookup with a biometric face match against a freshly-captured selfie of the holder.

POST/verify-nin/in-person

FieldTypeRequiredNotes
ninstring✅Exactly 11 digits
selfie_imagestring✅Base64-encoded JPEG of a live selfie (no data:image/jpeg;base64, prefix)
reasonstring✅A key from /nimc-reasons
Terminal window
# Base64-encode the JPEG without newlines
SELFIE_B64=$(base64 < selfie.jpg | tr -d '\n')
curl -X POST https://api.randaverify.com/v1/verify-nin/in-person \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg nin '12345678901' --arg img "$SELFIE_B64" --arg reason 'corporate' \
'{nin:$nin, selfie_image:$img, reason:$reason}')"

Returns the standard normalised record. NIMC’s match score is reflected in the underlying response and surfaced via the data.status / data.message fields when relevant, a 200 from this endpoint already implies the match succeeded above NIMC’s threshold.

StatusWhenRecover by
400NIN invalid, selfie unreadable, or match score below thresholdRe-capture the selfie in better lighting; ensure the NIN matches the person in the photo.
402Org wallet emptyTop up.
500Upstream face-match service unreachableRetry with backoff.

Charged 1 unit on success, same as standard verification. A no-match answer about the NIN itself (Invalid NIN, Suspended NIN, Record not found, or a NIN restricted by its holder) is also charged. Errors and outages are not. See Wallet & units.