API HLR Lookup
La API HLR Lookup de LabsMobile está diseñada para técnicos y clientes que quieran comprobar la disponibilidad de un número de teléfono móvil.
Las aplicaciones más comunes de la API HLR son:
- La actualización y depuración de una base de datos móvil
- La comprobación del estado de un número móvil en tiempo real en un proceso de registro o autenticación
Esta documentación explica detalladamente el proceso de integración. Consulta más información sobre el servicios HLR y sus beneficios.
Para iniciar una integración con la API HLR Lookup son imprescindibles los siguientes requisitos:
- Una cuenta de LabsMobile asociada con un nombre de usuario (correo electrónico de registro). Crea una cuenta aquí.
- Token API utilizado como contraseña y generado desde la sección Configuración API de tu cuenta.
- URL del endpoint de la API HLR y los valores de los parámetros que se detallan a continuación.
Colección Postman API HLR Lookup
Descargar
A tener en cuenta
La API HLR de LabsMobile es una API REST que utiliza el protocolo HTTP GET con una URL base común para todas las peticiones: https://api.labsmobile.com/hlr
Es recomendable utilizar una URL que incluya el protocolo HTTPS en cualquier versión de nuestra API.
Importante Se establece un máximo de 10 peticiones por segundo. Malos usos, abusos o un mayor volumen de peticiones provocarán un bloqueo temporal o permanente de la cuenta y/o dirección IP.
Autenticación
El método de autenticación utilizado en la API OTP es Basic Auth HTTP.
Este tipo de autenticación consta de unas credenciales username:tokenapi que se incluyen en el encabezado de la petición HTTP codificado en base64().
Ejemplo de valor de encabezado de autenticación:Authorization: Basic 9yewaXic21vYmlsZqS5jmSk04enFTbUU=
Consulta HLR
Solicitud HLR para uno o varios números de teléfono móvil.
Con esta consulta HLR se obtiene el estado o disponibilidad del número y la información relacionada: operador actual, formato, tipo de número, país de suscripción, etc.
ENDPOINT
GET https://api.labsmobile.com/hlr
PARÁMETROS
numbers string | list obligatorio
Números móviles que se incluirán en la solicitud de HLR. Los números se deben incluir en formato internacional E.164 con el código de país y sin "+" ó "00". Puede contener un único número o una lista de números separados por comas con un máximo de 100 números.
Ejemplo:
numbers=573058156414,528130939475,51918213400 type string
Tipo de comprobación HLR.
Valores de tipo de comprobaciónformatValidación del formato del número. Coste: 0,01 créditos por número. networkValidación del formato y obtención de la red u operador actual del número. Coste: 0,75 créditos. statusConsulta del estado del número, validación del formato y obtención de la red actual. Coste: 0,1 créditos por número. Valor por defecto. - Ampliar todo
RESULTADO
El resultado de cualquier petición API HLR se obtiene en formato
JSONcon los valores que se detallan a continuación: result string
Resultado satisfactorio o erróneo de la solicitud. Valores:
okkonumbers array
Información resultante por número incluido en la petición. El formato y datos obtenido se detallan en RESULTADO POR NÚMERO.
error string
Descripción en caso de error. Sin valor en caso de que la solicitud se realice correctamente. Valores:
requiredfieldsinternalerrornumberslimitnocreditsinvalidauth
Consultar más información sobre los Errores.count integer
Número de peticiones procesadas.
credits float
Número de créditos que se han consumido por todas las comprobaciones de la petición HLR.
- Ampliar todo
RESULTADO POR NÚMERO
msisdn string
Número móvil en formato internacional E.164 sin "+" ni "00".
status string
Indica la disponibilidad del número.
Valores del estado de un númeroactiveDisponible y activo recientemente. absentVálido pero sin conexión a la red reciente. not_activeIncorrecto o sin suscripción activa. not_mobileEl formato no corresponde a un número móvil. unknownError temporal en la consulta HLR. No ha sido posible obtener un estado por alguna incidencia en la red o en el dispositivo. Es posible que una consulta posterior obtenga un resultado satisfactorio ( active,absentonot_active).errorError en la consulta HLR. Debido a la configuración de la suscripción móvil, del dispositivo o del operador no es posible obtener información de este número. format string
Indica si se trata de un número con un formato válido. Valores:
validerrortype string
Tipo de número telefónico. Valores:
mobilefixedfixedormobiletollfreepremiumsharedvoippersonalpageruanvoicemailunknowncountry_name string
Nombre del país al que pertenece el número.
country_code string
Prefijo telefónico del país al que pertenece el número.
country_iso string
Código ISO del país al que pertenece el número.
network string
Nombre de la red actual del operador. En el caso de que el estado sea diferente a
activese devuelve la red correspondiente al prefijo o formato del número.mcc string
Código MCC (Mobile Country Code) del país según la codificación E.212 ITU-T .
mnc string
Código MNC (Mobile Network Code) de red u operador móvil según la codificación E.212 ITU-T . En el caso de que el estado sea diferente a
activese devuelve código de la red correspondiente al prefijo o formato del número.
curl --user myUsername:myToken -X GET \
'https://api.labsmobile.com/hlr/?numbers=573058156414%2C528130939475%2C51918213400'\
-H 'Cache-Control: no-cache' \
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.labsmobile.com/hlr/?numbers=573058156414,528130939475,51918213400");
curl_easy_setopt(hnd, CURLOPT_HTTPAUTH, (long)CURLAUTH_BASIC);
curl_easy_setopt(hnd, CURLOPT_USERNAME, "myUsername");
curl_easy_setopt(hnd, CURLOPT_PASSWORD, "myToken");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Cache-Control: no-cache");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);
var client = new RestClient("https://api.labsmobile.com/hlr/?numbers=573058156414,528130939475,51918213400");
client.Authenticator = new HttpBasicAuthenticator("myUsername", "myToken");
var request = new RestRequest(Method.GET);
request.AddHeader("Cache-Control", "no-cache");
IRestResponse response = client.Execute(request);
HttpResponse<String> response = Unirest.get("https://api.labsmobile.com/hlr/?numbers=573058156414,528130939475,51918213400")
.basicAuth("myUsername","myToken")
.header("Cache-Control", "no-cache")
.asString();
<?php
$auth_basic = base64_encode("myUsername:myToken");
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.labsmobile.com/hlr/?numbers=573058156414,528130939475,51918213400",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic ".$auth_basic,
"Cache-Control: no-cache",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import http.client, base64
usrPass = "myUsername:myToken"
b64Val = base64.b64encode(bytes(usrPass, 'utf-8'))
conn = http.client.HTTPConnection("api.labsmobile.com")
payload = ""
headers = {
'Authorization': "Basic %s" % b64Val.decode('utf-8'),
'Cache-Control': "no-cache"
}
conn.request("GET", "/json/hlr/?numbers=573058156414,528130939475,51918213400", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const axios = require('axios');
let data = '';
let config = {
method: 'get',
maxBodyLength: Infinity,
url: `https://api.labsmobile.com/hlr/?numbers=573058156414,528130939475,51918213400`,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + Buffer.from("myUsername:myToken").toString('base64')
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
require 'uri'
require 'net/http'
require 'base64'
url = URI("https://api.labsmobile.com/hlr/?numbers=573058156414,528130939475,51918213400")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic ' + Base64::encode64("myUsername:myToken")
request["Cache-Control"] = 'no-cache'
response = http.request(request)
puts response.read_body
{
"result":"ok",
"error":"",
"numbers":[
{
"msisdn":"573058156414",
"status":"active",
"country_name":"Colombia",
"country_code":"57",
"country_iso":"CO",
"network":"Colombia Movil SA(TIGO)",
"mcc":"732",
"mnc":"103",
"format":"valid",
"type":"mobile"
},
{
"msisdn":"528130939475",
"status":"active",
"country_name":"Mexico",
"country_code":"52",
"country_iso":"MX",
"network":"Radiomovil Dipsa(TELCEL)",
"mcc":"334",
"mnc":"020"
"format":"valid",
"type":"fixedormobile"
},
{
"msisdn":"51918213400",
"status":"not_active",
"country_name":"Peru",
"country_code":"51",
"country_iso":"PE",
"network":"Viettel Peru SAC",
"mcc":"716",
"mnc":"015"
"format":"valid",
"type":"mobile"
}],
"count":3,
"credits":0.3
}
{
"result":"ko",
"error":"invalidauth"
}
Errores
A continuación se describen los códigos de error que puede devolver una petición a la API HLR.
| Código HTTP | Errores JSON | Descripción |
|---|---|---|
| 200 | Petición procesada correctamente. | |
| 400 | requiredfields typeerror numberslimit | Error en alguno de los parámetros de la petición. Campos obligatorios sin valor, valor del parámtero type incorrecto o tamaño del listado de números mayor a 100. |
| 401 | invalidauth | Credenciales (username o token) incorrectas. |
| 402 | nocredits | La cuenta no tiene el saldo suficiente para la petición HLR. |
| 500 | internalerror | Error temporal o incidencia en el servicio. |
Recursos de soporte
Recomendamos consultes y tengas en cuenta los siguientes recursos de ayuda en tu integración:
- Descripción, manual y ejemplos de código de la API de envío SMS
- Guía técnica de un proceso de validación o autenticación OTP por SMS
- Todas las versiones y funcionalidades de la API de LabsMobile
- Tutorial primeros pasos de una integración API
- Crea una cuenta de prueba
- Recomendaciones y buenas prácticas en cualquier integración
- Plugins, módulos y extensiones
- ¿Necesitas ayuda? Contacta con nuestros técnicos

