Skip to content
ES

API — Documentos

This content is not available in your language yet.

Los endpoints de documentos cruzan el documento de identidad del usuario por OCR (y MRZ cuando aplica) y lo consolidan en la sesión. Requieren API key (X-API-Key: zkyc_...).

Prefijo: /v1/documents. La verificación de identidad y el comprobante de domicilio usan multipart/form-data; la validación contra bases de datos usa JSON.

MétodoRutaAuthCuerpoDescripción
POST/v1/documents/id-verificationAPI keymultipartOCR + MRZ del documento de identidad
POST/v1/documents/poaAPI keymultipartComprobante de domicilio (próximamente)
POST/v1/documents/database-validationAPI keyJSONValidación contra bases gubernamentales
POST /v1/documents/id-verification
X-API-Key: zkyc_...
Content-Type: multipart/form-data
CampoTipoRequeridoDescripción
front_imagearchivoAnverso del documento
back_imagearchivoNoReverso del documento
sessionIdtextoNoSesión a la que consolidar el resultado

Respuesta:

{
"ok": true,
"result": {
"idStatus": "approved",
"mrzValid": true,
"fullName": "JOHN DOE",
"documentType": "passport",
"documentNumber": "X1234567",
"dateOfBirth": "1990-05-12",
"nationality": "USA",
"expirationDate": "2030-05-11",
"confidence": 0.97
}
}
idStatusSignificado
approvedOCR correcto y MRZ válido (o sin MRZ)
in_reviewBaja confianza o MRZ inválido → revisión manual
declinedDocumento ilegible

Este endpoint no decide la aprobación final de la sesión: escribe id_status y la decisión global se recalcula a partir de todas las features. Si se envía sessionId, el resultado se consolida y se reevalúa la sesión.

Ventana de terminal
curl -X POST https://kyc.zentto.net/v1/documents/id-verification \
-H "X-API-Key: $KYC_API_KEY" \
-F "front_image=@./front.jpg" \
-F "back_image=@./back.jpg" \
-F "sessionId=9b1c0e2a-..."
const res = await kyc.documents.idVerification({
sessionId: "9b1c0e2a-...",
frontImage: { data: frontBuf, filename: "front.jpg", contentType: "image/jpeg" },
backImage: { data: backBuf, filename: "back.jpg", contentType: "image/jpeg" },
});
console.log(res.result.idStatus);

Si falta front_image, la API responde 400 missing_file.

POST /v1/documents/poa
X-API-Key: zkyc_...
Content-Type: multipart/form-data
CampoTipoRequerido
documentarchivo
sessionIdtextoNo

Actualmente responde 501 not_implemented: el microservicio de inferencia aún no expone OCR de comprobantes de domicilio. La firma del SDK (kyc.documents.proofOfAddress) ya existe y queda lista para cuando se habilite.

{ "ok": false, "error": "not_implemented" }

Cruza la identidad contra bases gubernamentales / registros civiles mediante un proveedor país-específico (patrón adaptador). Por defecto, sin proveedor configurado para el país, el status es unsupported.

POST /v1/documents/database-validation
X-API-Key: zkyc_...
Content-Type: application/json
{
"issuingState": "us",
"validationType": "identity",
"fullName": "John Doe",
"dateOfBirth": "1990-05-12",
"documentNumber": "X1234567"
}
CampoTipoDescripción
issuingStatestring 2–8País emisor (ISO 3166-1 alpha-2)
validationTypestring 1–60Tipo de validación
fullNamestring 2–200Nombre completo
dateOfBirthstringFecha de nacimiento
documentNumberstring 1–80Número de documento

Respuesta:

{ "ok": true, "provider": "null", "result": { "status": "unsupported" } }

El campo provider indica el adaptador resuelto para el país. Si no hay adaptador, provider es el proveedor por defecto y result.status es unsupported.

const res = await kyc.documents.databaseValidation({
issuingState: "us",
validationType: "identity",
fullName: "John Doe",
dateOfBirth: "1990-05-12",
documentNumber: "X1234567",
});

Vista no técnica: el usuario sube su documento y el sistema lo valida automáticamente.

Flujo del usuario — KYC · Documentos

Editable en draw.io: descarga el SVG → en draw.io: File → Import from → Device → selecciona el SVG. Cada nodo queda editable.

Vista técnica: POST multipart → inferencia OCR+MRZ (PaddleOCR) → resultado → actualiza sesión.

Flujo técnico — KYC · Documentos

ComponenteTipoUbicación
POST /v1/documents/id-verificationRoute Express (multipart)src/documents/routes.ts
POST /v1/documents/poaRoute Express (próximamente)src/documents/routes.ts
POST /v1/documents/database-validationRoute Express (JSON)src/documents/routes.ts
src/documents/adapters/Patrón adaptador por paíssrc/documents/adapters/
POST /v1/ocrInferencia OCR (FastAPI :5200)inference/app/routers/ocr.py
inference/app/models/ocr.pyModelo PaddleOCRinference/app/models/ocr.py
sessionsTabla (UPSERT por sessionId)src/db/migrations/
session_resultsTabla resultados (id_status, mrz_valid)src/db/migrations/

Editable en draw.io: descarga el SVG → File → Import from → Device.