Skip to main content

Service details for VideoID

This section goes more into detail about some useful endpoints when integrating with VideoID:

Start capture flow

Capture SDK

The "sdk":"capture" option is not available for VideoID. However, you can use the VideoID native SDKs. To get help with this, please contact us by creating a support ticket in the Signicat Dashboard.

Signicat VideoID provider-specific configuration

The Capture configuration includes specific configuration fields when using the VideoID native SDK. This configuration applies when the sdk field in the "Start capture flow" request is set to native and provider to signicatvideoid.

For more details, see the eidConfig element in the API Reference for either Create or Update capture configuration.

Get process

This section describes the final result status that you receive in the Get process response for VideoID.

Final result status

VideoID returns information about whether the verification was accepted, rejected, inconclusive or failed. Assure API simply maps those values directly to the process' final status. Reasons for the process to be rejected is part of the response.

VideoID responses will always have an ocr element for all process types (substantial, substantialFullyAuto and high). high process types (where an agent will review the process) has an additional manualApproval element.

See example responses below for each process type:

substantial

accepted

Here is a response example of a VideoID Substantial process that was accepted:

  {
"processId": "e0dea380-4219-4388-81bb-61a56ed73ef3",
"createdAt": "2021-06-09T10:04:42Z",
"updatedAt": "2021-06-09T10:05:41Z",
"provider": "signicatvideoid",
"processType": "substantial",
"status": "accepted",
"providerSpecific": {
"ocr": {
"similarityScore": "high",
"livenessDetected": "true",
"features": [
{
"name": "Header",
"found": true,
"bbox": {
"x": 84,
"y": 28,
"width": 248,
"height": 32
},
"side": "data"
},
{
"name": "OVI 2",
"found": true,
"bbox": {
"x": 596,
"y": 44,
"width": 32,
"height": 24
},
"side": "data"
},
{
"name": "Signature",
"found": true,
"bbox": {
"x": 402,
"y": 273,
"width": 217,
"height": 60
},
"side": "data"
},
{
"name": "Photo",
"found": true,
"bbox": {
"x": 32,
"y": 168,
"width": 141,
"height": 141
},
"side": "data"
},
{
"name": "OVI 1",
"found": true,
"bbox": {
"x": 12,
"y": 44,
"width": 72,
"height": 80
},
"side": "data"
}
],
"securityChecks": {
"nonExpired": {
"valid": true
},
"notUnderage": {
"valid": true
},
"dataIntegrity": {
"valid": true
},
"livenessDetected": {
"valid": true
},
"notFaceSpoofing": {
"valid": true
},
"notBWCopy": {
"valid": true
}
},
"documentNumber": "1234567890",
"dateOfExpiry": "2030-07-08",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"documentType": "passport",
"dateOfBirth": "2002-04-29",
"gender": "F",
"nationality": "PRT",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"issuingCountry": "PRT"
}
},
}

For field descriptions, see the Open API documentation > Get process.

rejected

The process gets the rejected status if one or more security checks are not valid. In this example, the reason is that the document has expired:

  {
"processId": "1cc14545-0396-4cbe-8501-8f2461a91dfe",
"createdAt": "2021-06-09T10:37:10Z",
"updatedAt": "2021-06-09T10:38:04Z",
"provider": "signicatvideoid",
"processType": "substantial",
"status": "rejected",
"providerSpecific": {
"ocr": {
"features": [
{
...
},
...
],
"securityChecks": {
"nonExpired": {
"valid": false
},
"notUnderage": {
"valid": true
},
"dataIntegrity": {
"valid": true
},
"livenessDetected": {
"valid": true
},
"notFaceSpoofing": {
"valid": true
},
"sidesMatch": {
"valid": true
},
"notBWCopy": {
"valid": true
}
},
"socialSecurityNumber": "11926318740",
"healthNumber": "1234567890",
"taxNumber": "199693803",
"similarityScore": "high",
"livenessDetected": "true",
"documentNumber": "1234567890",
"dateOfExpiry": "2030-07-08",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"documentType": "identityCard",
"dateOfBirth": "2002-04-29",
"gender": "F",
"nationality": "PRT",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"issuingCountry": "PRT"
}
},
}

