---
title: Revalidación silenciosa
description: Utiliza el motor de Revalidación Inteligente, que analiza el contexto de comportamiento del usuario dentro del efecto de red de Unico, para entregar una señal de confianza de la transacción actual — es decir, el nivel de confianza de que se trata del usuario esperado.
canonical: https://developer.unico.io/es/dual-api/developers/sdks-and-tools/android/smart-revalidation/silent-revalidation
locale: es
generated_by: markdown-export
---

## Atributos de PrepareInfo

| Atributo | Tipo | Requerido | Descripción |
|---|---|:-:|---|
| `externalUserId` | `String` | ✅ | Identificador del usuario en tu sistema. Se aplica automáticamente un hash SHA-256 antes de la transmisión, nunca se envía en texto plano. |

## Iniciar una Revalidación silenciosa

****Paso 1** — Implementar `initializeSDK`**

Crea una nueva clase u objeto `UnicoSDK`, con un método estático `initializeSDK` que devuelve la instancia de `UnicoSDK`, recibiendo el `context` y un `UnicoSDKConfig` con tu `sdkKey`, `bundleId` y `environment`. Guarda la instancia devuelta — la necesitarás más adelante para llamar a `startSilentValidation` desde Java.

  :::warning[Llámalo al iniciar la app]
  `UnicoSDK.initializeSDK` debe llamarse lo antes posible al iniciar la app (por ejemplo, en `Application.onCreate`). Llamarlo más tarde reduce el tiempo de procesamiento en segundo plano y aumenta la probabilidad de respuestas de autenticación no concluyentes.
  :::

  ### Kotlin

    ```kotlin
    UnicoSDK.initializeSDK(
        context,
        UnicoSDKConfig(
            sdkKey = "your_sdk_key",
            bundleId = "your_bundle_id",
            environment = Environment.UAT
        )
    )
    ```

### Java

    ```java
    UnicoSDK sdk = UnicoSDK.initializeSDK(
        context,
        new UnicoSDKConfig("your_sdk_key", "your_bundle_id", Environment.UAT)
    );
    ```

****Paso 2** — Implementar `startSilentValidation`**

Después de `initializeSDK`, asocia la recolección que ya está en curso con el usuario identificado llamando a `startSilentValidation` con un `PrepareInfo` que contenga el `externalUserId`.

  ### Kotlin

    ```kotlin
    val prepareInfo = PrepareInfo(
        externalUserId = "external_user_id"
    )

    UnicoSDK.startSilentValidation(prepareInfo)
        .onSuccess { result -> /* ... */ }
        .onFailure { error -> /* ... */ }
    ```

### Java

:::info[Java requiere un puente de Kotlin]
    `startSilentValidation` es una función suspendida (suspend) de Kotlin y no puede llamarse directamente desde Java. Agrega un pequeño puente de Kotlin a tu proyecto que inicie la corrutina y exponga una interfaz de callback simple.
    :::

    ```kotlin
    interface SilentAuthCallback {
        fun onSuccess(success: Boolean)
        fun onFailure(message: String?)
    }

    object SilentAuthBridge {

        @JvmStatic
        fun startSilentValidation(
            owner: LifecycleOwner,
            sdk: UnicoSDK,
            externalUserId: String,
            callback: SilentAuthCallback
        ) {
            owner.lifecycleScope.launch {
                val result = sdk.startSilentValidation(PrepareInfo(externalUserId, null))
                result.onSuccess { callback.onSuccess(it.success) }
                    .onFailure { callback.onFailure(it.message) }
            }
        }
    }
    ```

    ```java
    SilentAuthBridge.startSilentValidation(this, sdk, externalUserId, new SilentAuthCallback() {
        @Override
        public void onSuccess(boolean success) {
            /* ... */
        }

        @Override
        public void onFailure(String message) {
            /* ... */
        }
    });
    ```

  Si la validación ocurre al inicio del flujo, por ejemplo durante el inicio de sesión, espera el callback `onSuccess` antes de continuar con el Paso 3.

****Paso 3** — Crear el proceso y autenticar**

Con la validación en curso, crea el proceso de verificación para completar la autenticación. Consulta [Referencia de API ▸ API ▸ Crear proceso](/dual-api/developers/api-reference/api/post-processes).

  Incluye el mismo `externalUserId` enviado en el `PrepareInfo` del Paso 2 en el cuerpo de la solicitud — esto es lo que permite al backend correlacionar la creación del proceso con la validación que ya está en curso.

  ```bash
  curl -X POST https://api.id.unico.app/processes/v1 \
    -H "Authorization: Bearer $TOKEN" \
    -H "APIKEY: $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "subject": {
        "duiType": 1,
        "code": "12345678909",
        "name": "Luke Skywalker",
        "gender": "M",
        "birthDate": "2000-05-20",
        "email": "luke@example.com",
        "phone": "5519725570707"
      },
      "useCase": "Onboarding",
      "externalUserId": "external_user_id",
      "imageBase64": "/9j/4AAQSkZJR..."
    }'
  ```

  La respuesta incluye el campo `silentAuth.result` con el resultado de la autenticación:

  ```json
  {
      "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
      "status": 3,
      "silentAuth": {
          "result": "yes"
      }
  }
  ```

  | Campo | Tipo | Descripción |
  |---|---|---|
  | `silentAuth.result` | string | `yes` o `no` — consulta los valores posibles a continuación. |

  <details>
  **`silentAuth.result` — valores posibles**

  | Valor | Significado |
  |---|---|
  | `yes` | Autenticación aprobada, usuario reconocido con suficiente confianza, no se necesita captura adicional. |
  | `no` | Datos insuficientes para aprobar de forma silenciosa. Se recomienda autenticar mediante biometría (selfie) u otro método alternativo. |

</details>