Consultar Último Proceso KYC
curl --request POST \
--url https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_type": "<string>",
"document_number": "<string>"
}
'import requests
url = "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last"
payload = {
"document_type": "<string>",
"document_number": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_type: '<string>', document_number: '<string>'})
};
fetch('https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last', 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/sessions/last",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_type' => '<string>',
'document_number' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last"
payload := strings.NewReader("{\n \"document_type\": \"<string>\",\n \"document_number\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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/sessions/last")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_type\": \"<string>\",\n \"document_number\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_type\": \"<string>\",\n \"document_number\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"message": "<string>",
"data": {
"session_id": "<string>",
"status": "<string>",
"status_name": "<string>",
"url": {},
"created_at": "<string>"
}
}Soluciones Compliance
Consultar Último Proceso KYC
Consulta el estado del último proceso de verificación KYC de una persona por su documento
POST
/
api
/
v1
/
solutions
/
kyc-bravo
/
sessions
/
last
Consultar Último Proceso KYC
curl --request POST \
--url https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_type": "<string>",
"document_number": "<string>"
}
'import requests
url = "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last"
payload = {
"document_type": "<string>",
"document_number": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_type: '<string>', document_number: '<string>'})
};
fetch('https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last', 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/sessions/last",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_type' => '<string>',
'document_number' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last"
payload := strings.NewReader("{\n \"document_type\": \"<string>\",\n \"document_number\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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/sessions/last")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_type\": \"<string>\",\n \"document_number\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_type\": \"<string>\",\n \"document_number\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"message": "<string>",
"data": {
"session_id": "<string>",
"status": "<string>",
"status_name": "<string>",
"url": {},
"created_at": "<string>"
}
}Descripción
Consulta si una persona ya pasó por un proceso de verificación KYC en tu organización y en qué estado quedó. Sirve para decidir si necesitas iniciar una sesión nueva o retomar una que sigue abierta. Este endpoint no consume tokens: es una consulta de estado, no una operación de verificación.El documento del titular se registra cuando el proveedor procesa la verificación. Una sesión que se creó pero que la persona nunca abrió no tiene esos datos y no aparecerá en esta consulta.
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
Atributos Requeridos
string
required
Tipo de documento del titular (ej:
dni, ce, passport)string
required
Número de documento del titular
Respuesta
string
Estado de la respuesta (ej: “success”)
string
Mensaje descriptivo de la respuesta
object|null
Datos del último proceso encontrado, o
null si la persona no tiene procesos previosShow propiedades de data
Show propiedades de data
string
Identificador único de la sesión
string
Estado actual de la sesión (ej: “approved”, “in_progress”)
string
Nombre del estado en español, listo para mostrar al usuario
string|null
Enlace para continuar la verificación. Solo viene con valor cuando la sesión sigue abierta (
not_started o in_progress); en sesiones ya resueltas es null porque el enlace caducó.string
Fecha y hora de creación de la sesión, en formato ISO 8601
Estados de la Sesión
| Estado | Nombre | ¿Sigue abierta? |
|---|---|---|
not_started | No iniciado | Sí |
in_progress | En Progreso | Sí |
in_review | En Revisión | No |
approved | Aprobado | No |
declined | Desaprobado | No |
expired | Expirado | No |
kyc_expired | KYC expirado | No |
abandoned | Abandonado | No |
error | Error | No |
Ejemplo de Solicitud
curl --request POST \
--url 'https://prd-api.verifica.id/api/v1/solutions/kyc-bravo/sessions/last' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {TU-API-KEY}' \
--header 'Content-Type: application/json' \
--data '{
"document_type": "dni",
"document_number": "46126030"
}'
Ejemplo de Respuesta Exitosa
Cuando la sesión sigue abierta,url permite retomar el proceso:
{
"status": "success",
"message": "Last session retrieved successfully.",
"data": {
"session_id": "aa62043c-****-****-****-89740733d6b9",
"status": "in_progress",
"status_name": "En Progreso",
"url": "https://bkyc.verifica.id/es/session/iahMkegZu-hu",
"created_at": "2026-09-01T14:32:10+00:00"
}
}
url viene en null:
{
"status": "success",
"message": "Last session retrieved successfully.",
"data": {
"session_id": "aa62043c-****-****-****-89740733d6b9",
"status": "approved",
"status_name": "Aprobado",
"url": null,
"created_at": "2026-09-01T14:32:10+00:00"
}
}
Ejemplo de Respuesta sin Procesos Previos
La persona nunca fue verificada en tu organización. La respuesta es200, no un error:
{
"status": "success",
"message": "No previous session found.",
"data": null
}
Códigos de Error
| Código | Descripción |
|---|---|
| 401 | Token de autenticación inválido o faltante |
| 422 | Faltan document_type o document_number, o su formato es incorrecto |
| 429 | Demasiadas solicitudes - se ha excedido el límite de rate |
| 500 | Error interno del servidor |