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
similarityScorevalue in the OCR analysis is other thanhigh(see description of possible values for similarityScore under API Reference > Get process > providerSpecific > ocr) - When one or more
featuresare 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:
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:
- Integration errors
- Camera errors
- Microphone errors
- Network errors
- Environment errors
- Document errors
- User errors
- Agent errors
- Verification errors
- Service errors
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.