API reference · Government validation

Process government validation

POST/omni/process/government-validation

Base URL: https://demo-api.incodesmile.com — Incode demo environment

This endpoint reads the country code from the interview which can be set at the moment of calling the start endpoint or is updated based on the processed id. Request body can optionally contain data from id in JSON. If omitted, data from scanned ID is read.

Country codes:

MEX: Mexico - INE Validation. When government face validation is enabled this method compares the user's selfie against the image in the INE database. The method should be called after add-face is over and one of (process-id or document-id) is over.

Request parameters:

  • fallbackEnabled: Boolean, optional. If it is not sent, it will default to false.
  • scrapingMethod: Boolean, optional. If it is not sent, it will default to false.

If parameter fallbackEnabled is true and there's some connection or infrastructure error with the INE service, validation by scraping will start. If parameter scrapingMethod is true, then direct connection to INE service won't be attempted and the scraping approach will be used instead.

Request Body is optional - if not sent, data will be taken from the session:

  • ocr: String, mandatory for INE and IFE.
  • cic: String, mandatory for INE.
  • nombre: String, optional.
  • apellidoPaterno: String, optional.
  • apellidoMaterno: String, optional.
  • anioRegistro: String, optional.
  • anioEmision: String, optional.
  • numeroEmisionCredencial: String, mandatory for ife.
  • claveElector: String, mandatory for ife.
  • curp: String, optional.

COL: Colombia - Registraduría Validation. Currently there's no option for face validation. Can validate registraduría or extranjería (foreign citizens living in colombia). Note: Government Validations for Colombia acquired via TusDatos

Request Body is optional - if not sent data will be taken from the session:

  • idNumber: String, mandatory.
  • fechaEmision: String, mandatory when Nationality is not Columbia. Format dd/mm/yyyy
  • nombre: String, optional.
  • apellidoPaterno: String, optional.
  • apellidoMaterno: String, optional.

ARG: Argentina - Renaper Validation. Currently there's no option for face validation.

Request Body:

  • idNumber: String, mandatory.

PER: Peru - Reniec Validation. Currently there's no option for face validation. Can validate Reniec. Note: Government Validations for Peru obtained by checking against TOC, a risk database. ID must include DNI in order to validate. Request Body is optional - if not sent data will be taken from the session.

  • idNumber: String, mandatory (corresponds to DNI number)
  • nombre: String, optional - if not provided ocrValidation for FistName will be UNKNOWN
  • apellidoPaterno: String, optional - if not provided ocrValidation for PaternalLastName will be UNKNOWN
  • apellidoMaterno: String, optional - if not provided ocrValidation for MaternalLastName will be UNKNOWN
  • birthDate: String, optional - if not provided ocrValidation for BirthDate will be UNKNOWN
  • gender: String, optional - if not provided ocrValidation for Gender will be UNKNOWN

CHL: Chile - Sinacofi Validation. Currently there's no option for face validation. Can validate Sinacofi. Note: Government Validations for Chile obtained by checking against TOC, a risk database. ID must include DNI in order to validate. Request Body is optional - if not sent data will be taken from the session:

  • idNumber: String, mandatory (corresponds Serie)
  • personalNumber: String, mandatory (corresponds RUT/RUN)

AUS: Australia - Government Validation for Passport and Driver License. Request Body is optional - if not sent data will be taken from the OCR.

For Passport validation:

  • firstName: String, mandatory.
  • middleName: String, optional.
  • paternalLastName: String, mandatory.
  • cic: String, mandatory (corresponds to Passport number).
  • documentType: String, mandatory ("Passport").
  • birthDate: String, mandatory. Format yyyy/MM/dd.
  • address: String, optional.

For Driver License validation:

  • firstName: String, mandatory.
  • middleName: String, optional.
  • paternalLastName: String, mandatory.
  • documentType: String, mandatory ( com"DriversLicense").
  • birthDate: String, mandatory. Format yyyy/MM/dd.
  • refNumber: String, mandatory (corresponds to Card number).
  • cic: String, mandatory (corresponds to License number).
  • issuerState: String, mandatory (e.g., "NSW").
  • address: String, optional.

Path & query parameters

Name In Type Required Description
fallbackEnabled query boolean
scrapingMethod query boolean
scrapingV2 query boolean
scrapingV3 query boolean
telcel query boolean
interviewId query string
countryCode query string
api-version header string yes

