Inyo

Sesiones de Verificación

Una sesión representa una verificación de identidad. Al crearla se devuelve una widget_url que usted entrega a su cliente, y un session_id que usa para correlacionar el resultado.


Crear una Sesión

Endpoint: POST /v1/sessions
Autenticación: token Bearer con el scope sessions

curl --request POST \
  --url https://{FQDN}/v1/sessions \
  --header "Authorization: Bearer $ACCESS_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "user_ref": "user-123",
  "language": "es",
  "delivery": { "mode": "webhook" }
}'
{
  "session_id": "9f1c8e42-7c3e-4f2b-9d7a-2b1e5c8f4a10",
  "status": "pending",
  "widget_url": "https://{FQDN}/verify/8Kd2mQ…"
}

Campos de la Solicitud

CampoTipoRequeridoDescripción
user_refstring (1-255)Su identificador de la persona que se verifica. Se devuelve en cada resultado
prefillobjectNoDatos conocidos sobre la persona — vea Prefill
data_checkbooleanNofalse (predeterminado) verifica el documento tal como se presenta. true además compara los datos extraídos contra prefill — vea Verificaciones de Datos
deliveryobjectNoCómo le llega el resultado. El valor predeterminado es {"mode": "webhook"}
languagestringNoIdioma del widget, xx o xx-XX (p. ej. en, pt, es, pt-BR). Recurre a su valor predeterminado configurado
max_capture_attemptsinteger (1-10)NoAnula el valor predeterminado de su tenant solo para esta sesión

Campos de la Respuesta

CampoDescripción
session_idÚselo para correlacionar resultados y para llamar a GET /v1/sessions/{session_id}
statusSiempre pending al crearse
widget_urlEl enlace de cara al cliente. Contiene un código de un solo uso válido por 48 horas

Prefill

prefill transporta lo que usted ya sabe sobre la persona. Tiene dos efectos distintos.

CampoEfecto
document_typepassport, drivers_license o identity_card. Bloquea el widget a este documento — se omite la pantalla de selección de tipo, y un documento diferente es rechazado. Omítalo para dejar que el cliente elija
document_numberSe valida su formato en esta llamada (vea abajo), y queda disponible para verificación cruzada
issuing_stateCódigo o nombre de estado de EE. UU. para licencias de conducir; país ISO 3166-1 alpha-3 para pasaportes y cédulas de identidad. Afina la validación de formato
nationalityISO 3166-1 alpha-3. Se usa para resolver la jurisdicción cuando issuing_state está ausente
first_name, last_nameDisponibles para verificación cruzada
date_of_birthYYYY-MM-DD. Disponible para verificación cruzada
{
  "user_ref": "user-123",
  "prefill": {
    "document_type": "drivers_license",
    "issuing_state": "PA",
    "document_number": "31612967",
    "first_name": "Ana",
    "last_name": "Silva",
    "date_of_birth": "1988-03-04"
  }
}

Los campos de prefill distintos de document_type no cambian la decisión a menos que configure data_check: true. Sin él, los valores se transportan para comparación y se reportan en el resultado, pero una discrepancia no enruta la sesión a ninguna parte.

Sin embargo, prefill.document_number se valida en esta llamada: un número que viola el formato conocido de su jurisdicción se rechaza con 422 en lugar de aceptarse y fallar después. Verifique un número antes de llegar aquí con el endpoint validador.


Verificaciones de Datos

Configure data_check: true para verificar que el documento pertenece a la persona que usted esperaba — no solo que el documento es genuino.

{
  "user_ref": "user-123",
  "data_check": true,
  "prefill": {
    "first_name": "Ana",
    "last_name": "Silva",
    "date_of_birth": "1988-03-04"
  }
}

Con data_check: true:

  • Los datos extraídos se comparan campo por campo contra el payload de prefill.
  • El resultado incluye prefill_comparison (resultados por campo, incluidos puntajes de coincidencia difusa de nombres) y prefill_mismatches (los nombres de los campos que discreparon).
  • Una discrepancia agrega una verificación blanda fallida, enrutando la sesión a in_review en lugar de rechazarla.

Los nombres se comparan con coincidencia difusa contra un umbral de similitud configurable, de modo que las variaciones ordinarias de ortografía y transliteración no generan falsas discrepancias. data_check: true sin un payload de prefill es un 422 — no habría nada contra qué comparar.


