How it works
- Render the widget (
ID Verify
) in your form using a Publishable Key. - End-user captures photos (front, back, selfie – optional) or uploads images/PDF.
- Widget
POST
s to/api/v1/embedded/actions
with:publishableKey
- actionType
id_verification
- opaque actionToken (encrypted file bundle)
- developer-supplied metadata (
userId
,loanAppId
, …)
- OmniAI checks document authenticity, runs OCR + facial match (if selfie), and parses the ID fields.
- Your backend receives a webhook / REST callback with normalized ID data, validation results, raw OCR, and any errors.

Quick start
Widget configuration (OmniEmbedded.mount
)
Option | Type / Example | Default | Description |
---|---|---|---|
action | "id" | — | Required. Renders the ID-verification UI. |
publishableKey | "pk_live_…" | — | Required. |
requireSelfie | true | false | false | Capture a selfie and perform face-match when true . |
documentTypes | ["license","passport"] | ["license","passport","state_id"] | Restrict acceptable ID types. |
metadata | { userId: "usr_123", … } | {} | Echoed back in webhook (≤ 2 KB). |
environment | "sandbox" | "live" | "live" | Route calls to sandbox or production. |
onComplete | function(result){ … } | — | Fires when OmniAI accepts the action ({ actionId, type } ). |
onExit | function(info){ … } | — | Fires if the user closes the widget. |
onChange | function(event){ … } | null | Streams every interaction (stage , detail , timestamp ). |
Webhook / REST callback – ID Verification payload
Validation logic
Check | Default rule |
---|---|
Authenticity | Hologram, MRZ, barcode integrity & tamper detection |
Expiration | Document must be valid on processing date |
Face match (optional) | faceMatchScore ≥ 0.80 and liveness passed |
Jurisdiction block-list | Configure in Dashboard → ID Verify → Rules |
Error handling
Scenario | status | Example errors[0].code | Next step |
---|---|---|---|
ID photo too blurry | completed | ID_IMAGE_BLURRY | Re-prompt user to recapture |
Document expired | completed | ID_EXPIRED | Ask for a valid ID |
Face mismatch (selfie vs ID) | errored | FACE_MISMATCH | Retry capture or send to manual review |
User cancels capture | accepted | — | No retry unless user reopens the widget |