Request body

Field Type Required Description
ocr string
cic string
nombre string
apellidoPaterno string
apellidoMaterno string
anioRegistro string
anioEmision string
numeroEmisionCredencial string
claveElector string
curp string
base64Image string
idNumber string
fechaEmision string
personalNumber string
birthDate string
gender string
birthPlace string
address string
latitude string
longitude string
macAddress string
ip string
osVersion string
applicationName string
sufix string
firstName string
givenName string
middleName string
maternalLastName string
paternalLastName string
documentType string Enum: Unknown, Passport, Visa, DriversLicense, IdentificationCard, Permit, Currency, ResidenceDocument, TravelDocument, BirthCertificate, VehicleRegistration, Other, WeaponLicense, TribalIdentification, VoterIdentification, Military, TaxIdentification, FederalID, MedicalCard
refNumber string
issuerState string
documentTypeId integer (int32)
issuedAt string
documentNumber string
expireAt string
eyeColor string
height string
weight string
city string
postalCode string
email string
fullName string
nationality string
dateFormat string
fingerprintsData FingerprintsData
fingerprintsData.type integer (int32)
fingerprintsData.fingerprints array[Fingerprint] yes
fingerprintsData.fingerprints.index integer (int32)
fingerprintsData.fingerprints.base64Fingerprint string
fingerprintsData.fingerprints.fingerprintMetadata FingerprintMetadata
fingerprintsData.fingerprints.fingerprintMetadata.device string
fingerprintsData.fingerprints.fingerprintMetadata.resolution string
fingerprintsData.fingerprints.fingerprintMetadata.qualityScore string

Responses

200