For field descriptions, see the Open API documentation > Get process.

inconclusive

A process gets the inconclusive status in the following cases:

  • When the similarityScore value in the OCR analysis is other than high (see description of possible values for similarityScore under API Reference > Get process > providerSpecific > ocr)
  • When one or more features are not "found", for example, if the end-user covers a visual element on the ID document while taking a photo of it.

If you get an inconclusive status, you should inspect the process response to find the reason.

In this example the status is inconclusive since both similarityScore is too low (verylow) and two features are missing (OVI 1 and OVI 2 = false).

  {
"processId": "e0dea380-4219-4388-81bb-61a56ed73ef3",
"createdAt": "2021-06-09T10:04:42Z",
"updatedAt": "2021-06-09T10:05:41Z",
"provider": "signicatvideoid",
"processType": "substantial",
"status": "inconclusive",
"providerSpecific": {
"ocr": {
"similarityScore": "verylow",
"livenessDetected": "true",
"features": [
{
"name": "Header",
"found": true,
"bbox": {
"x": 85,
"y": 37,
"width": 249,
"height": 33
},
"side": "data"
},
{
"name": "OVI 2",
"found": false,
"side": "data"
},
{
"name": "Signature",
"found": true,
"bbox": {
"x": 392,
"y": 281,
"width": 202,
"height": 65
},
"side": "data"
},
{
"name": "Photo",
"found": true,
"bbox": {
"x": 44,
"y": 178,
"width": 141,
"height": 141
},
"side": "data"
},
{
"name": "OVI 1",
"found": false,
"side": "data"
}
],
"securityChecks": {
"nonExpired": {
"valid": true
},
"notUnderage": {
"valid": true
},
"dataIntegrity": {
"valid": true
},
"livenessDetected": {
"valid": true
},
"notFaceSpoofing": {
"valid": true
},
"notBWCopy": {
"valid": true
}
},
"documentNumber": "1234567890",
"dateOfExpiry": "2030-07-08",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"documentType": "passport",
"dateOfBirth": "2002-04-29",
"gender": "F",
"nationality": "PRT",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"issuingCountry": "PRT"
}
},
}

failed

A process gets the failed status if an error prevented the verification from completing. Examples could be that the microphone access is denied by the end-user or that the process times out due to inactivity on the end-user side (usually after 3 minutes).

This is a response example of a VideoID process that failed:

{
"status": "failed",
"processId": "4644c061-e229-449a-b4db-643c7403bbdc",
"provider": "signicatvideoid",
"processType": "substantial",
"createdAt": "2021-04-15T08:25:04Z",
"updatedAt": "2021-04-15T08:28:57Z",
"failReason": {
"id": "8ea0e55f-385f-47b7-a401-ef1db467a625",
"type": "InactiveUser.Aborted",
"message": "There has been no interaction with the video"
}
}

In this case, you can find more information about why it failed in the failReason object (see the Errors section).

substantialFullyAuto

accepted

Here is a response example of a VideoID SubstantialFullyAuto process that was accepted:

Note

In this case, even though the “OVI 1” visual feature was not found in the document, it is still accepted.

{
"processId": "e0dea380-4219-4388-81bb-61a56ed73ef3",
"createdAt": "2021-06-09T10:04:42Z",
"updatedAt": "2021-06-09T10:05:41Z",
"provider": "signicatvideoid",
"processType": "substantialFullyAuto",
"status": "accepted",
"providerSpecific": {
"ocr": {
"similarityScore": "high",
"livenessDetected": "true",
"features": [
{
"name": "Header",
"found": true,
"bbox": {
"x": 85,
"y": 37,
"width": 249,
"height": 33
},
"side": "data"
},
{
"name": "OVI 2",
"found": true,
"bbox": {
"x": 596,
"y": 44,
"width": 32,
"height": 24
},
"side": "data"
},
{
"name": "Signature",
"found": true,
"bbox": {
"x": 392,
"y": 281,
"width": 202,
"height": 65
},
"side": "data"
},
{
"name": "Photo",
"found": true,
"bbox": {
"x": 44,
"y": 178,
"width": 141,
"height": 141
},
"side": "data"
},
{
"name": "OVI 1",
"found": false,
"side": "data"
}
],
"securityChecks": {
"nonExpired": {
"valid": true
},
"notUnderage": {
"valid": true
},
"dataIntegrity": {
"valid": true
},
"livenessDetected": {
"valid": true
},
"notFaceSpoofing": {
"valid": true
},
"notBWCopy": {
"valid": true
}
},
"documentNumber": "1234567890",
"dateOfExpiry": "2025-10-05",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"documentType": "passport",
"dateOfBirth": "2002-04-29",
"gender": "F",
"nationality": "PRT",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"issuingCountry": "PRT"
}
}
}

