> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API de sesiones: verificación KYC y KYB unificada

> La API de sesiones de Didit unifica KYC y KYB en un endpoint: pago por uso, <2 s, 220+ países, 14,000+ documentos y $10 de crédito gratis/mes.

Las sesiones son la unidad de verificación en Didit. Cuando inicias una verificación, se crea una **sesión**; cuando la verificación termina, la sesión contiene el payload completo de la decisión. La misma API de sesiones gestiona ambos tipos:

| Tipo | Qué verifica | El payload de la decisión incluye |
| - | - | - |
| **Sesión de Verificación de usuario (KYC)** | Una persona física | Verificación de identidad, prueba de vida, coincidencia facial, prueba de domicilio, NFC, validación de base de datos, teléfono, correo electrónico, AML, cuestionarios, análisis de dispositivo e IP |
| **Sesión de Verificación de empresas (KYB)** | Una empresa o entidad jurídica | Comprobación en el registro de empresas, personas clave (directivos/UBO), verificaciones de documentos, teléfono, correo electrónico, AML, cuestionarios, análisis de dispositivo e IP |

En la lección de Academy sobre lo que ven los usuarios, el capítulo del minuto 5:34 compara el flujo alojado con crear tus propias pantallas, que es justo la disyuntiva que esta API resuelve por ti.

