API REST
Todos los endpoints están bajo https://api.saremi.io/v1/verify/ y requieren
el header X-API-Key (ver Autenticación).
Verificación automática (recomendada)
POST /v1/verify/document
Content-Type: multipart/form-dataEnvías el archivo y SAREMI detecta el tipo de documento automáticamente (por texto extraído, y si no es suficiente, con clasificación visual). Es el endpoint recomendado para la mayoría de integraciones.
| Campo (form-data) | Requerido | Descripción |
|---|---|---|
file | Sí | El PDF o imagen a verificar (PDF, JPEG, PNG, WEBP) |
document_type_hint | No | Fuerza el tipo si lo conoces de antemano (ver Tipos de documento) — tiene prioridad sobre la auto-detección |
original_filename | No | Nombre original del archivo, para tus reportes |
client_reference_id | No | Tu identificador interno (expediente, id de tu sistema, etc.) |
pending_id | No | Id devuelto por /v1/verify/pending, si lo usaste primero |
curl -X POST https://api.saremi.io/v1/verify/document \
-H "X-API-Key: TU_API_KEY" \
-F "file=@ine_frontal.jpg" \
-F "client_reference_id=expediente-1234"Endpoints por tipo de documento
Si ya sabes el tipo de documento, puedes llamar directamente al endpoint
específico en vez de /document — evita el paso de auto-detección:
Todos aceptan multipart/form-data con un campo file, y responden el mismo
modelo de respuesta que /document.
Registrar antes de analizar (opcional)
POST /v1/verify/pendingCrea un registro en estado processing antes de que termine el análisis
— útil si tu flujo necesita mostrar “en revisión” de inmediato. Devuelve
{ "id": "..." }, que puedes pasar como pending_id a la llamada real.
Modelo de respuesta
Todos los endpoints de verificación devuelven el mismo objeto:
{
"document_type": "ine",
"status": "verified",
"confidence_score": 0.925,
"extracted_data": {
"full_name": "JUAN PÉREZ LÓPEZ",
"curp": "PELJ800101HDFRPN09"
},
"checks": [
{ "name": "curp_format", "status": "passed", "detail": "El formato del CURP es válido" }
],
"conclusion": "Documento verificado correctamente...",
"warnings": [],
"fraud_flags": [
{
"code": "AI_GENERATED",
"severity": "critical",
"description": "El documento presenta patrones consistentes con generación por IA",
"source_check": "image_authenticity"
}
],
"processing_time_ms": 18432
}extracted_data varía según el tipo de documento — un INE devuelve
curp/full_name/domicilio, un estado de cuenta devuelve
banco/saldo/ingresos, etc. La forma de checks, status y fraud_flags es
siempre la misma.