rejected

The process gets the rejected status if one or more security checks are not valid or if the similarityScore is other than high. In this example, the similarityScore (between the picture in the ID document and the selfie) is low:

{
"processId": "e0dea380-4219-4388-81bb-61a56ed73ef3",
"createdAt": "2021-06-09T10:04:42Z",
"updatedAt": "2021-06-09T10:05:41Z",
"provider": "signicatvideoid",
"processType": "substantialFullyAuto",
"status": "rejected",
"providerSpecific": {
"ocr": {
"similarityScore": "low",
"livenessDetected": "true",
"features": [
{
"name": "Header",
"found": true,
"bbox": {
"x": 84,
"y": 28,
"width": 248,
"height": 32
},
"side": "data"
},
{
"name": "OVI 2",
"found": true,
"bbox": {
"x": 596,
"y": 44,
"width": 32,
"height": 24
},
"side": "data"
},
{
"name": "Signature",
"found": true,
"bbox": {
"x": 402,
"y": 273,
"width": 217,
"height": 60
},
"side": "data"
},
{
"name": "Photo",
"found": true,
"bbox": {
"x": 32,
"y": 168,
"width": 141,
"height": 141
},
"side": "data"
},
{
"name": "OVI 1",
"found": true,
"bbox": {
"x": 12,
"y": 44,
"width": 72,
"height": 80
},
"side": "data"
}
],
"securityChecks": {
"nonExpired": {
"valid": true
},
"notUnderage": {
"valid": true
},
"dataIntegrity": {
"valid": true
},
"livenessDetected": {
"valid": true
},
"notFaceSpoofing": {
"valid": true
},
"notBWCopy": {
"valid": true
}
},
"documentNumber": "1234567890",
"dateOfExpiry": "2025-10-05",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"documentType": "passport",
"dateOfBirth": "2002-04-29",
"gender": "F",
"nationality": "PRT",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"issuingCountry": "PRT"
}
},
}

failed

A process gets the failed status if an error prevented the verification from completing. Examples could be that the microphone access is denied by the end-user or that the process times out due to inactivity on the end-user side (usually after 3 minutes).

This is a response example of a VideoID process that failed:

{
"status": "failed",
"processId": "4644c061-e229-449a-b4db-643c7403bbdc",
"provider": "signicatvideoid",
"processType": "substantialFullyAuto",
"createdAt": "2021-04-15T08:25:04Z",
"updatedAt": "2021-04-15T08:28:57Z",
"failReason": {
"id": "8ea0e55f-385f-47b7-a401-ef1db467a625",
"type": "InactiveUser.Aborted",
"message": "There has been no interaction with the video"
}
}

In this case, you can find more information about why it failed in the failReason object (see the Errors section).

high

accepted

Here is a response example of a VideoID High process that was accepted:

