Skip to content

HAVI Score — Onboarding y Perfiles

Estos endpoints crean y gestionan el perfil financiero de un comprador para calcular su HAVI Score.


Opción A — Onboarding completo en un paso

Crea el perfil completo con toda la información en una sola llamada.

http
POST /api/v1/onboarding/perfil
Content-Type: application/json

Body:

json
{
  "nombre": "Juan Pérez",
  "email": "juan@email.com",
  "telefono": "+52 55 1234 5678",
  "ingresoMensual": 35000,
  "gastosMensuales": 15000,
  "deudas": 5000,
  "empleoEstable": true,
  "antiguedadLaboral": 36,
  "presupuesto": {
    "min": 1500000,
    "max": 3000000
  },
  "tipoPropiedad": ["Departamento", "Casa"],
  "ciudadInteres": "Ciudad de México",
  "enganche": 300000
}

Respuesta 201:

json
{
  "status": "success",
  "data": {
    "perfilId": "uuid-perfil",
    "haviScore": 715,
    "scoreLabel": "Bueno",
    "riskLevel": "moderate",
    "creditoEstimado": 2100000,
    "mensualidadEstimada": 18500,
    "mensaje": "Tu perfil tiene buena capacidad de pago. Puedes calificar para propiedades de hasta $2,100,000 MXN.",
    "propiedadesCompatibles": 38
  }
}

Opción B — Flujo en dos fases

Fase 1 — Crear perfil inicial

http
POST /api/v1/fase1/perfil
Content-Type: application/json

Body:

json
{
  "nombre": "Juan Pérez",
  "email": "juan@email.com",
  "telefono": "+52 55 1234 5678",
  "presupuesto": {
    "min": 1500000,
    "max": 3000000
  },
  "ciudadInteres": "Ciudad de México"
}

Respuesta 201:

json
{
  "status": "success",
  "data": {
    "perfilId": "uuid-perfil",
    "etapa": "fase1_completada",
    "mensaje": "Perfil inicial creado. Continúa con la validación financiera."
  }
}

Fase 2 — Refinar perfil con datos financieros

http
POST /api/v1/fase2/validar/:perfilId
Content-Type: application/json

Body:

json
{
  "ingresoMensual": 35000,
  "gastosMensuales": 15000,
  "deudas": 5000,
  "empleoEstable": true,
  "antiguedadLaboral": 36,
  "enganche": 300000,
  "tipoPropiedad": ["Departamento"]
}

Respuesta 200:

json
{
  "status": "success",
  "data": {
    "perfilId": "uuid-perfil",
    "haviScore": 715,
    "scoreLabel": "Bueno",
    "riskLevel": "moderate",
    "creditoEstimado": 2100000,
    "mensualidadEstimada": 18500,
    "etapa": "calificado"
  }
}

Obtener perfil por ID

http
GET /api/v1/perfil/:perfilId

Útil para compartir resultados o retomar un perfil existente.

Respuesta 200:

json
{
  "status": "success",
  "data": {
    "perfilId": "uuid-perfil",
    "nombre": "Juan Pérez",
    "email": "juan@email.com",
    "haviScore": 715,
    "scoreLabel": "Bueno",
    "riskLevel": "moderate",
    "creditoEstimado": 2100000,
    "etapa": "calificado",
    "createdAt": "2026-05-13T10:00:00.000Z"
  }
}

Verificar si ya existe un perfil

Antes de crear un perfil nuevo, verifica si el email ya tiene uno:

http
POST /api/v1/perfil/verificar
Content-Type: application/json

{
  "email": "juan@email.com"
}

Respuesta si existe:

json
{
  "status": "success",
  "exists": true,
  "data": {
    "perfilId": "uuid-perfil",
    "haviScore": 715,
    "etapa": "calificado"
  }
}

Respuesta si no existe:

json
{
  "status": "success",
  "exists": false
}

Reclamar prospecto (para agencias)

Requiere autenticación

Solo agency_admin autenticados.

http
POST /api/v1/prospectos/:perfilId/reclamar
Authorization: Bearer {token}

Vincula el perfil del comprador como prospecto de tu agencia.


Listar prospectos de la agencia

http
GET /api/v1/prospectos
Authorization: Bearer {token del agency_admin}

HAVI API · Documentación Oficial