Entrega

ModoCamposComportamiento
webhook (predeterminado)El resultado se envía vía POST a su webhook_url configurada
redirectredirect_url (requerido)El cliente es devuelto a su URL con el resultado y una firma
{ "delivery": { "mode": "redirect", "redirect_url": "https://you.example/kyc-done" } }

Solicitar el modo webhook sin una webhook_url configurada para su tenant es un 422. Consulte Recepción de Resultados para la verificación de firmas en ambos modos.


Respuestas de Error

Todas estas devuelven 422 con un detail que explica la causa específica:

CausaNotas
delivery.mode es webhook pero no hay una webhook_url configuradaPida a Inyo registrar su endpoint, o use el modo redirect
Falta delivery.redirect_url en modo redirectRequerido siempre que mode sea redirect
document_type no está habilitado para su tenantEl mensaje lista los tipos de documento que puede solicitar
La jurisdicción emisora del documento no está aceptada para ese tipo de documentoEl mensaje lista las jurisdicciones que usted acepta
prefill.document_number falló la validación de formatoEl mensaje nombra la regla que lo rechazó
data_check: true sin payload de prefillProporcione al menos un campo de prefill comparable

Las fallas de autenticación y autorización devuelven 401 o 403 — vea Autenticación.


Consultar una Sesión

Endpoint: GET /v1/sessions/{session_id}
Autenticación: token Bearer con el scope sessions

Este es el registro autoritativo de una verificación. Consúltelo cuando necesite una garantía en lugar de un push, para conciliar un webhook que pudo haber perdido, o para leer el resultado de una sesión que fue a revisión manual.

curl --request GET \
  --url https://{FQDN}/v1/sessions/$SESSION_ID \
  --header "Authorization: Bearer $ACCESS_TOKEN"
{
  "session_id": "9f1c8e42-7c3e-4f2b-9d7a-2b1e5c8f4a10",
  "user_ref": "user-123",
  "status": "in_review",
  "step": "done",
  "delivery_mode": "webhook",
  "result": { "…": "the normalized result, updated in place" },
  "created_at": "2026-07-31T14:02:11.481Z",
  "updated_at": "2026-07-31T14:04:57.902Z"
}
CampoDescripción
statuspending, approved, declined, in_review o expired
stepHasta dónde llegó el cliente: document_front, document_back, selfie o done
delivery_modewebhook, redirect o sync (una verificación servidor a servidor)
resultEl resultado normalizado completo una vez disponible, null antes de eso. Se actualiza en el mismo lugar cuando un analista decide

Las sesiones están estrictamente limitadas al tenant. El session_id de otro tenant devuelve 404 — nunca una divulgación parcial.


Validar un Número de Documento

Endpoint: POST /v1/validators/document-number
Autenticación: no requerida

Una verificación de formato sin estado contra el mismo registro que usa el pipeline de verificación: formatos de licencia de conducir de EE. UU. para los 50 estados y DC, formatos de pasaporte por país, y formatos de cédula de identidad donde la jurisdicción define uno. No se almacena nada y no se consume ninguna verificación. Útil para validar la entrada en su propio formulario antes de crear una sesión.

curl --request POST \
  --url https://{FQDN}/v1/validators/document-number \
  --header 'Content-Type: application/json' \
  --data '{
  "document_type": "drivers_license",
  "number": "31612967",
  "issuing_state": "PA"
}'
{
  "document_type": "drivers_license",
  "number": "31612967",
  "issuing_state": "PA",
  "valid": true,
  "rule": "us_dl:PA",
  "detail": "document number matches the PA license format"
}

valid es deliberadamente de tres valores:

ValorSignificadoCómo tratarlo
trueCoincide con el formato conocido de esa jurisdicciónAceptar
falseViola el formato conocidoRechazar antes de crear la sesión
nullNo existe una regla para esa jurisdicciónAceptar — una jurisdicción desconocida nunca es una falla

rule identifica qué regla se aplicó — us_dl:PA, passport:USA, passport:generic, o us_dl:unknown_state cuando se envió una licencia sin un estado resoluble (lo que produce valid: null). issuing_state es un código o nombre de estado de EE. UU. para licencias de conducir, y un código de país ISO 3166-1 alpha-3 para pasaportes y cédulas de identidad.


Próximos Pasos