{
"processId": "e0dea380-4219-4388-81bb-61a56ed73ef3",
"createdAt": "2021-06-09T10:04:42Z",
"updatedAt": "2021-06-09T10:05:41Z",
"processType": "high",
"provider": "signicatvideoid",
"status": "accepted",
"providerSpecific": {
"ocr": {
"similarityScore": "high",
"livenessDetected": "true",
"features": [
{
"name": "Header",
"found": true,
"bbox": {
"x": 84,
"y": 28,
"width": 248,
"height": 32
},
"side": "data"
},
{
"name": "OVI 2",
"found": true,
"bbox": {
"x": 596,
"y": 44,
"width": 32,
"height": 24
},
"side": "data"
},
{
"name": "Signature",
"found": true,
"bbox": {
"x": 402,
"y": 273,
"width": 217,
"height": 60
},
"side": "data"
},
{
"name": "Photo",
"found": true,
"bbox": {
"x": 32,
"y": 168,
"width": 141,
"height": 141
},
"side": "data"
},
{
"name": "OVI 1",
"found": true,
"bbox": {
"x": 12,
"y": 44,
"width": 72,
"height": 80
},
"side": "data"
}
],
"securityChecks": {
"nonExpired": {
"valid": true
},
"notUnderage": {
"valid": true
},
"dataIntegrity": {
"valid": true
},
"livenessDetected": {
"valid": true
},
"notFaceSpoofing": {
"valid": true
},
"notBWCopy": {
"valid": true
}
},
"documentNumber": "1234567890",
"dateOfExpiry": "2025-10-05",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"documentType": "passport",
"dateOfBirth": "2002-04-29",
"gender": "F",
"nationality": "PRT",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"issuingCountry": "PRT"
},
"manualApproval": {
"duration": "106",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"dateOfExpiry": "2025-10-13",
"gender": "F",
"nationality": "PRT",
"documentNumber": "1234567890",
"issuingCountry": "PRT",
"dateOfBirth": "2002-04-29",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"videoId": "dd56c701-9ad2-44c0-ab05-864cc46c7d69",
"verificationId": "6b19d497-e024-4b9c-aade-e6e370b59670",
"verifierId": "331971b7-4302-4cba-b5ea-4aec176f07d6",
"verificationDate": "2025-04-01T08:29:53Z",
"rAuthorityId": "fc6c2d52-b90a-4bb7-93e9-8fe020ae9da8"
}
}
}

rejected

The process gets the rejected status if one or more security checks are not valid. In this example, a support agent has rejected the identity verification in the manual approval step ("No evidence of a legal-looking identity document is evident."):

{
"processId": "e0dea380-4219-4388-81bb-61a56ed73ef3",
"createdAt": "2021-06-09T10:04:42Z",
"updatedAt": "2021-06-09T10:05:41Z",
"processType": "high",
"provider": "signicatvideoid",
"status": "rejected",
"providerSpecific": {
"ocr": {
"similarityScore": "high",
"livenessDetected": "true",
"features": [
{
"name": "Header",
"found": true,
"bbox": {
"x": 84,
"y": 28,
"width": 248,
"height": 32
},
"side": "data"
},
{
"name": "OVI 2",
"found": true,
"bbox": {
"x": 596,
"y": 44,
"width": 32,
"height": 24
},
"side": "data"
},
{
"name": "Signature",
"found": true,
"bbox": {
"x": 402,
"y": 273,
"width": 217,
"height": 60
},
"side": "data"
},
{
"name": "Photo",
"found": true,
"bbox": {
"x": 32,
"y": 168,
"width": 141,
"height": 141
},
"side": "data"
},
{
"name": "OVI 1",
"found": true,
"bbox": {
"x": 12,
"y": 44,
"width": 72,
"height": 80
},
"side": "data"
}
],
"securityChecks": {
"nonExpired": {
"valid": true
},
"notUnderage": {
"valid": true
},
"dataIntegrity": {
"valid": true
},
"livenessDetected": {
"valid": true
},
"notFaceSpoofing": {
"valid": true
},
"notBWCopy": {
"valid": true
}
},
"documentNumber": "1234567890",
"dateOfExpiry": "2025-10-05",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"documentType": "passport",
"dateOfBirth": "2002-04-29",
"gender": "F",
"nationality": "PRT",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"issuingCountry": "PRT"
},
"manualApproval": {
"duration": "106",
"firstName": "MARIA PAULA",
"lastName": "SANTOS MENDES",
"dateOfExpiry": "2025-10-13",
"gender": "F",
"nationality": "PRT",
"documentNumber": "1234567890",
"issuingCountry": "PRT",
"dateOfBirth": "2002-04-29",
"personalIdentificationNumber": "FANTASYBANK1234567890",
"rejectionReasons": [
{
"type": "Document.Aspect",
"message": "No evidence of a legal-looking identity document is evident."
}
],
"videoId": "dd56c701-9ad2-44c0-ab05-864cc46c7d69",
"verificationId": "6b19d497-e024-4b9c-aade-e6e370b59670",
"verifierId": "331971b7-4302-4cba-b5ea-4aec176f07d6",
"verificationDate": "2025-04-01T08:29:53Z",
"rAuthorityId": "fc6c2d52-b90a-4bb7-93e9-8fe020ae9da8"
}
}
}

