v1

latestOpenAPI 3.1.0Apache 2.02026-07-24113269342.0 KB
Government validation

Process government validation

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.
post/omni/process/government-validation

Query parameters

fallbackEnabledboolean
scrapingMethodboolean
scrapingV2boolean
scrapingV3boolean
telcelboolean
interviewIdstring
countryCodestring

Headers

api-versionstring required

Request body

ocrstring
cicstring
nombrestring
apellidoPaternostring
apellidoMaternostring
anioRegistrostring
anioEmisionstring
numeroEmisionCredencialstring
claveElectorstring
curpstring
base64Imagestring
idNumberstring
fechaEmisionstring
personalNumberstring
birthDatestring
genderstring
birthPlacestring
addressstring
latitudestring
longitudestring
macAddressstring
ipstring
osVersionstring
applicationNamestring
sufixstring
firstNamestring
givenNamestring
middleNamestring
maternalLastNamestring
paternalLastNamestring
documentType'Unknown' | 'Passport' | 'Visa' | 'DriversLicense' | 'IdentificationCard' | 'Permit' | 'Currency' | 'ResidenceDocument' | 'TravelDocument' | 'BirthCertificate' | 'VehicleRegistration' | 'Other' | 'WeaponLicense' | 'TribalIdentification' | 'VoterIdentification' | 'Military' | 'TaxIdentification' | 'FederalID' | 'MedicalCard'
refNumberstring
issuerStatestring
documentTypeIdinteger
issuedAtstring
documentNumberstring
expireAtstring
eyeColorstring
heightstring
weightstring
citystring
postalCodestring
emailstring
fullNamestring
nationalitystring
dateFormatstring

Response

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 - 15*each 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
OR

Example response

{
  "deviceInfo": {
    "getmAdminArea": "CA",
    "getmSubAdminArea": "Santa Clara",
    "getmSubLocality": "Mission District",
    "getmCountryCode": "US",
    "getmCountryName": "United States",
    "hostingApp": "Onboarding"
  }
}