tracking
curl --request POST \
--url https://nufi.azure-api.net/kyb/expedientes/v1/tracking \
--header 'Content-Type: application/json' \
--header 'NUFI-API-KEY: <nufi-api-key>' \
--header 'X-Workspace: <x-workspace>' \
--data '
{
"FlowID": "f-001",
"RFC": "NUF201221PC7",
"AgentMail": "ejecutivo@correo.com"
}
'import requests
url = "https://nufi.azure-api.net/kyb/expedientes/v1/tracking"
payload = {
"FlowID": "f-001",
"RFC": "NUF201221PC7",
"AgentMail": "ejecutivo@correo.com"
}
headers = {
"NUFI-API-KEY": "<nufi-api-key>",
"X-Workspace": "<x-workspace>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'NUFI-API-KEY': '<nufi-api-key>',
'X-Workspace': '<x-workspace>',
'Content-Type': 'application/json'
},
body: JSON.stringify({FlowID: 'f-001', RFC: 'NUF201221PC7', AgentMail: 'ejecutivo@correo.com'})
};
fetch('https://nufi.azure-api.net/kyb/expedientes/v1/tracking', 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://nufi.azure-api.net/kyb/expedientes/v1/tracking",
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([
'FlowID' => 'f-001',
'RFC' => 'NUF201221PC7',
'AgentMail' => 'ejecutivo@correo.com'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"NUFI-API-KEY: <nufi-api-key>",
"X-Workspace: <x-workspace>"
],
]);
$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://nufi.azure-api.net/kyb/expedientes/v1/tracking"
payload := strings.NewReader("{\n \"FlowID\": \"f-001\",\n \"RFC\": \"NUF201221PC7\",\n \"AgentMail\": \"ejecutivo@correo.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("NUFI-API-KEY", "<nufi-api-key>")
req.Header.Add("X-Workspace", "<x-workspace>")
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://nufi.azure-api.net/kyb/expedientes/v1/tracking")
.header("NUFI-API-KEY", "<nufi-api-key>")
.header("X-Workspace", "<x-workspace>")
.header("Content-Type", "application/json")
.body("{\n \"FlowID\": \"f-001\",\n \"RFC\": \"NUF201221PC7\",\n \"AgentMail\": \"ejecutivo@correo.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nufi.azure-api.net/kyb/expedientes/v1/tracking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["NUFI-API-KEY"] = '<nufi-api-key>'
request["X-Workspace"] = '<x-workspace>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"FlowID\": \"f-001\",\n \"RFC\": \"NUF201221PC7\",\n \"AgentMail\": \"ejecutivo@correo.com\"\n}"
response = http.request(request)
puts response.read_body{
"Code": 200,
"Status": "Success",
"Message": "Seguimiento obtenido",
"Data": {
"DocumentId": "eaeea393-81db-4269-9dcc-ede8669f2ecf",
"CompanyRfc": "NUF201221PC7",
"CompanyName": "NUFI SAPI DE CV",
"GuestUrl": "https://kyb.nufi.mx/guest/Q0JiWmc3aWJNNm1sMVNwSnBOU0x1eis1NGRQWEMxT1Y1OGNGM21Tck9TUT0",
"ChannelName": "MESA CONTROL",
"DocumentStatus": "Pendiente",
"Comments": [
"Info. Fiscal (Rechazado): La CSF no pertenece al cliente",
"Personas Físicas (Completado)"
],
"CreatedAtUtc": "2026-02-25T16:40:12.000Z",
"UpdatedAtUtc": "2026-02-25T16:40:12.000Z",
"Person": [
{
"PersonId": "7c1cf3c0-9c2c-4c66-9b34-6b5f4c6c9a1e",
"FullName": "ILICH NUÑEZ SANCHEZ",
"Email": "ilich@nufi.mx",
"Rfc": "NUSI900824LY3",
"Curp": "NUSI900824HSRXNL03",
"FaceKeyId": "T000083729",
"EnrollmentRequestAtUtc": "2026-02-19T23:25:56.767Z",
"CallbackAtUtc": "2026-02-19T23:26:20.421Z",
"NotificationAtUtc": "2026-02-20T00:58:08.639Z",
"EnrollmentStatus": "AUTORIZADO",
"EnrollmentReason": "",
"IsCompleted": true,
"IsEnrollmentAllowed": false
}
]
}
}{
"Code": 400,
"Status": "bad_request",
"Message": "Error de validacion",
"Data": [
"El campo FlowId es obligatorio",
"El campo RFC es obligatorio",
"El campo AgentMail es obligatorio",
"El FlowId no es válido.",
"El RFC no es válido.",
"El AgentMail no es válido."
]
}{
"code": 401,
"status": "forbidden",
"message": "La API Key ha sido denegada, asegurate de mandar una API Key valida y con una suscripción activa",
"data": null
}{
"Code": 403,
"Status": "forbidden",
"Message": "El ID de Workspace no es válido o no está activo",
"Data": null
}{
"Code": 404,
"Status": "not_found",
"Message": "Expediente no encontrado",
"Data": null
}Endpoints
Seguimiento
POST
/
expedientes
/
v1
/
tracking
tracking
curl --request POST \
--url https://nufi.azure-api.net/kyb/expedientes/v1/tracking \
--header 'Content-Type: application/json' \
--header 'NUFI-API-KEY: <nufi-api-key>' \
--header 'X-Workspace: <x-workspace>' \
--data '
{
"FlowID": "f-001",
"RFC": "NUF201221PC7",
"AgentMail": "ejecutivo@correo.com"
}
'import requests
url = "https://nufi.azure-api.net/kyb/expedientes/v1/tracking"
payload = {
"FlowID": "f-001",
"RFC": "NUF201221PC7",
"AgentMail": "ejecutivo@correo.com"
}
headers = {
"NUFI-API-KEY": "<nufi-api-key>",
"X-Workspace": "<x-workspace>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'NUFI-API-KEY': '<nufi-api-key>',
'X-Workspace': '<x-workspace>',
'Content-Type': 'application/json'
},
body: JSON.stringify({FlowID: 'f-001', RFC: 'NUF201221PC7', AgentMail: 'ejecutivo@correo.com'})
};
fetch('https://nufi.azure-api.net/kyb/expedientes/v1/tracking', 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://nufi.azure-api.net/kyb/expedientes/v1/tracking",
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([
'FlowID' => 'f-001',
'RFC' => 'NUF201221PC7',
'AgentMail' => 'ejecutivo@correo.com'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"NUFI-API-KEY: <nufi-api-key>",
"X-Workspace: <x-workspace>"
],
]);
$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://nufi.azure-api.net/kyb/expedientes/v1/tracking"
payload := strings.NewReader("{\n \"FlowID\": \"f-001\",\n \"RFC\": \"NUF201221PC7\",\n \"AgentMail\": \"ejecutivo@correo.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("NUFI-API-KEY", "<nufi-api-key>")
req.Header.Add("X-Workspace", "<x-workspace>")
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://nufi.azure-api.net/kyb/expedientes/v1/tracking")
.header("NUFI-API-KEY", "<nufi-api-key>")
.header("X-Workspace", "<x-workspace>")
.header("Content-Type", "application/json")
.body("{\n \"FlowID\": \"f-001\",\n \"RFC\": \"NUF201221PC7\",\n \"AgentMail\": \"ejecutivo@correo.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nufi.azure-api.net/kyb/expedientes/v1/tracking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["NUFI-API-KEY"] = '<nufi-api-key>'
request["X-Workspace"] = '<x-workspace>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"FlowID\": \"f-001\",\n \"RFC\": \"NUF201221PC7\",\n \"AgentMail\": \"ejecutivo@correo.com\"\n}"
response = http.request(request)
puts response.read_body{
"Code": 200,
"Status": "Success",
"Message": "Seguimiento obtenido",
"Data": {
"DocumentId": "eaeea393-81db-4269-9dcc-ede8669f2ecf",
"CompanyRfc": "NUF201221PC7",
"CompanyName": "NUFI SAPI DE CV",
"GuestUrl": "https://kyb.nufi.mx/guest/Q0JiWmc3aWJNNm1sMVNwSnBOU0x1eis1NGRQWEMxT1Y1OGNGM21Tck9TUT0",
"ChannelName": "MESA CONTROL",
"DocumentStatus": "Pendiente",
"Comments": [
"Info. Fiscal (Rechazado): La CSF no pertenece al cliente",
"Personas Físicas (Completado)"
],
"CreatedAtUtc": "2026-02-25T16:40:12.000Z",
"UpdatedAtUtc": "2026-02-25T16:40:12.000Z",
"Person": [
{
"PersonId": "7c1cf3c0-9c2c-4c66-9b34-6b5f4c6c9a1e",
"FullName": "ILICH NUÑEZ SANCHEZ",
"Email": "ilich@nufi.mx",
"Rfc": "NUSI900824LY3",
"Curp": "NUSI900824HSRXNL03",
"FaceKeyId": "T000083729",
"EnrollmentRequestAtUtc": "2026-02-19T23:25:56.767Z",
"CallbackAtUtc": "2026-02-19T23:26:20.421Z",
"NotificationAtUtc": "2026-02-20T00:58:08.639Z",
"EnrollmentStatus": "AUTORIZADO",
"EnrollmentReason": "",
"IsCompleted": true,
"IsEnrollmentAllowed": false
}
]
}
}{
"Code": 400,
"Status": "bad_request",
"Message": "Error de validacion",
"Data": [
"El campo FlowId es obligatorio",
"El campo RFC es obligatorio",
"El campo AgentMail es obligatorio",
"El FlowId no es válido.",
"El RFC no es válido.",
"El AgentMail no es válido."
]
}{
"code": 401,
"status": "forbidden",
"message": "La API Key ha sido denegada, asegurate de mandar una API Key valida y con una suscripción activa",
"data": null
}{
"Code": 403,
"Status": "forbidden",
"Message": "El ID de Workspace no es válido o no está activo",
"Data": null
}{
"Code": 404,
"Status": "not_found",
"Message": "Expediente no encontrado",
"Data": null
}Consultar el seguimiento del expediente de un cliente y visualizar el estado del enrolamiento de cada persona.
📌 El estatus entre paréntesis corresponde al estado individual de cada sección del expediente.
📌 Campos de la respuesta
1️⃣ DocumentStatus
Indica la etapa actual del expediente completo dentro del flujo operativo."DocumentStatus": "Pendiente"
📊 Estados del Expediente
| Estatus | Descripción | Responsable | ¿Es estado final? |
|---|---|---|---|
| Ingresado | Estado inicial del expediente. El usuario está capturando información y cargando documentos. | Usuario final | ❌ |
| Pendiente | El expediente fue enviado para revisión y está en bandeja de Mesa de Control. | Sistema | ❌ |
| En Revisión | Un analista está validando la información y documentos. | Mesa de Control | ❌ |
| Corrección por el Usuario | Se detectaron inconsistencias y se regresó al usuario para ajustes. | Usuario | ❌ |
| Enrolamiento Iniciado | Se detonó el proceso de enrolamiento (biometría, validaciones externas, etc.). | Mesa de Control | ❌ |
| Enrolamiento Fallido | El proceso de enrolamiento no se completó correctamente. | Sistema | ❌ |
| Aceptado | El expediente fue aprobado satisfactoriamente. | Mesa de Control | ✅ |
| Finalizado | El expediente se cerró sin completar el proceso exitosamente. | Mesa de Control | ✅ |
2️⃣ Comments
El campo Comments devuelve un arreglo de strings que representan:- El nombre de la sección.
- El estatus actual de esa sección (entre paréntesis).
- Si la sección cuenta con comentarios, se agregarán con 2 puntos y a la derecha los comentarios que presente.
"Comments": [
"Info. Fiscal (Rechazado): La CSF no pertenece al cliente",
"Personas Físicas (Completado)"
]
📊 Estados de Sección (Entre Paréntesis en Comments)
| Estatus | Descripción | Tipo de Validación | ¿Requiere Acción del Usuario? |
|---|---|---|---|
| Pendiente | Estado inicial. La sección no ha sido completada ni enviada. | Ninguna | ✅ |
| En Revisión | El sistema está ejecutando validaciones automáticas. | OCR, metadata, APIs externas | ❌ |
| Requiere Atención | Falló alguna validación automática. | OCR fallido, inconsistencia de datos | ✅ |
| Completado | Validaciones automáticas exitosas. Lista para revisión humana. | Validaciones automáticas aprobadas | ❌ |
| Aceptado | Aprobación final por back office. | Revisión humana aprobada | ❌ |
| Rechazado | Rechazo definitivo por back office. | Revisión humana rechazada | ✅ |
Was this page helpful?
⌘I
.png?fit=max&auto=format&n=SrFWYqQUIKuRmdvu&q=85&s=29a9d6074794b17ba1b2d2cd5d208849)