Crear Sesión KYC Bravo
curl --request POST \
--url https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session \
--header 'Authorization: Bearer <token>'import requests
url = "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "<string>",
"message": "<string>",
"data": {
"id": "<string>",
"provider_id": "<string>",
"status": "<string>",
"url": "<string>",
"vendor_data": {},
"metadata": {},
"callback": "<string>",
"features": [
{
"feature": "<string>",
"status": "<string>"
}
],
"user_info": {},
"id_verification": {},
"liveness": {},
"face_match": {},
"ip_analysis": {},
"compliance": {},
"events": {},
"decision_made_at": {},
"decision_reason": {},
"created_at": "<string>",
"updated_at": "<string>"
}
}Soluciones Compliance
Crear Sesión KYC Bravo
Crea una nueva sesión para el proceso de verificación de identidad KYC Bravo
POST
/
api
/
v1
/
solutions
/
kyc-bravo
/
session
Crear Sesión KYC Bravo
curl --request POST \
--url https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session \
--header 'Authorization: Bearer <token>'import requests
url = "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": "<string>",
"message": "<string>",
"data": {
"id": "<string>",
"provider_id": "<string>",
"status": "<string>",
"url": "<string>",
"vendor_data": {},
"metadata": {},
"callback": "<string>",
"features": [
{
"feature": "<string>",
"status": "<string>"
}
],
"user_info": {},
"id_verification": {},
"liveness": {},
"face_match": {},
"ip_analysis": {},
"compliance": {},
"events": {},
"decision_made_at": {},
"decision_reason": {},
"created_at": "<string>",
"updated_at": "<string>"
}
}Descripción
Este endpoint crea una nueva sesión para el proceso de verificación de identidad KYC Bravo. La sesión permite iniciar un flujo de verificación de identidad para un usuario específico, asociándolo con un identificador de proveedor y configurando una URL de retorno para recibir notificaciones sobre el resultado del proceso. El servicio de KYC Bravo proporciona:- Verificación de identidad: Validación de documentos oficiales
- Prueba de vida: Verificación biométrica del usuario
- Análisis de riesgo: Evaluación de posibles fraudes
- Experiencia digital: Proceso optimizado para dispositivos móviles y web
Autenticación
¿Todavía no tienes un API token? El campo
Authorization del panel Try it espera tu token Bearer. Revisa dónde obtener tu API token para conseguirlo.Authorization: Bearer YOUR_API_KEY
Parámetros de Consulta
string
required
Correo electrónico del usuario que realizará el proceso de verificación
string
required
Identificador único del proveedor o referencia interna de tu sistema
string
required
URL a la que se enviará la notificación cuando el proceso de verificación haya finalizado
Respuesta
string
Estado de la respuesta (ej: “success”)
string
Mensaje descriptivo de la respuesta
object
Datos de la sesión creada
Show propiedades de data
Show propiedades de data
string
Identificador único de la sesión creada
string
Identificador único del proveedor de verificación
string
Estado actual de la sesión (ej: “not_started”, “in_progress”, “completed”)
string
URL para acceder al flujo de verificación KYC Bravo. Esta URL debe ser proporcionada al usuario para iniciar el proceso.
object|null
Datos adicionales del proveedor
object|null
Metadatos adicionales de la sesión
string
URL de retorno configurada para recibir notificaciones
array
object|null
Información del usuario cuando esté disponible
object|null
Resultados de la verificación de identidad cuando esté disponible
object|null
Resultados de la prueba de vida cuando esté disponible
object|null
Resultados de la comparación facial cuando esté disponible
object|null
Resultados del análisis de IP cuando esté disponible
object|null
Resultados de compliance cuando esté disponible
array|null
Registro de eventos de la sesión
string|null
Fecha y hora en que se tomó la decisión final
string|null
Razón de la decisión final
string
Fecha y hora de creación de la sesión
string
Fecha y hora de la última actualización de la sesión
Estados de la Sesión
Una vez creada la sesión, el proceso de verificación puede pasar por varios estados que serán notificados a través del callback_url:| Estado | Nombre | Descripción |
|---|---|---|
not_started | No iniciado | Sesión creada pero la persona aún no ha abierto el enlace |
in_progress | En Progreso | La persona inició el proceso de verificación |
in_review | En Revisión | La verificación se completó y está en revisión manual |
approved | Aprobado | Verificación completada y aprobada |
declined | Desaprobado | Verificación completada y rechazada |
expired | Expirado | La sesión venció sin que la persona la completara |
kyc_expired | KYC expirado | El documento presentado está vencido |
abandoned | Abandonado | La persona inició el proceso y no lo terminó |
error | Error | El proceso falló por un problema técnico |
Para saber si una persona ya pasó por un proceso y en qué estado quedó, usa Consultar Último Proceso KYC.
Ejemplo de Solicitud
curl --request POST \
--url 'https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/session?email=usuario%40ejemplo.com&vendor_id=orden123456&callback_url=https%3A%2F%2Ftuempresa.com%2Fcallback%2Fkyc' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {TU-API-KEY}' \
--header 'Content-Type: application/json'
Ejemplo de Respuesta Exitosa
{
"status": "success",
"message": "Session created successfully.",
"data": {
"id": "aa62043c-****-****-****-89740733d6b9",
"provider_id": "aa62043c-****-****-****-89740733d6b9",
"status": "not_started",
"url": "https://bkyc.verifica.id/es/session/iahMkegZu-hu",
"vendor_data": null,
"metadata": null,
"callback": "https://domain.com/operacion/1",
"features": [
{
"feature": "ID_VERIFICATION",
"status": "not_started"
},
{
"feature": "LIVENESS",
"status": "not_started"
},
{
"feature": "FACE_MATCH",
"status": "not_started"
},
{
"feature": "IP_ANALYSIS",
"status": "not_started"
},
{
"feature": "COMPLIANCE",
"status": "not_started"
}
],
"user_info": null,
"id_verification": null,
"liveness": null,
"face_match": null,
"ip_analysis": null,
"compliance": null,
"events": null,
"decision_made_at": null,
"decision_reason": null,
"created_at": "2026-01-21T14:26:19.000000Z",
"updated_at": "2026-01-21T14:26:19.000000Z"
}
}
Notificación de Callback
Se envía una notificación POST a la URL de webhook configurada para tu organización cuando la sesión se crea (kyc.created) y cada vez que cambia (kyc.updated). El cuerpo trae el tipo de evento y, en payload, la sesión completa con la misma estructura del data de este endpoint:
{
"event_type": "kyc.updated",
"payload": {
"id": "aa62043c-****-****-****-89740733d6b9",
"provider_id": "aa62043c-****-****-****-89740733d6b9",
"status": "approved",
"url": "https://bkyc.verifica.id/es/session/iahMkegZu-hu",
"vendor_data": null,
"metadata": null,
"callback": "https://domain.com/operacion/1",
"features": [
{
"feature": "ID_VERIFICATION",
"status": "approved"
}
],
"user_info": {
"full_name": "NOMBRE APELLIDO",
"document_type": "Identity Card",
"document_number": "12345678"
},
"id_verification": null,
"liveness": null,
"face_match": null,
"ip_analysis": null,
"compliance": null,
"decision_made_at": "2026-09-01T14:40:02.000000Z",
"decision_reason": null,
"created_at": "2026-09-01T14:32:10.000000Z",
"updated_at": "2026-09-01T14:40:02.000000Z"
}
}
Códigos de Error
| Código | Descripción |
|---|---|
| 400 | Solicitud inválida - parámetros faltantes o incorrectos |
| 401 | Token de autenticación inválido o faltante |
| 429 | Demasiadas solicitudes - se ha excedido el límite de rate |
| 500 | Error interno del servidor |