SIM Swap

SIM Swap (cambio de tarjeta SIM) se refiere al proceso de vincular el número de teléfono de un usuario a una nueva tarjeta SIM. Esto suele ocurrir en los siguientes escenarios: denuncia de pérdida y sustitución de tarjeta, actualización de la tarjeta SIM, portabilidad numérica, activación de servicios multi-SIM o cuando un nuevo usuario hereda un número utilizado anteriormente por otra persona.

Los atacantes pueden utilizar el SIM Swap para secuestrar el número de teléfono de otra persona, interceptar códigos de verificación por SMS y, posteriormente, restablecer contraseñas y tomar el control de las cuentas. La API de SIM Swap puede detectar en tiempo real si un número de teléfono especificado ha sufrido un cambio de tarjeta SIM, ayudando a las empresas a identificar posibles riesgos de secuestro de SIM en procesos críticos como la verificación OTP por SMS y reduciendo la probabilidad de apropiación de cuentas.

Nota: Actualmente, la comprobación de SIM Swap solo es compatible con números de los siguientes países/regiones: Brasil, Indonesia.

Esta API proporciona dos endpoints independientes:

  • Retrieve Date: consultar la hora del último SIM Swap ocurrido para un número de teléfono especificado
  • Check: detectar si ha ocurrido un SIM Swap para un número de teléfono especificado en las últimas N horas

Verificación de llamada

Ambos endpoints utilizan el método de autenticación HTTP Basic Auth. Añada Authorization en el encabezado HTTP:

Authorization: Basic ${base64_auth_string}
              
              Authorization: Basic ${base64_auth_string}

            
Este bloque de código se muestra en una ventana flotante

El algoritmo de generación para ${base64_auth_string} es: base64(dev_key:dev_secret).

Para obtener más detalles, consulte Verificación de llamada para aprender cómo realizar la autenticación de la API.


Retrieve Date

Consultar la hora del último SIM Swap ocurrido para un número de teléfono especificado.

Dirección de llamada

POST https://otp.api.engagelab.cc/v1/sim-swap/retrieve-date

Ejemplo de solicitud

Un objeto de solicitud se expresa en formato JSON, por lo que el encabezado de la solicitud debe incluir Content-Type: application/json.

Encabezado de solicitud

POST /v1/sim-swap/retrieve-date HTTP/1.1 Content-Type: application/json Authorization: Basic ${base64_auth_string}
              
              POST /v1/sim-swap/retrieve-date HTTP/1.1
Content-Type: application/json
Authorization: Basic ${base64_auth_string}

            
Este bloque de código se muestra en una ventana flotante

Cuerpo de solicitud

{ "phone_number": "+381692223535" }
              
              {
  "phone_number": "+381692223535"
}

            
Este bloque de código se muestra en una ventana flotante

Parámetros de solicitud

Parámetro Tipo Opción Descripción
phone_number String Obligatorio El número de teléfono objetivo a consultar, se recomienda el formato E.164

Parámetros de respuesta

Respuesta de éxito

Campo Tipo Opción Descripción
request_id String Obligatorio ID del registro de la consulta actual
latest_sim_change String / null Obligatorio La hora del último SIM Swap, en formato RFC3339; devuelve la hora de la primera activación si la tarjeta nunca se ha cambiado; devuelve null cuando los datos no se pueden devolver debido a las normativas de privacidad

Ejemplo de respuesta de éxito:

{ "request_id": "2055136570436075520", "latest_sim_change": "2026-05-01T15:00:00Z" }
              
              {
  "request_id": "2055136570436075520",
  "latest_sim_change": "2026-05-01T15:00:00Z"
}

            
Este bloque de código se muestra en una ventana flotante

Respuesta de error

El código de estado HTTP es 4xx o 5xx, y el cuerpo de la respuesta contiene los siguientes campos:

Campo Tipo Opción Descripción
code int Obligatorio Código de error, consulte la sección Códigos de error para más detalles
message String Obligatorio Detalles del error

Ejemplos comunes de respuestas de error:

Ejemplo de error de parámetro:

{ "code": 3002, "message": "invalid phone_number" }
              
              {
  "code": 3002,
  "message": "invalid phone_number"
}

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de saldo insuficiente:

{ "code": 3005, "message": "balance not enough" }
              
              {
  "code": 3005,
  "message": "balance not enough"
}

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de número fuera del área de cobertura del servicio:

{ "code": 5101, "message": "phone number is not in sim swap service coverage" }
              
              {
  "code": 5101,
  "message": "phone number is not in sim swap service coverage"
}

            
Este bloque de código se muestra en una ventana flotante

Ejemplo de fallo general:

{ "code": 5100, "message": "failed to retrieve sim swap date" }
              
              {
  "code": 5100,
  "message": "failed to retrieve sim swap date"
}

            
Este bloque de código se muestra en una ventana flotante

Check

Detectar si ha ocurrido un SIM Swap para un número de teléfono especificado en las últimas N horas.

Dirección de llamada

POST https://otp.api.engagelab.cc/v1/sim-swap/check

Ejemplo de solicitud

Un objeto de solicitud se expresa en formato JSON, y el encabezado de la solicitud también debe incluir Content-Type: application/json.

Encabezado de solicitud

POST /v1/sim-swap/check HTTP/1.1 Content-Type: application/json Authorization: Basic ${base64_auth_string}
              
              POST /v1/sim-swap/check HTTP/1.1
Content-Type: application/json
Authorization: Basic ${base64_auth_string}

            
Este bloque de código se muestra en una ventana flotante

Cuerpo de solicitud

{ "phone_number": "+381692223535", "max_age": 400 }
              
              {
  "phone_number": "+381692223535",
  "max_age": 400
}

            
Este bloque de código se muestra en una ventana flotante

Parámetros de solicitud

Parámetro Tipo Opción Descripción
phone_number String Obligatorio El número de teléfono objetivo a consultar, se recomienda el formato E.164
max_age Integer Obligatorio La ventana de consulta, en horas, rango de valores 1 ~ 2400

Parámetros de respuesta

Respuesta de éxito

Campo Tipo Opción Descripción
request_id String Obligatorio ID del registro de la consulta actual
swapped Boolean Obligatorio Si ha ocurrido un SIM Swap dentro de la ventana de tiempo especificada

Ejemplo de respuesta de éxito:

{ "request_id": "2055136570293469184", "swapped": true }
              
              {
  "request_id": "2055136570293469184",
  "swapped": true
}

            
Este bloque de código se muestra en una ventana flotante

Respuesta de error

La estructura es la misma que la del endpoint Retrieve Date. Ejemplo específico de respuesta de error:

Error de parámetro (max_age fuera de rango):

{ "code": 3002, "message": "max_age must be between 1 and 2400" }
              
              {
  "code": 3002,
  "message": "max_age must be between 1 and 2400"
}

            
Este bloque de código se muestra en una ventana flotante

Códigos de error

Código de error Código HTTP Descripción
1000 500 Error interno
2001 401 Autenticación fallida, no se proporcionó el token correcto
2002 401 Autenticación fallida, el token ha expirado o ha sido deshabilitado
2004 403 Sin permiso para llamar a esta API
3001 400 Formato de parámetro de solicitud no válido, compruebe si el contenido cumple con el formato JSON
3002 400 Error en el parámetro de solicitud, compruebe si los parámetros de solicitud cumplen con los requisitos
3005 400 Saldo insuficiente
5100 400 Fallo general de SIM Swap
5101 400 Este número no se encuentra dentro del área de cobertura del servicio SIM Swap, incluyendo países, operadores y segmentos de números que actualmente no son compatibles, o el número no puede ser reconocido
Icon Solid Transparent White Qiyu
Contacto