Responses: MEX: - statusCode: Integer. Possible values: - OK (0, "ok"), - VALIDATION_ERROR (1, "validationError"), - INE_CONNECTION_ERROR (2, "ineConnectionError"), - INE_INFRASTRUCTURE_ERROR (3, "ineInfrastructureError"), - MODULE_NOT_SUPPORTED (4, "moduleNotSupported"), - MISSING_DOCUMENT_ID (5, "missingDocumentId"), - MISSING_SELFIE (6, "missingSelfie"), - USER_NOT_FOUND (7, "userNotFound"); - USER_NOT_FOUND_IN_INE_DB (8, "userNotFoundInIneDb"), - NOT_ENOUGH_DATA (9, "notEnoughData"), - LIVENESS_FAIL (10, "livenessFail") - INE_NOT_CURRENT (11, "ineNotCurrent") - INE_REPORTED_LOST (12, "ineReportedLost") - INE_REPORTED_STOLEN (13, "ineReportedStolen") - INE_SIGNATURE_ERROR (14, "ineSignaturError") - INE_NOT_VALID (15, "ineNotValid") - PROVIDER_UNAVAILABLE (98, "providerUnavailable"). Also returned for an INE-side service degradation (codigoRespuesta=0 with similitud1=null): the face comparison never produced a score, so recognitionConfidence stays null — distinct from a real face mismatch. In that case errorDescription identifies the cause. - COUNTRY_NOT_SUPPORTED (99, "countryNotSupported") - PROCESSING_INE (-1, "processingIne"). It only applies for Listas Nominales (INE Scraping). - PROCESSING (-4, "processing") - CONNECTION_ERROR (17, "connectionError") - INFRASTRUCTURE_ERROR (18, "infrastructureError") - TRANSACTION_LIMIT_REACHED (205, "transactionLimitReached") - valid: Boolean. Flag stating if request processed successfully. - registralSituation: Structure with following fields: - tipoSituacionRegistral: String. Possible values: [ VIGENTE, NO_VIGENTE, DATOS_NO_ENCONTRADOS ] - tipoReporteRoboExtravio: String, optional. Possible values: [ null, REPORTE_DE_EXTRAVIO, REPORTE_DE_ROBO, REPORTE_DE_ROBO_TEMPORAL, REPORTE_DE_EXTRAVIO_TEMPORAL ] - governmentValidation: Structure with following fields: - validationStatus: Structure with following fields: - value: Look statusCode - status: Look statusCode - key: - ok: when value OK - error: when value VALIDATION_ERROR, INE_INFRASTRUCTURE_ERROR, USER_NOT_FOUND_IN_INE_DB, INE_NOT_CURRENT, INE_REPORTED_LOST, INE_REPORTED_STOLEN, USER_NOT_FOUND, TRANSACTION_LIMIT_REACHED - unknown: otherwise - ocrValidation: Array of structure with following fields: - value: Possible values - true false empty - status: Possible values - OK FAIL UNKNOWN - key: Possible values - issueDate firstName maternalLastName paternalLastName ocr personalId electorsKey emissionNumber registrationDate - ocrValidationOverall: Structure with following fields: - value: Calculated value based on Ocr Validation between 0 and 100 - status: OK or FAIL based on calculation - overall: Same as ocrValidationOverall - ocrData: Look at fetch-OCR - deviceInfo: Look at fetch-deviceInfo - ineTransactionId: String COL: - statusCode: 0 - OK, other not OK* - governmentValidation - consists of the following fields: - validationStatus - following values: - OK (0, "ok"), - VALIDATION_ERROR (1, "validationError"), - CONNECTION_ERROR (17, "connectionError"), - USER_NOT_FOUND (7, "userNotFound"), - NOT_ENOUGH_DATA (9, "notEnoughData") - ocrValidation: Array of structure with following fields: - value: Possible values - true false empty - status: Possible values - OK FAIL UNKNOWN - key: Possible values - firstName maternalLastName paternalLastName ocr birthDate gender - governmentValidationResponse (DEPRECATED): - COL1: "governmentValidationResponse": { "codError": "0", "contract_id": 111, "departamentoExpedicion": "ATLANTICO", "descripcionEstado": "VIGENTE", "estadoCedula": "0", "fechaExpedicion": "31/12/1990", "fechaHoraConsulta": "2025-03-12 20:32:29", "municipioExpedicion": "BARRANQUILLA", "nuip": "000000000", "particula": "DE", "primerApellido": "Perez", "primerNombre": "Jose", "segundoApellido": "Perez", "segundoNombre": "Juan" } - COL2: "governmentValidationResponse": { "data": { "anio_resolucion": 0, "codigo_error_datos_cedula": 0, "codigo_respuesta": "", "departamento_expedicion": "ATLANTICO", "descripcion_estado": "Vigente", "estado_cedula": 0, "fecha_expedicion": "Mon, 31 Dec 1990 00:00:00 GMT", "informacion_adicional": "", "municipio_expedicion": "BARRANQUILLA", "nombre_completo": "Jose Juan Perez Perez", "nuip": 000000000, "numero_resolucion": 0, "particula": "DE", "primer_apellido": "Perez", "primer_nombre": "Jose", "segundo_apellido": "Perez", "segundo_nombre": "Juan" } } - ocrValidationOverall: - ocrValidationOverall: 100 - 15 each fail or unknown ocrValidation - status: ocrValidationOverall > 55 => OK, else FAIL - overall: same as ocrValidationOverall ARG: - statusCode: Integer. Value 0 means verification Ok. - governmentValidation - consists of following fieds: - validationStatus - following values: - OK (0, "ok") - FACE_COMPARISON_FAILED (207, "faceComparisonFailed") - PROCESSING (-4, "processing") - PROVIDER_NOT_CONFIGURED (96, "providerNotConfigured") - PROVIDER_UNAVAILABLE (98, "providerUnavailable") - USER_NOT_FOUND (7, "userNotFound") - VALIDATION_ERROR (1, "validationError") - NO_INFORMATION (204, "noInformation") IND: - statusCode: Integer. Value 0 means verification Ok. - otpResponse - indicates that OTP code is sent to user - authBridge - Provider name for Aadhar - otpCodeRequested - boolean - mobile - masked mobile number ******725 PER: - statusCode: 0 - OK, other not OK - governmentValidation - consists of following fieds: - validationStatus - following values: - OK (0, "ok"), - VALIDATION_ERROR (1, "validationError"), - INE_CONNECTION_ERROR (2, "ineConnectionError"), - USER_NOT_FOUND (7, "userNotFound"), - NOT_ENOUGH_DATA (9, "notEnoughData") - ocrValidation: Array of structure with following fields: - value: Possible values - true false empty - status: Possible values - OK FAIL UNKNOWN - key: Possible values - documentNumber firstName maternalLastName paternalLastName ocr birthDate gender - governmentValidationResponse: Response received from external source (see example) - ocrValidationOverall: - ocrValidationOverall: 100 - 15each fail or unknown ocrValidation - status: ocrValidationOverall > 55 => OK, else FAIL - overall: same as ocrValidationOverall CHL: - statusCode: 0 - OK, other not OK - governmentValidation - consists of following fieds: - validationStatus - following values: - OK (0, "ok"), - VALIDATION_ERROR (1, "validationError"), - INE_CONNECTION_ERROR (2, "ineConnectionError"), - USER_NOT_FOUND (7, "userNotFound"), - NOT_ENOUGH_DATA (9, "notEnoughData") - ocrValidation: Array of structure with following fields: - value: Possible values - true false empty - status: Possible values - OK FAIL UNKNOWN - key: Possible values - documentNumber firstName maternalLastName paternalLastName ocr birthDate gender - governmentValidationResponse: Response received from external source (see example) - ocrValidationOverall: - ocrValidationOverall: 100 - 15*each fail or unknown ocrValidation - status: ocrValidationOverall > 55 => OK, else FAIL - overall: same as ocrValidationOverall AUS: - statusCode: 0 - OK, other not OK - valid: Boolean. Flag stating if request processed successfully. - governmentValidation - consists of following fields: - validationStatus - following values: - OK (0, "ok"), - USER_NOT_FOUND (7, "userNotFound"), - NOT_ENOUGH_DATA (9, "notEnoughData"), - CONNECTION_ERROR (17, "connectionError") - ocrValidation: Array of structure with following fields: - value: Possible values - true false - status: Possible values - OK FAIL - key: Possible values - documentNumber firstName paternalLastName birthDate expirationDate issueDate - ocrValidationOverall: - value: Calculated value between 0 and 100 - status: OK or FAIL based on calculation - overall: Same as ocrValidationOverall - errorDescription: String. Present only in error responses with values like "userNotFound", "notEnoughData", "connectionError" BRA: - statusCode: 0 - OK, other not OK. Always mirrors validationStatus and is independent of the overall score. - valid: Boolean. True when validationStatus is OK (statusCode 0), i.e. CPF found. Note this tracks validationStatus, NOT the overall score: an OCR-field mismatch or a SERPRO_FACE face mismatch can leave valid=true while overall is FAIL. - governmentValidation - consists of following fields: - validationStatus - following values: - OK (0, "ok"): CPF found, data and/or face matched - VALIDATION_ERROR (1, "validationError") - MODULE_NOT_SUPPORTED (4, "moduleNotSupported") - MISSING_SELFIE (6, "missingSelfie"): required for SERPRO_FACE - USER_NOT_FOUND (7, "userNotFound"): CPF not found, or face not matched - CPF_NUMBER_INVALID_OR_MISSING (16, "cpfNumberInvalidOrMissing") - CONNECTION_ERROR (17, "connectionError") - PROVIDER_NOT_CONFIGURED (96, "providerNotConfigured") - PROVIDER_UNAVAILABLE (98, "providerUnavailable") - GEOGRAPHIC_REGION_NOT_SUPPORTED (99, "geographicRegionNotSupported") - recognitionConfidence: Present when government face validation is attempted (e.g. SERPRO_FACE). - value: "100.0" when face matched, "0.0" when no match or face not in SERPRO DB - status: OK when matched, FAIL otherwise - ocrValidation: Array of structure with following fields (present for both SERPRO and SERPRO_FACE when validationStatus is OK): - value: Possible values - true false - status: Possible values - OK FAIL UNKNOWN - key: Possible values - documentNumber fullName birthDate Note: fullName is derived from firstName, paternalLastName, and maternalLastName, which all map to the same SERPRO nome field and always share the same status. - ocrValidationOverall: - value: Calculated value between 0 and 100 - status: OK or FAIL based on calculation - overall: Equals ocrValidationOverall for SERPRO. For SERPRO_FACE the face recognitionConfidence can override it (e.g. face not in DB / not matched drives overall to 0.0 FAIL even when ocrValidationOverall is OK). - errorDescription: String. Present only in error responses