failed

A process gets the failed status if an error prevented the verification from completing. Examples could be that the microphone access is denied by the end-user or that the process times out due to inactivity on the end-user side (usually after 3 minutes).

This is a response example of a VideoID process that failed:

{
"status": "failed",
"processId": "4644c061-e229-449a-b4db-643c7403bbdc",
"provider": "signicatvideoid",
"processType": "high",
"createdAt": "2021-04-15T08:25:04Z",
"updatedAt": "2021-04-15T08:28:57Z",
"failReason": {
"id": "8ea0e55f-385f-47b7-a401-ef1db467a625",
"type": "InactiveUser.Aborted",
"message": "There has been no interaction with the video"
}
}

In this case, you can find more information about why it failed in the failReason object (see the Errors section).

Download full result

In the Get process response, you get the results for VideoID in the provider-specific area (for example similarityScore). For full information as obtained from the provider, use the Download full result service. This service returns a zip file containing data and media files about the verification.

You can always get a zip file for VideoID processes that have been completed with success.

Data files

ocr.json

This "raw" file contains all information about the OCR capture and automatic verification performed by VideoID.

manual_approval.json

This "raw" file contains all information about the manual verification performed by the support agent.

Media files

Errors

Every time a VideoID process fails (is set to the failed status), error information is returned in the failReason object.

This example shows a VideoID API user error with Liveness.NotDetected as reason:

{
"processId": "3e5f41ea-8b23-40ed-a8ac-f4d57d6cd4b2",
"provider": "signicatvideoid",
"processType": "substantial",
"status": "failed",
"failReason": {
"id": "6c3bb734-34a1-4979-8a5b-14a91853cadb",
"date": 1745491701000,
"reason": "Liveness.NotDetected",
"category": "User.Error"
},
"createdAt": "2024-09-19T14:39:42Z",
"updatedAt": "2024-09-19T14:40:16Z"
}

Most of the errors will come from the VideoID API and contain "ID", "date", "reason" and "category". Other errors may come from the VideoID Web SDK or from Assure Capture service, and have a different structure. However, they will always contain information about what made the process fail.

The possible cases for those errors are listed below, categorised into which part of the system they come from:

VideoID API

The following sub-sections list possible errors per error category for the VideoID API:

Descriptions

The below descriptions are not shown to the users in the UI. They are added here to help you understand the error and potentially give some advice to the user.

Integration errors

The Integration.Error category contains errors caused by a faulty integration of VideoID. This should ideally never happen in a production environment, as these errors should be eliminated during the integration process.

Camera errors

The Camera.Error category shows errors related to the device camera, for example Camera.NotFound.

Apart from these specific camera errors, mobile SDKs can also return a generic Permission.Denied error (see the User.Error section).

Microphone errors

The Microphone.Error category contains errors related to the device microphone, for example Microphone.NotFound.

Apart from these specific microphone errors, mobile SDKs can also return a generic Permission.Denied error (see the User.Error section).

Network errors

The Network.Error category contains errors caused by internet connection problems, for example, Connection.Lost.

Environment errors

The Environment.Error category contains errors that happen because of bad lighting environments.

Document errors

The Document.Error category contains errors caused by the end-user using an invalid or illegible identity document, for example DocumentSides.Mismatch.

User errors

The User.Error category contains errors caused by the user, for example, User.Inactive.

Agent errors

The Agent.Error category contains errors caused by the agent.

Verification errors

The Verification.Error category contains errors occurred during the manual verification process.

Service errors

The Service.Error category contains errors caused by the VideoID service.

VideoID Web SDK

Assure Capture