Developer guide
The Developer Guide provides comprehensive instructions and best practices for integrating with our platform.
Identomat is a service designed for verifying human identity and liveness over the Internet. This manual assumes that the integrating company (hereafter referred to as "the company") operates a web server (hereafter referred to as "the company server") at example.com and has a company_key
. The company_key
is a credential used for secure communication between the company server and the Identomat server (widget.identomat.com).
For enhanced security, companies have the option to implement HMAC authorization. The secret_key
serves as the encryption key used with HMAC.
Procedure
The procedure is straightforward and consists of the following steps:
Acquiring a
session_token
.Redirecting the user's browser to widget.identomat.com.
Checking for a result.
To acquire a session_token
, the company server needs to call the begin/
endpoint and provide the following arguments: company_key
, flags
and steps
(Please note that the session token has a default validity period of 15 minutes.) The steps
array contains the configuration for individual steps in the identification process, each of which can have its own set of flags
specific to that step.
The endpoint used to create a session_token
:
https://widget.identomat.com/begin/
This endpoint, like others, can be accessed using the HTTP POST method. The parameters can be passed in the query string, as URL-encoded form data, or as a request body containing a JSON document.
The flags
parameter is an object that specifies the overall details of the identification process. The steps
array allows for customization of each step, including step-specific flags, providing flexibility in configuring the process.
To ensure compatibility between the old and new methods, both of which need to work together, you should use the 'skip_face'
and 'skip_document'
flags when using steps.
These flags prevent the 'identity-document' and 'liveness' steps from being duplicated if they already exist in the flow.
Flags
Below is a list of all the general flags currently used by the system.
"skip_face"
Prevents the 'liveness'
from being duplicated if it already exists in the flow as a step.
false
<boolean>
'skip_document'
Prevents the 'identity-document'
from being duplicated if it already exists in the flow as a step.
false
<boolean>
"return_url"
The URL to redirect to after identification is complete.
If omitted, it indicates that the process is embedded in an iframe.
<string>
"language"
The language for the user interface.
Possible values:
"en"
<string>
"skip_desktop"
Limits sessions to mobile devices. If the session is initiated on a desktop, a QR code will be displayed to transfer the session to a mobile device.
Possible values:
true
, false
false
<boolean>
"switch_device_url"
Specifies a custom URL to display in the QR code when the camera is not available or access is restricted.
If omitted or set to an empty string, no URL is applied.
<string>
"restrict_url_sharing"
Restrict sharing of the session URL to continue from another browser.
Note: If this flag is set to true, the QR code will not appear when camera access is denied or unavailable, unless the switch_device_url
flag is also present.
Possible values:
true
, false
false
<boolean>
"optional_continue_on_another_device"
Enables the option to switch to another device for continuation.
Possible values:
true
, false
false
<boolean>
"multiple_participants"
true, allows video call sessions to include multiple participants instead of just one.
Possible values:
true
, false
false
<boolean>
Steps
The steps
array defines the flow of the identification process. The steps
array is passed along with the company_key
and flags
.
Each step in the steps
array may include the following properties.
Type
: A type of the specific step.Key
: A unique identifier for the step. Keys are editable and can be configured as desired, provided they remain unique.Flags
: Specific flags that define the step's configuration.Title
: The title for the step is provided by client, displayed in the user interface.
Below is a list of all the types of steps available in our system.
KYB
Identity document verification
The Identity Document step involves users scanning or uploading photos of their ID documents.
Identity document step configurations:
Type:
identity-document
Key:
identity-document
Flags:
disable_document_capture
allow_document_upload
document_types
document_countries
"disable_document_capture"
If true, users are unable to scan documents and must upload them instead.
Possible values:
true
, false
false
<boolean>
"allow_document_upload"
If true, users can choose between scanning or uploading their documents.
Possible values:
true
, false
false
<boolean>
"document_types"
A list of allowed document types.
Possible values:
If omitted or set to an empty array, all document types are allowed.
<array>
"document_countries"
Limits document scanning to specific issuer countries by codes. Possible values:
"USA", "DEU", "ITA"
, etc.
If omitted or set to an empty array, no restrictions are applied.
<array>
cURL example:
Example using cURL with return_url
& language
flags and an identity-document
verification step:
Liveness check
In the liveness check step, the user positions their face within the frame and follows the instructions.
Identomat offers two types of liveness check:
Passive liveness: A basic check where the user holds their head within an oval frame while the system captures a two-second video.
Active liveness: An advanced biometric check where the user performs specific actions to confirm their presence as a live person.
Liveness check step configurations:
Type:
liveness
Key:
liveness
Flags:
liveness
allow_face_upload
"liveness"
If true, users will be required to perform active liveness checks. If false, users will undergo passive liveness checks.
Possible values:
true
, false
false
<boolean>
"allow_face_upload"
If true, users are allowed to upload a selfie. Note: If the "liveness" flag is set to true, the "allow_face_upload" flag will not be effective, as active liveness requires users to follow specific instructions.
false
<boolean>
cURL example:
Example using cURL with document_countries
& language
flags and identity-document
verification & active liveness
steps:
General document
The General Document step includes verification of proof of address and analysis of other documents.
General document step configurations:
Type:
general-document
Key:
select_general_document
Flags:
general_document_types
"general_document_types"
A list of allowed general document types.
Possible values:
If omitted or set to an empty array, all general document types are allowed.
<array>
cURL example:
Example using cURL with optional_continue_on_another_device
& language
flags and liveness
& general-document
steps:
Face document
In the Face Document step, users are required to hold their document in their hands so that both their face and the document are visible.
Face document step configurations:
Type:
face-document
Key:
capture_face_document
Flags:
allow_face_doc_upload
require_face_document
"allow_face_doc_upload"
If true, users are allowed to upload an image of themselves holding a document in their hand.
Possible values:
true
, false
false
<boolean>
"require_face_document"
If true, users are allowed to capture themselves holding a document in their hand.
Possible values:
true
, false
false
<boolean>
cURL example:
Example using cURL with restrict_url_sharing
& language
flags and face-document
step:
Video call
In the Video Call step, the user is connected with an operator to perform a manual verification process. The video call may include all other Identomat verification steps.
Identomat offers two types of video call:
One-on-one: Involves a secure video call between a customer and a verification operator
Multi-user call: Enables the verification of multiple customers within a single session. Each user can follow their own customized workflow tailored to the specific business process.
Video call step configurations:
Type:
video-call
Key:
video-call
resetSteps:
true/false
(optional)hideCameraOption:
true/false
(optional)nameRequired:
true/false
(optional)
"resetSteps"
If a user disconnects and rejoins the call, all previous verification data is cleared for security reasons. The operator must restart the verification process to ensure the user's identity.
Possible values:
true
, false
false
<boolean>
"hideCameraOption"
Enabling this will hide the camera icon, preventing users from turning off the camera. Possible values:
true
, false
false
<boolean>
"nameRequired"
If enabled, participants are required to provide their names to join the call. Possible values:
true
, false
false
<boolean>
cURL example:
Example using cURL with return_url
& language
flags and video-call
with identity-document
step:
Phone number
Phone number verification allows users to verify their phone number using an OTP code.
Phone number step may include:
Verification of the user's phone number using an OTP code.
Collection of the user's phone number.
Phone number step configurations:
Type:
phone-number
Key:
phone_number
Flags:
require_phone_number_check
require_phone_number
"require_phone_number_check"
If true, users are required to verify their phone number using an OTP code sent to them.
Possible values:
true
, false
false
<boolean>
"require_phone_number"
If true, users are required to submit their phone number without verification.
Possible values:
true
, false
false
<boolean>
cURL example:
Example using cURL with return_url
& language
flags and phone-number
step:
Email address
Email verification allows users to verify their email using an OTP code.
Email verification step may include:
Verification of the user's email using an OTP code.
Collection of the user's email.
Email address step configurations:
Type:
email
Key:
require_email
Flags:
require_email_check
require_email
"require_email_check"
If true, users are required to verify their email using an OTP code sent to them.
Possible values:
true
, false
false
<boolean>
"require_email"
If true, users are required to submit their email address without verification.
Possible values:
true
, false
false
<boolean>
cURL example:
Example using cURL with return_url
& language
flags and phone-number
step:
User questionnaire
The User questionnaire step is designed for various types of forms that users are required to fill out. All information provided by the user is saved within the session. Questionnaire steps have slightly different parameters compared to other steps.
User questionnaire step configurations:
"type":
user-questionnaire
"key": Keys are chosen by the client and must remain unique within a single session.
"title": The title of the user questionnaire, displayed as the block title on the user's side. The title can be an
<object>
containing different languages, allowing the title to be displayed in the selected language during the verification flow."description": A description that appears below the title on the user's side. Similar to the title, the description can be an
<object>
containing different languages, so that it can be displayed in the selected language during the verification flow."questions": An
<array>
of questions with the following types:string
: Text Input - The user is required to fill out a short text form with an answer string.multiple-choice
: Checkboxes - The user can select one or more answers from a list of options.options
: Radio Buttons - The user can choose only one answer from a set of options.
"successButtonTitle": The title of the action button in the questionnaire. If the questions are mandatory, the button is deactivated until the user completes the questionnaire.
Questions
Questions consist of these parameters:
"type": The type of the question. There are three types:
string
,multiple-choice
andoptions
."title": The question title as a string. There are no length or symbol restrictions. The title can also be an
<object>
of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages."key": The key for the question, chosen by the client. It must remain unique within a single questionnaire.
"mandatory": Specifies whether the question is required to be answered.
"answer": Allows to preset an answer for a question. To preset an answer for
options
-type questions, thekey
of the desired option should be assigned as the value of theanswer
parameter. Forstring
-type questions, the answer can be pre-filled by directly assigning the desired text to the value of theanswer
parameter. In case ofmultiple-choice
questions, the value of the answer parameter is an array containing the keys of all the answers that should be pre-selected. Note: the end-users can modify the preset answer."readOnly": Displays the question to the user but restricts any interaction, meaning the user will be unable to choose, fill, or edit an answer.
"showConditions": This parameter may be used to set conditions for whether a question should be displayed. It consists of:
"questionKey": The key of the question that serves as the condition for the current question.
"answer": The key of the answer to the conditional question, or the specific answer text in the case of a text string.
Options
Options are used only for multiple-choice
and options
types of questions. They consist of the following parameters:
"options": An <array> of options for the question. Each option may have:
"title" : The title of an option. The title can be an
<object>
containing different languages, allowing the option to be displayed in the selected language during the verification flow."key": The key for the option, chosen by the client. It must remain unique within a single questionnaire.
List of parameters with examples:
"key"
Keys are chosen by the client and must remain unique within a single session.
Recommended to use key describing the questionnaire shortly.
-
<string>
"title"
The title of the user questionnaire, displayed as the block title on the user's side. The title can be an <object>
containing different languages, allowing the title to be displayed in the selected language during the verification flow.
-
<string> or <object>
"description"
A description that appears below the title on the user's side. Similar to the title, the description can be an <object>
containing different languages, so that it can be displayed in the selected language during the verification flow.
-
<string> or <object>
"questions"
An <array>
of questions with the following types: string
, multiple-choice
and options
.
-
<array>
"mandatory"
Specifies whether the question is required to be answered.
Possible values:
true
, false
false
<boolean>
"answer"
Allows to preset an answer for a question.
-
<string> or <array>
"readOnly"
Displays the question but restricts interaction.
false
<boolean>
"showConditions"
This parameter may be used to set conditions for whether a question should be displayed.
-
<object>
"successButtonTitle"
The title of the action button in the questionnaire. If the questions are mandatory, the button is deactivated until the user completes the questionnaire.
Confirm
<string>
cURL example:
Operator questionnaire
The Operator Questionnaire is part of the session, allowing the operator to fill out various forms to collect information from the user or to input session details. The configurations of the Operator Questionnaire are very similar to those of the User Questionnaire.
Operator questionnaire step configurations:
"type":
operator-questionnaire
"key": Keys are chosen by the client and must remain unique within a single session.
"title": The title of the operator questionnaire, displayed as the tab name in the session. The title can be an
<object>
containing different languages, allowing the title to be displayed in the selected language."description": Similar to the title, the description can be an
<object>
containing different languages, so that it can be displayed in the selected language."questions": An
<array>
of questions with the following types:string
: Text Input - The operator is required to fill out a short text form with an answer string.multiple-choice
: Checkboxes - The operator can select one or more answers from a list of options.options
: Radio Buttons - The operator can choose only one answer from a set of options.
Questions
Questions consist of these parameters:
"type": The type of the question. There are three types:
string
,multiple-choice
andoptions
."title": The question title as a string. There are no length or symbol restrictions. The title can also be an
<object>
of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages."key": The key for the question, chosen by the client. It must remain unique within a single questionnaire.
"mandatory": Specifies whether the question is required to be answered.
"answer": Allows to preset an answer for a question. To preset an answer for
options
-type questions, thekey
of the desired option should be assigned as the value of theanswer
parameter. Forstring
-type questions, the answer can be pre-filled by directly assigning the desired text to the value of theanswer
parameter. In case ofmultiple-choice
questions, the value of the answer parameter is an array containing the keys of all the answers that should be pre-selected. Note: the operators can modify the preset answer."readOnly": Displays the question to the operator but restricts any interaction, meaning the operator will be unable to modify the answer.
"showConditions": This parameter may be used to set conditions for whether a question should be displayed. It consists of:
"questionKey": The key of the question that serves as the condition for the current question.
"answer": The key of the answer to the conditional question, or the specific answer text in the case of a text string.
Options
Options are used only for multiple-choice
and options
types of questions. They consist of the following parameters:
"options": An <array> of options for the question. Each option may have:
"title" : The title of an option. The title can be an
<object>
containing different languages, allowing the option to be displayed in the selected language during the verification flow."key": The key for the option, chosen by the client. It must remain unique within a single questionnaire.
List of parameters with examples:
"key"
Keys are chosen by the client and must remain unique within a single session.
Recommended to use key describing the questionnaire shortly.
-
<string>
"title"
The title of the operator questionnaire, displayed as the tab name in the session. The title can be an <object>
containing different languages, allowing the title to be displayed in the selected language.
-
<string> or <object>
"description"
Similar to the title, the description can be an <object>
containing different languages, so that it can be displayed in the selected language.
-
<string> or <object>
"questions"
An <array>
of questions with the following types: string
, multiple-choice
and options
.
-
<array>
"mandatory"
Specifies whether the question is required to be answered.
Possible values:
true
, false
false
<boolean>
"answer"
Allows to preset an answer for a question.
-
<string> or <array>
"readOnly"
Displays the question but restricts interaction.
false
<boolean>
"showConditions"
This parameter may be used to set conditions for whether a question should be displayed.
-
<object>
cURL example:
Last updated