Developer guide
The Developer Guide provides comprehensive instructions and best practices for integrating with our platform.
Last updated
Was this helpful?
The Developer Guide provides comprehensive instructions and best practices for integrating with our platform.
Last updated
Was this helpful?
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.
The procedure is straightforward and consists of the following steps:
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/
For more details check
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.
To start a verification session, the company server must redirect the user’s browser to:
Alternatively, the widget can be embedded within an iframe:
Once the identification process is completed:
If redirected, the user’s browser is sent back to the return URL specified in the configuration. A session_token
parameter is appended to this URL.
If embedded in an iframe, the process completion can be detected using JavaScript:
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 the user to after the identification process 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>
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
The Language step allows the user to choose the interface language.
Language step configurations:
Title: Language
Type: language
Key: language
Array of languages
"languages"
Possible values:
If the array is empty, all available languages will be shown.
<array>
The Identity Document step involves users scanning or uploading photos of their ID documents.
Identity document step configurations:
Title: ID verification
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>
Example using cURL with return_url
& language
flags and an identity-document
verification step:
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:
Title: Liveness
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>
Example using cURL with document_countries
& language
flags and identity-document
verification & active liveness
steps:
The proof of address step includes verification of proof of address and analysis of other type of documents.
Proof of address step configurations:
Title: Proof of address
Type: general-document
Key: select_general_document
Flags:
general_document_types
"general_document_types"
A list of allowed document types.
Possible values:
If omitted or set to an empty array, all general document types are allowed.
<array>
Example using cURL with optional_continue_on_another_device
& language
flags and liveness
& general-document
steps:
In the Selfie with ID step, users are required to hold their document in their hands so that both their face and the document are visible.
Selfie with ID step configurations:
Title: Selfie with ID
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>
Example using cURL with restrict_url_sharing
& language
flags and face-document
step:
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:
Title: Video call
Type: video-call
Key: video-call
Array of steps
resetSteps: true/false
(optional)
hideCameraOption: true/false
(optional)
nameRequired: true/false
(optional)
multiple_participans: true/false
(optional)
"steps"
The steps
array includes all identification steps listed here, except for the language
step and the operator_questionnaire
, which must be listed outside the video call steps array.
empty array [ ]
<array>
"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>
"multiple_participants"
true, allows video call sessions to include multiple participants instead of just one.
Possible values:
true
, false
false
<boolean>
Example using cURL with return_url
& language
flags and video-call
with identity-document
step:
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>
Example using cURL with return_url
& language
flags and phone-number
step:
Email step allows users to verify their email using an OTP code.
Email step may include:
Verification of the user's email using an OTP code.
Collection of the user's email.
Email 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>
Example using cURL with return_url
& language
flags and phone-number
step:
The Geolocation step allows the user to grant permission for location access. This enables the system to retrieve the user's geolocation data, including coordinates and address.
Geolocation step configurations:
Type: geolocation
Key: require_geolocation
Flags:
require_geolocation
"require_geolocation"
If true, users must grant permission for location access to proceed.
Possible values:
true
, false
true
<boolean>
Example using cURL with return_url
& language
flags and geolocation
step:
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.
dropdown
: A selectable menu where the user can choose a single or multiple options from a list.
file
: Allows the user to upload a file as a response.
"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 consist of these parameters:
"type": The type of the question. There are three types: string
, multiple-choice
,options
, dropdown
, file.
"title": The title is an <object>
of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.
"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, the key
of the desired option should be assigned as the value of the answer
parameter. For string
-type questions, the answer can be pre-filled by directly assigning the desired text to the value of the answer
parameter. In case of multiple-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.
"multiple": This parameter can be used for a dropdown-type question to allow multiple selections by the user.
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.
"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.
-
<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.
-
<object>
"questions"
An <array>
of questions with the following types: string
, multiple-choice
, options
, dropdown
.
-
<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
<object>
Available parameters:
"type"
"string"
-
<string>
"key"
Keys are chosen by the client and must remain unique within a single session.
Recommended to use key describing the question shortly.
-
<string>
"title"
The title is an <object>
of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.
-
<object>
"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.
The answer is an <object>
of languages so that if the user changes the language during the verification flow, the prefilled answer can be displayed in different languages.
-
<object>
"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>
Available parameters:
"type"
"multiple-choice"
-
<string>
"key"
Keys are chosen by the client and must remain unique within a single session.
Recommended to use key describing the question shortly.
-
<string>
"title"
The title is an <object>
of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.
-
<object>
"options"
An <array> of options for the question. Each option may have:
"title" : The title of an option. The title is 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.
-
<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.
The answer is an <array>
of option keys assigned to this question.
-
<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>
Available parameters:
"type"
"options"
-
<string>
"key"
Keys are chosen by the client and must remain unique within a single session.
Recommended to use key describing the question shortly.
-
<string>
"title"
The title is an <object>
of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.
-
<object>
"options"
An <array> of options for the question. Each option may have:
"title" : The title of an option. The title is 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.
-
<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.
The answer is an <string>
of an option key assigned to this question.
-
<string>
"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>
Available parameters:
"type"
"dropdown"
-
<string>
"key"
Keys are chosen by the client and must remain unique within a single session.
Recommended to use key describing the question shortly.
-
<string>
"title"
The title is an <object>
of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.
-
<object>
"options"
An <array> of options for the question. Each option may have:
"title" : The title of an option. The title is 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.
-
<array>
"mandatory"
Specifies whether the question is required to be answered.
Possible values:
true
, false
false
<boolean>
"multiple"
Specifies whether the question is single or multiple choice.
Possible values:
true
, false
false
<boolean>
"showConditions"
This parameter may be used to set conditions for whether a question should be displayed.
-
<object>
Available parameters:
"type"
"file"
-
<string>
"key"
Keys are chosen by the client and must remain unique within a single session.
Recommended to use key describing the question shortly.
-
<string>
"title"
The title is an <object>
of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.
-
<object>
"description"
A description that appears below the title. 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.
-
<object>
"mandatory"
Specifies whether the question is required to be answered.
Possible values:
true
, false
false
<boolean>
"fileTypes"
Specifies the types of files the user is allowed to upload.
Possible values:
pdf
, image
.
[ "pdf"
, "image"
]
<array>
"filesMaxCount"
Specifies the maximum number of files the user is allowed to upload. Possible values: A number from 1 to 10.
10
<number>
"showConditions"
This parameter may be used to set conditions for whether a question should be displayed.
-
<object>
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 consist of these parameters:
"type": The type of the question. There are three types: string
, multiple-choice
and options
.
"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, the key
of the desired option should be assigned as the value of the answer
parameter. For string
-type questions, the answer can be pre-filled by directly assigning the desired text to the value of the answer
parameter. In case of multiple-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 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.
"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>