[El flujo alojado frente a crear tus propias pantallas — Didit Academy](https://www.youtube.com/embed/LzGe-dMWjUw?start=334\&rel=0\&playsinline=1)

## El tipo lo determina el flujo de verificación

Cuando [creas una sesión](https://docs.didit.me/es/sessions-api/create-session.md), pasas un `workflow_id`. El tipo del flujo de verificación (workflow) determina si la sesión es de Verificación de usuario o de Verificación de empresas; quien hace la llamada no lo elige por separado. Los flujos KYB crean sesiones de Verificación de empresas; los flujos KYC crean sesiones de Verificación de usuario.

## Discriminador `session_kind`

Toda respuesta de sesión (de creación, consulta, listado, actualización de estado, compartición e importación) incluye un campo de nivel superior:

```json theme={null}
{
  "session_id": "...",
  "session_kind": "user",
  ...
}
```

* `"user"`: la sesión es una **sesión de Verificación de usuario (KYC)**. La respuesta contiene arrays de funciones específicos de usuario.
* `"business"`: la sesión es una **sesión de Verificación de empresas (KYB)**. La respuesta contiene arrays de funciones específicos de empresa.

Usa este campo para decidir qué estructura procesar en tu aplicación.

> [!NOTE]
>
> Los valores del enum son los identificadores cortos `"user"` y `"business"`; los mantenemos cortos por ergonomía de la API. En toda la documentación se usan los nombres completos **Verificación de usuario (KYC)** y **Verificación de empresas (KYB)** para mayor claridad.

## Arrays de funciones por tipo

Los arrays de funciones presentes en una decisión dependen del tipo. Los campos que no existen en un tipo simplemente no aparecen en esa respuesta (sin nulos ni marcadores de posición):

| Array de funciones | Verificación de usuario (KYC) | Verificación de empresas (KYB) |
| - | :-: | :-: |
| `id_verifications` | ✅ | — |
| `liveness_checks` | ✅ | — |
| `face_matches` | ✅ | — |
| `nfc_verifications` | ✅ | — |
| `poa_verifications` | ✅ | — |
| `database_validations` | ✅ | — |
| `registry_checks` | — | ✅ |
| `document_verifications` | — | ✅ |
| `key_people_checks` | — | ✅ |
| `aml_screenings` | ✅ | ✅ |
| `phone_verifications` | ✅ | ✅ |
| `email_verifications` | ✅ | ✅ |
| `questionnaire_responses` | ✅ | ✅ |
| `ip_analyses` | ✅ | ✅ |
| `reviews` | ✅ | ✅ |
| `contact_details` | ✅ | ✅ |

## Campos de nivel superior compartidos

Toda sesión (de ambos tipos) incluye estos campos:

| Campo | Descripción |
| - | - |
| `session_id` | UUID de la sesión |
| `session_kind` | `"user"` (Verificación de usuario / KYC) o `"business"` (Verificación de empresas / KYB) |
| `session_number` | Número secuencial dentro de la aplicación |
| `session_url` | URL de la página de verificación alojada |
| `status` | Estado general de la sesión: `APPROVED`, `DECLINED`, `IN_REVIEW`, `IN_PROGRESS`, etc. |
| `workflow_id` | UUID del flujo utilizado |
| `vendor_data` | Tu identificador para la entidad. [Más información](https://docs.didit.me/es/entities/vendor-data-linking.md) |
| `metadata` | JSON de formato libre que adjuntaste al crearla |
| `callback` | URL de callback opcional |
| `features` | Lista de funciones separadas por comas que ejecuta el flujo |
| `expected_details` | Payload opcional con los datos esperados para la validación cruzada |
| `created_at`, `expires_at` | Marcas de tiempo |

## Endpoints incluidos

Todos los endpoints siguientes aceptan cualquiera de los dos tipos. No hay rutas `/v3/business-session/*` separadas.

| Endpoint | Funciona para |
| - | - |
| [`POST /v3/session/`](https://docs.didit.me/es/sessions-api/create-session) | Crea una sesión de Verificación de usuario o de Verificación de empresas según el tipo de flujo |
| [`GET /v3/session/{id}/decision/`](https://docs.didit.me/es/sessions-api/retrieve-session) | Obtiene cualquiera de los dos tipos; se dirige según el `session_id` |
| [`GET /v3/sessions/`](https://docs.didit.me/es/sessions-api/list-sessions) | Lista cualquiera de los dos tipos. Usa el parámetro de consulta `session_kind` para filtrar |
| [`PATCH /v3/session/{id}/update-status/`](https://docs.didit.me/es/sessions-api/update-status) | Actualiza cualquiera de los dos tipos |
| [`DELETE /v3/session/{id}/delete/`](https://docs.didit.me/es/sessions-api/delete-session) | Elimina cualquiera de los dos tipos |
| [`GET /v3/session/{id}/generate-pdf/`](https://docs.didit.me/es/sessions-api/generate-pdf) | Genera un PDF para cualquiera de los dos tipos; usa la plantilla de Verificación de usuario o la de Verificación de empresas |
| [`POST /v3/session/{id}/share/`](https://docs.didit.me/es/sessions-api/share-session/share) | El token de compartición incluye `session_kind` |
| [`POST /v3/session/import-shared/`](https://docs.didit.me/es/sessions-api/share-session/import) | Importa cualquiera de los dos tipos; conserva el `session_kind` del token |

## Cómo funcionan las búsquedas

Las sesiones de Verificación de usuario y de Verificación de empresas son dos tipos distintos. Los ID son UUID, por lo que las colisiones son imposibles. Cuando llamas a un endpoint con un `session_id`, Didit:

1. Busca primero el ID en la tabla de Verificación de usuario (que cubre la mayor parte del tráfico).
2. Si no lo encuentra, recurre a la tabla de Verificación de empresas.
3. Devuelve 404 si no hay coincidencia en ninguna de las dos tablas.

Nunca necesitas indicarle a la API qué tipo estás buscando.

## Los estados son idénticos

Los valores de estado son los mismos para ambos tipos, y la API los devuelve exactamente como se escriben aquí: `"Not Started"`, `"In Progress"`, `"Approved"`, `"Declined"`, `"In Review"`, `"Abandoned"`, `"Expired"`, `"Kyc Expired"`, `"Resubmitted"`, `"Awaiting User"`. La coincidencia es exacta y distingue entre mayúsculas y minúsculas. Consulta los [estados de verificación](https://docs.didit.me/es/integration/verification-statuses.md) para ver la referencia completa.

## Webhooks

Los eventos de webhook ya incluyen un campo `session_kind` para que tus manejadores de webhook puedan procesar cada evento según su tipo:

| Evento | Tipo | Se dispara cuando |
| - | - | - |
| `status.updated` | Ambos | Cambió el estado de una sesión. El payload incluye `session_kind: "user"` o `"business"`. |
| `data.updated` | Ambos | Cambiaron los datos de una sesión (resultados de funciones, actualización del registro, monitorización AML continua). El payload incluye `session_kind`. |
| `business.status.updated` / `business.data.updated` | Entidad de empresa | Cambió la entidad de empresa vinculada. |
| `user.status.updated` / `user.data.updated` | Entidad de usuario | Cambió la entidad de usuario vinculada. |

Consulta [webhooks](https://docs.didit.me/es/integration/webhooks.md) para la verificación de firma y la semántica de reintentos, y [webhooks de KYB](https://docs.didit.me/es/business-verification/webhooks.md) para el catálogo de eventos de Verificación de empresas (KYB).

## Próximos pasos

> [card] [Crear sesión](https://docs.didit.me/es/sessions-api/create-session.md)
>
> Inicia una verificación: Verificación de usuarios o Verificación de empresas.

> [card] [Obtener sesión](https://docs.didit.me/es/sessions-api/retrieve-session.md)
>
> Obtén la decisión. Funciona con ambos tipos.

> [card] [Listar sesiones](https://docs.didit.me/es/sessions-api/list-sessions.md)
>
> Filtra por `session_kind`.

> [card] [Actualizar estado](https://docs.didit.me/es/sessions-api/update-status.md)
>
> Aprueba, rechaza, envía a revisión o solicita un nuevo envío.

> [card] [Generar PDF](https://docs.didit.me/es/sessions-api/generate-pdf.md)
>
> Informes PDF por tipo.

> [card] [Compartir + importar](https://docs.didit.me/es/sessions-api/share-session/overview.md)
>
> Mueve sesiones entre aplicaciones.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.