Response body (application/json):

Field Type Required Description
valid boolean
statusCode integer (int32)
governmentValidation GovernmentValidation - recognitionConfidence: Present when government face validation is attempted (e.g. SERPRO_FACE). - value: "100.0" when face matched, "0.0" when no match or face not in SERPRO DB - status: OK when face matched, FAIL when no match or face not in SERPRO DB - validationStatus: Key-value mapping: - OK (0, "ok"): CPF found, data and/or face matched - VALIDATION_ERROR (1, "validationError") - MODULE_NOT_SUPPORTED (4, "moduleNotSupported") - MISSING_SELFIE (6, "missingSelfie"): selfie required for SERPRO_FACE - USER_NOT_FOUND (7, "userNotFound"): CPF not found in government DB, or face not matched - CPF_NUMBER_INVALID_OR_MISSING (16, "cpfNumberInvalidOrMissing") - CONNECTION_ERROR (17, "connectionError") - PROVIDER_NOT_CONFIGURED (96, "providerNotConfigured") - PROVIDER_UNAVAILABLE (98, "providerUnavailable") - GEOGRAPHIC_REGION_NOT_SUPPORTED (99, "geographicRegionNotSupported") - ocrValidation: List of value/status/key objects. Keys present for Brazil: - documentNumber: CPF validity check - fullName: name match (derived from firstName, paternalLastName, maternalLastName — all map to the same SERPRO nome field and always share the same status) - birthDate: date of birth match Not all keys are always present. - ocrValidationOverall: Composite result for ocrValidation score - overall: Equals ocrValidationOverall for SERPRO; for SERPRO_FACE the face recognitionConfidence can override it (e.g. face not in DB / not matched drives overall to 0.0 FAIL even when ocrValidationOverall is OK)
governmentValidation.recognitionConfidence ResultBean
governmentValidation.recognitionConfidence.value string
governmentValidation.recognitionConfidence.status string Enum: OK, WARN, FAIL, UNKNOWN, MANUAL, MANUAL_OK, MANUAL_FAIL, MANUAL_PENDING
governmentValidation.fingerprintConfidence ResultBean
governmentValidation.fingerprintConfidence.value string
governmentValidation.fingerprintConfidence.status string Enum: OK, WARN, FAIL, UNKNOWN, MANUAL, MANUAL_OK, MANUAL_FAIL, MANUAL_PENDING
governmentValidation.minimumPassingFingerprints integer (int32)
governmentValidation.validationStatus IdResultBean
governmentValidation.validationStatus.value string
governmentValidation.validationStatus.status string Enum: OK, WARN, FAIL, UNKNOWN, MANUAL, MANUAL_OK, MANUAL_FAIL, MANUAL_PENDING
governmentValidation.validationStatus.key string
governmentValidation.ocrValidation array[IdResultBean]
governmentValidation.ocrValidation.value string
governmentValidation.ocrValidation.status string Enum: OK, WARN, FAIL, UNKNOWN, MANUAL, MANUAL_OK, MANUAL_FAIL, MANUAL_PENDING
governmentValidation.ocrValidation.key string
governmentValidation.ocrValidationOverall ResultBean
governmentValidation.ocrValidationOverall.value string
governmentValidation.ocrValidationOverall.status string Enum: OK, WARN, FAIL, UNKNOWN, MANUAL, MANUAL_OK, MANUAL_FAIL, MANUAL_PENDING
governmentValidation.overall ResultBean
governmentValidation.overall.value string
governmentValidation.overall.status string Enum: OK, WARN, FAIL, UNKNOWN, MANUAL, MANUAL_OK, MANUAL_FAIL, MANUAL_PENDING
governmentValidation.provider string
governmentValidation.appliedRule AppliedFlowRule Specific rule from rule engine
governmentValidation.appliedRule.name string Name of the rule.
governmentValidation.appliedRule.expression string A logical expression of the rule.
governmentValidation.appliedRule.ruleType string Enum: idValidation, secondIdValidation, faceValidation, liveness, deepsight, eKyc, videoselfie, faceAuthentication, total, phoneRisk, emailRisk, governmentValidation
governmentValidation.appliedRule.status string Enum: OK, WARN, FAIL, UNKNOWN, MANUAL, MANUAL_OK, MANUAL_FAIL, MANUAL_PENDING
errorDescription string

400

Bad Request

Response body (application/json):

Field Type Required Description
timestamp integer (int64) UTC timestamp in milliseconds
status integer (int32) Custom error code or HTTP status code
error string HTTP status error
message string Custom error message
path string Endpoint path
details object Custom error details
Was this page helpful?