SDK de verificación de identidad diseñado para República Dominicana. Procesamiento biométrico completo en el dispositivo — ningún dato sensible abandona el teléfono de tu usuario.
Integración en minutos. Un paquete Flutter, cero servicios cloud de terceros.
Guías visuales en tiempo real que asisten al usuario. Validación automática de enfoque, iluminación, reflejos y bordes. Detección de cédulas dominicanas con recorte y corrección de perspectiva.
Extracción automática de número de cédula, nombre, fecha de nacimiento, sexo y fecha de expiración. Lectura de zona MRZ con validación de checksums ICAO 9303 y cross-check automático.
Generación de embeddings faciales de 128/512 dimensiones directamente en el dispositivo. Comparación por cosine similarity con umbrales configurables. Cero datos biométricos en la nube.
Prueba de vida con desafíos activos: parpadeo, rotación de cabeza, sonrisa. Anti-spoofing para detectar fotos impresas, pantallas y deepfakes. Stream de cámara optimizado a 60fps.
Módulo listo para conectar con la API de la Junta Central Electoral. Endpoints, tokens y timeouts configurables. Reintentos con backoff exponencial. El cliente provee su API Key.
Arquitectura modular con interfaces ISO 14443 definidas para futura lectura de chip NFC. Stubs de prueba incluidos. Sin refactorización al implementar — solo reemplazar el stub.
Solo la validación con la JCE requiere conexión a internet. Todo lo demás funciona offline.
Inicializa el SDK, procesa los documentos y obtén un veredicto — todo en código Dart limpio.
final engine = KycEngine( config: KycSdkConfig( thermalConfig: ThermalConfig(), jceConfig: JceConfig( baseUrl: 'https://api.jce.gob.do/v1', apiKey: 'YOUR_KEY', ), ), ); await engine.initialize(); final session = engine.startSession(); await engine.processDocumentFront(frontBytes); await engine.processDocumentBack(backBytes); await engine.processSelfie(selfieBytes); final result = await engine.complete(); // result.verdict → approved | rejected | review
El SDK valida tu licencia en cada inicio y al regresar del background. Los modelos de IA se descargan cifrados y llevan nombres propietarios para evitar plagio.
El SDK envía tu API Key a nuestro servidor de licencias. Se valida el plan, verificaciones restantes y features habilitados.
Si la licencia es válida, se descargan los modelos de IA cifrados con AES-256. Solo se almacenan en RAM — nunca en disco en claro.
Se re-valida automáticamente. Si fue revocada, el SDK se desactiva de inmediato.
Si no hay conexión, el SDK funciona hasta 24h con la última validación exitosa. Después se desactiva hasta reconectar.
// 1. Configurar licencia final license = LicenseService( config: LicenseConfig( licenseServerUrl: 'https://api.veribitid.com', sdkApiKey: 'sk_live_aBcDeFgHiJkLmN...', gracePeriod: Duration(hours: 24), validateOnResume: true, ), ); // 2. Validar al iniciar final info = await license.validateLicense(); if (!info.isUsable) { // Licencia inválida — SDK bloqueado return; } // 3. Descargar modelos cifrados license.downloadProgressStream.listen((p) { print('${p.statusMessage}'); }); await license.downloadModels(); // 4. Re-validar al volver del background await license.validateOnResume();
Los modelos se distribuyen con nombres ofuscados y cifrado AES-256-GCM. Internamente usan tecnología de vanguardia, pero están protegidos contra ingeniería inversa y reproducción no autorizada.
| Modelo Público | ID | Función | Protección |
|---|---|---|---|
| VR Core Encoder | vr-core-enc-v3 | Generación de embeddings faciales de 128/512 dimensiones | AES-256 + SHA-256 |
| LV Sentinel | lv-sentinel-v2 | Detección de vida activa y anti-spoofing | AES-256 + SHA-256 |
| FD Detect | fd-detect-v4 | Localización y detección facial en tiempo real | AES-256 + SHA-256 |
| DR Extractor | dr-extract-v2 | OCR optimizado para documentos dominicanos | AES-256 + SHA-256 |
Los modelos viajan cifrados desde nuestro servidor. Se descifran solo en memoria RAM para ejecución. Nunca tocan el disco del dispositivo en formato legible.
La licencia se vincula a un fingerprint único del dispositivo. Un API Key no puede reutilizarse en dispositivos no autorizados.
Si se detecta uso no autorizado, la licencia se revoca desde el servidor. El SDK se desactiva completamente y limpia los modelos de memoria.
La diferencia entre "procesamos datos de forma segura" y "los datos nunca salen del teléfono".
API limpia y predecible. Todo tipado, todo documentado.
Carga los modelos ML (FaceNet, liveness). Llamar una vez antes de usar el engine.
Inicia una nueva sesión de verificación con UUID único. Limpia sesión anterior si existe.
Procesa la imagen del frente de la cédula. Ejecuta OCR on-device y retorna datos extraídos con niveles de confianza por campo.
Procesa el reverso de la cédula. Extrae y valida la zona MRZ con checksums ICAO 9303. Cross-check automático contra datos OCR.
Captura selfie con liveness detection activa. Genera embeddings FaceNet on-device y compara contra la foto del documento.
Valida contra la API de la JCE (requiere JceConfig con API Key del cliente). Reintentos automáticos con backoff exponencial.
Genera resultado final con veredicto (APPROVED / REJECTED / REVIEW / ERROR), scores biométricos detallados y timestamps.
Stream reactivo del estado del proceso. Emite status, mensaje descriptivo y progreso (0.0 - 1.0) para actualizar la UI.
Consume el stream de cámara y ejecuta liveness detection en tiempo real. Soporte completo para formatos nativos de Android e iOS.
| Parámetro | Tipo | Descripción |
|---|---|---|
cameraStream |
Stream<CameraFrame> | Stream de frames raw del plugin de cámara |
challengeType |
LivenessChallengeType | blink, turnLeft, turnRight, smile, nod |
timeout |
Duration | Tiempo máximo para completar el desafío (default: 15s) |
Resultado de análisis por frame: detección facial, head pose, anti-spoofing, parpadeo, sonrisa.
Convierte cualquier formato de cámara nativo a RGBA. Soporta YUV NV21 (Android), NV12 (iOS), BGRA8888 (iOS), JPEG.
Conversión rápida a escala de grises. Para YUV, extrae directamente el plano Y — ideal para detección facial rápida.
Pipeline completo: convierte, rota, y redimensiona a las dimensiones exactas del modelo ML.
| Formato | Plataforma | Planos | Rendimiento |
|---|---|---|---|
yuv420_nv21 |
Android | Y + VU interleaved | Rápido (nativo Android) |
yuv420_nv12 |
iOS / Android | Y + UV interleaved | Rápido (nativo iOS) |
bgra8888 |
iOS | BGRA single plane | Medio (4 bytes/px) |
jpeg |
Ambas | Comprimido | Lento (decode) |
Valida la API Key contra el servidor de licencias. Debe llamarse al iniciar la app.
Re-valida la licencia al regresar del background. Diseñado para WidgetsBindingObserver.
Descarga los 4 modelos de IA cifrados. Solo funciona con licencia activa.
Stream reactivo del estado de licencia. Emite cambios cuando la licencia se valida, expira o revoca.
Progreso en tiempo real de la descarga de modelos. Ideal para mostrar barra de progreso al usuario.
| Estado | Significado | SDK Operativo |
|---|---|---|
active |
Licencia válida y verificada | Sí |
gracePeriod |
Sin conexión, pero validada previamente (hasta 24h) | Sí |
expired |
Licencia expirada — requiere renovación | No |
revoked |
Revocada por uso no autorizado | No |
invalid |
API Key incorrecta o malformada | No |
offline |
Sin conexión y sin validación previa | No |
KycSdkConfig( // Térmica — controla calor del dispositivo thermalConfig: ThermalConfig( maxImageQuality: ImageQualityLevel.medium, processingStrategy: ProcessingStrategy.adaptive, frameProcessingIntervalMs: 100, maxAnalysisFps: 10, enableThermalThrottling: true, maxImageSizeBytes: 2 * 1024 * 1024, ), // Biométrica — umbrales de aceptación biometricThresholds: BiometricThresholds( faceMatchThreshold: 0.6, livenessThreshold: 0.85, faceQualityThreshold: 0.7, ), // JCE — opcional, requiere API Key del cliente jceConfig: JceConfig( baseUrl: 'https://api.jce.gob.do/v1', apiKey: 'CLIENT_API_KEY', timeout: Duration(seconds: 30), maxRetries: 3, ), // General locale: 'es', detectRootedDevice: true, )
Sin costos ocultos. Solo pagas por verificaciones completadas exitosamente.
Sin compromiso mensual. $1.10 USD por verificación completa.
Tarifa mínima: $49/mes. Solo verificaciones exitosas.
Agenda una demo técnica y recibe acceso sandbox en 24 horas.
Solicitar Demo TécnicaSanto Domingo, República Dominicana · contacto@empresa.com