This page documents the JavaScript API of the Incode Web SDK. The SDK is initialized by calling create, which returns an incode instance that exposes all SDK methods.
create
Initializes the SDK and returns an incode instance. Call this before any other SDK methods.
const onBoarding = OnBoarding.create({
apiURL: "YOUR_API_URL",
lang: "en",
});
Parameters:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
apiKey |
String | No | API key provided by Incode. | |
apiURL |
String | Yes | API URL provided by Incode. | |
lang |
String | No | Language code, such as en or es. |
|
encrypt |
Boolean | No | false |
Enables encryption. |
translations |
Object | No | Custom translations object. Contact Incode support for the required structure. | |
opencvURL |
String | No | Custom URL for the OpenCV library. | |
facefinderURL |
String | No | Custom URL for the face finder library. | |
darkMode |
Boolean | No | false |
Shows dark variants for all tutorials. |
fingerprintApiKey |
String | No | Fingerprint API key. | |
useSha256 |
Boolean | No | Enables SHA-256 encryption. |
Returns: The SDK instance (incode object).
initialize
Required beginning with version 1.83.0.
Ensures proper loading of the Web SDK, including the correct translation loading order. Call this after create.
const Onboarding = await create({
apiURL: apiURL,
translations: en,
});
await Onboarding.initialize();
isDesktop
Returns true if the user is on a desktop or laptop. Returns false if they are using a mobile device. Use this to conditionally render desktop or mobile flows.
if (onBoarding.isDesktop()) {
onBoarding.renderRedirectToMobile(containerRef.current, { ... });
} else {
renderFrontId();
}
renderRedirectToMobile
Renders the Redirect to Mobile component. This prompts desktop users to continue on their mobile phone.
onBoarding.renderRedirectToMobile(containerRef.current, {
session: session,
flowId: flowId,
onSuccess: () => renderFinishScreen(),
});
Options:
| Name | Type | Required | Description |
|---|---|---|---|
session |
Object | Yes | Session object from createSession. |
flowId |
String | No | ID of the flow to use on mobile. |
onSuccess |
Function | Yes | Callback when mobile onboarding completes. |
url |
String | No | URL to redirect to. |
showSms |
Boolean | No | Shows the SMS component. |
allowReEnrollment |
Boolean | No | Allows user re-enrollment. |
externalId |
String | No | External ID to add to the URL. |
assets |
Object | No | Assets from Dashboard. |
expired |
Boolean | No | Indicates if the session expired. |
smsText |
String | No | Custom SMS text. The URL is added after this text. |
renderCombinedConsent
Renders a combined consent interface configured in Dashboard.
renderCombinedConsent(consentElement, {
token: session,
onSuccess: () => console.log("Consent given"),
consentId: "someConsentId",
});
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
element |
HTMLElement | Yes | DOM element to render into. |
consentId |
String | Yes | ID of a consent configured in Dashboard. |
token |
Object | Yes | Session object from createSession. |
onSuccess |
Function | Yes | Callback when consent is given. |
sendGeolocation
Requests the user's coordinates and sends them to the session.
onBoarding.sendGeolocation({ token }).then((res) => res);
Parameters:
| Name | Type | Description |
|---|---|---|
token |
String | Session access token. |
Returns: { "location": "City, Country" }
sendFingerprint
Sends device and browser information for the session. This includes browser version, device model, OS, SDK version, and IP address.
onBoarding.sendFingerprint({ token: session.token }).then((response) => {
console.log(response.success);
});
Parameters:
| Name | Type | Description |
|---|---|---|
token |
String | Session access token. |
Returns: { success: boolean, sessionStatus: string }
renderCaptureId
Introduced in version 1.80.0.
Initializes and renders the ID Capture module. This includes the document type selector, capture tutorials, and capture UI for both double-sided and single-sided documents, such as driver's licenses and passports. renderCaptureId captures both sides of double-sided documents in a single call.
Most module options—such as capture attempts, manual capture timeout, and tutorials—are configured in Dashboard, not in code.
const { close } = renderCaptureId(myElement, {
session: { token: 'YOUR_TOKEN' },
onSuccess: () => console.log('ID capture successful'),
onError: (error) => console.error('ID capture failed:', error),
});
Props:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
session |
Object | Yes | Session object containing token. |
|
onSuccess |
Function | Yes | Callback after ID Capture completes. The component is unmounted before this is called. | |
onError |
Function | Yes | Callback if an error occurs. Receives an IdError object or a standard Error. |
|
forceIdV2 |
Boolean | No | false |
Forces the ID Capture v2 experience. |
captureOnly |
Boolean | No | false |
Forces capture-only mode: local capture, no upload. |
Returns: { close: function }. Call close() to unmount the component.
Error codes (IdError.code):
| Code | Description |
|---|---|
NO_MORE_TRIES |
User reached the maximum number of attempts. |
PERMISSION_DENIED |
User denied camera permissions. |
PERMISSION_REFRESH |
Camera permissions changed. A page refresh is required. |
MODULE_NOT_FOUND |
Flow config does not include ID Capture. |
WEBCAM_ERROR |
Camera failed to initialize or was not found. |
FETCH_FLOW_ERROR |
Failed to fetch module configuration. |
USER_CANCELED |
User cancelled the capture. |
UNKOWN_ERROR |
Unknown error. |
renderCaptureFace
Introduced in version 1.81.0.
Initializes and renders the Face Capture module.
Note
Starting in version 1.83.0, processFace is no longer called automatically at the end of renderCaptureFace. You must call it explicitly.
const { close } = renderCaptureFace(container, {
session: { token: 'YOUR_TOKEN' },
onSuccess: (response) => console.log('Face capture successful', response),
onError: (error) => console.error('Face capture failed:', error.message),
});
Props:
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
session |
Object | Yes | Session object containing token |
|
onSuccess |
Function | Yes | Callback after successful capture. The component is unmounted first. | |
onError |
Function | Yes | Callback if an error occurs. Receives a FaceError object or a standard Error. |
|
forceV2 |
Boolean | No | false |
Forces the Face Capture v2 experience. |
captureOnly |
Boolean | No | false |
Forces capture-only mode: local capture, no upload. |
Returns: { close: function }. Call close() to unmount the component.
Error codes (FaceError.code):
| Code | Description |
|---|---|
NO_MORE_TRIES |
User reached the maximum number of attempts. |
PERMISSION_DENIED |
User denied camera permissions. |
PERMISSION_REFRESH |
Camera permissions changed. A page refresh is required. |
MODULE_NOT_FOUND |
Flow config does not include Face Capture. |
WEBCAM_ERROR |
Camera failed to initialize or was not found. |
FETCH_FLOW_ERROR |
Failed to fetch module configuration. |
USER_CANCELED |
User canceled the capture. |
NONEXISTENT_CUSTOMER |
(renderAuthFace only) Hint doesn't match any customer. |
HINT_NOT_PROVIDED |
(renderAuthFace only) Customer identity hint not provided. |
UNKOWN_ERROR |
Unhandled server-side exception. |
renderDocumentSelector
Renders a Document Selector in a given container. Accepts the same parameters as renderCamera, excluding type.
renderDocumentSelector(element, {
onSuccess: () => { /* success handler */ },
onError: () => { /* error handler */ },
});
Key Options:
| Name | Type | Default | Description |
|---|---|---|---|
onSuccess |
Function | Callback when selection is successful. | |
onError |
Function | Callback when an error occurs. | |
token |
Object | Session token. | |
numberOfTries |
Number | 3 |
Number of allowed attempts. |
timeout |
Number | 40000 |
Timeout in milliseconds. |
showTutorial |
Boolean | false |
Shows a tutorial. |
nativeCamera |
Boolean | false |
Uses the native camera; this allows PDF or image upload. |
sendBase64 |
Boolean | true |
Send the image as base64. |
fullScreen |
Boolean | true |
Enables full-screen mode. |
disableFullScreen |
Boolean | false |
Uses container width and height instead of full screen. |
scanPdf417 |
Boolean | false |
Scans for PDF417 barcodes. |
isSecondId |
Boolean | false |
Indicates this is a second ID. |
renderCamera
For new integrations, use
renderCaptureIdandrenderCaptureFaceinstead.
Enables the device camera to capture an ID, selfie, or proof of address document.
incode.renderCamera("front", container, {
onSuccess: myCallback,
onError: console.log,
numberOfTries: 3,
token: session.token,
});
Type Values (Capture Modes):
| Value | Description |
|---|---|
front |
Front side of ID |
back |
Back side of ID |
selfie |
Face capture |
document |
Proof of address capture |
passport |
Passport photo page |
processCarInvoice |
Mexican car invoice |
processCirculationCard |
Mexican circulation card |
Key Options:
| Name | Type | Default | Description |
|---|---|---|---|
onSuccess |
Function | Callback after successful capture. | |
onError |
Function | Callback when the maximum number of tries is reached. | |
token |
Object | Session object. | |
numberOfTries |
Number | Number of allowed capture attempts. Minimum: 1. |
|
timeout |
Number | Milliseconds before enabling manual capture. | |
showTutorial |
Boolean | false |
Shows a capture tutorial. |
nativeCamera |
Boolean | Uses the rear camera and allows PDF or image upload (document mode only). |
|
assistedOnboarding |
Boolean | Uses the rear camera for selfie. For assisted capture. | |
isRecordingEnabled |
Boolean | false |
Records the capture session. |
showCustomCameraPermissionScreen |
Boolean | Shows custom permission instructions when camera access is denied. | |
hatCheckEnabled |
Boolean | Checks for hats. | |
lensesCheckEnabled |
Boolean | Checks for lenses. | |
maskCheckEnabled |
Boolean | Checks for face masks. | |
eyesClosedCheckEnabled |
Boolean | Checks for closed eyes. |
Returns: { close: function }. Call close() to unmount the component.
processId
Processes the uploaded ID document. Runs Incode's validations, tests, and OCR parsing. Call this after both the front and back uploads are complete. After calling this, the user cannot upload the ID again.
const response = await onBoarding.processId({ token });
Returns: { success: true }
processFace
Processes the selfie after the user uploads both their selfie and the front of their ID.
const response = await onBoarding.processFace({ token });
Returns:
| Field | Type | Description |
|---|---|---|
confidence |
Nnumber | Face recognition confidence score from 0 to 1. |
existingUser |
Boolean | Whether the user is already enrolled. |
renderVideoSelfie
Renders the Video Selfie module. The user takes a selfie, shows their ID, answers questions, and confirms acceptance.
Note: Localization is not supported for the Video Selfie module. You must set a fixed language during session creation using
{"language": "en-US"}.
onBoarding.renderVideoSelfie(
container,
{
token: session,
showTutorial: true,
modules: ["front", "back", "speech", "selfie"],
speechToTextCheck: true,
},
{
onSuccess: () => alert("speech detected"),
onError: () => alert("speech not detected"),
numberOfTries: 3,
}
);
Options:
| Name | Type | Default | Description |
|---|---|---|---|
token |
Object | Session object (required). | |
showTutorial |
Boolean | false |
Shows a tutorial. |
modules |
Array | all | Modules to include: selfie, front, back, poa, questions, and speech. |
speechToTextCheck |
Boolean | true |
Performs a speech-to-text check. |
performLiveness |
Boolean | false |
Enables liveness check. |
videoSelfieAsSelfie |
Boolean | Uses the video selfie image for face check instead of the selfie. | |
compareOCREnabled |
Boolean | false |
Enables front OCR check. |
compareIDEnabled |
Boolean | true |
Enables front ID check. |
questionsCount |
Number | 3 |
Number of questions. |
hatCheckEnabled |
Boolean | Checks for hats. | |
lensesCheckEnabled |
Boolean | Checks for lenses. | |
maskCheckEnabled |
Boolean | Checks for face masks. | |
eyesClosedCheckEnabled |
Boolean | Checks for closed eyes. |
renderConference
Renders the Video Conference module.
onBoarding.renderConference(
container,
{ token: token, showOTP: false },
{
onSuccess: (status) => {
// status: 'close', 'deny', or 'approve'
},
}
);
Options:
| Name | Type | Default | Description |
|---|---|---|---|
token |
Object | Session object (required). | |
showOTP |
Boolean | Shows the OTP screen before the conference. | |
numberOfTries |
Number | 3 |
Number of OTP attempts allowed. Pass -1 for no limit. |
queue |
String | '' |
Conference queue. |
Callbacks: onSuccess(status), onError, onConnect, onLog
renderAuthFace
Available from SDK version 1.84.0. Replaces the deprecated
renderLogin.
Renders the Face Authentication UI. Supports 1:1 and 1:N authentication modes.
IncodeSDK.renderAuthFace(container, {
session: session,
authHint: 'customer-uuid-12345', // omit for 1:N
onSuccess: mySuccessCallbackFn,
onError: myErrorCallbackFn,
});
Options:
| Name | Type | Description |
|---|---|---|
session |
object | Session object (required) |
authHint |
string | Customer UUID for 1:1 authentication. Omit for 1:N |
onSuccess |
function | Callback after successful capture |
onError |
function | Callback after max capture attempts reached |
renderLogin
Deprecated. Use
renderAuthFaceinstead.
renderEnterCurp
Renders the CURP entry and validation component (Mexico only).
incode.renderEnterCurp(document.getElementById('app'), {
token: session.token,
onSuccess: console.log,
onError: console.log,
});
renderSignature
Renders the Signature component for digital signature capture.
onBoarding.renderSignature(document.getElementById("app"), {
token: session.token,
onSuccess: console.log,
onError: console.log,
});
Options:
| Name | Type | Description |
|---|---|---|
token |
string | Session token (required) |
onSuccess |
function | Callback when signature upload succeeds |
onError |
function | Callback when signature upload fails |
type |
string | Signature type (for contract signing) |
initials |
boolean | If true, capture initials instead of full signature |
title |
jsx | Title element |
subtitle |
jsx | Subtitle element |
canvasBackgroundColor |
string | Canvas background color. Default: #fff |
canvasBorderColor |
string | Canvas border color. Default: #20263d |
penColor |
string | Pen color. Default: #20263d |
addPhone
Adds a phone number to the current session. Throws an error if a customer with that phone number already exists.
onBoarding.addPhone({ token, phone }).then((res) => res);
Returns: { success: true }
addCustomFields
Adds custom fields to the current onboarding session.
incode.addCustomFields({
token: session.token,
fields: { watchlistName: name },
});
Returns: { success: true }
renderBiometricConsent
Renders the biometric consent screen. Should be shown as the first screen if createSession returns showMandatoryConsent: true.
incode.renderBiometricConsent(document.getElementById("app"), {
token: session,
onSuccess: console.log,
onCancel: console.log,
regulationType: "US_Illinois",
});
Options:
| Name | Type | Description |
|---|---|---|
token |
object | Session object from createSession |
onSuccess |
function | Callback after consent is given |
onCancel |
function | Callback after consent is cancelled |
regulationType |
string | State string from createSession. Values: US_California, US_Texas, US_Illinois, US_Washington |
renderMlConsent
Renders the ML Consent component.
onBoarding.renderMlConsent(document.getElementById("app"), {
token: session,
type: "Worldwide",
onSuccess() { console.log("ML accepted"); },
});
renderQr
Renders a QR code that, when scanned, opens a specified URL or web flow on mobile.
onBoarding.renderQr(containerRef.current, {
session: session,
flowId: flowId,
onSuccess: () => showFinishScreen(),
});
Options:
| Name | Type | Description |
|---|---|---|
session |
object | Session object (required) |
flowId |
string | Flow ID to use on mobile |
onSuccess |
function | Callback when mobile onboarding completes |
url |
string | URL to redirect to |
primaryColor |
string | Hex color string for styling |
secondaryColor |
string | Hex color string for styling |
sizePx |
number | QR code size in pixels (width and height) |
renderQrScanner
Renders a universal QR code scanner. Stores the QR value in the session as the qrCodeText custom field.
onBoarding.renderQrScanner(document.getElementById("app"), {
session: session,
onSuccess() { console.log("QR scanned"); },
});
renderUserConsent
Deprecated. Use
renderCombinedConsentinstead.
renderFiscalQr
Renders a QR scanner to retrieve information from the URL in the QR code. Mexico only.
onBoarding.renderFiscalQr(document.getElementById("app"), {
session: session,
onSuccess() { console.log("Fiscal QR scanned"); },
});