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ónformat
Validación del formato del número. Coste: 0,01 créditos por número. network
Validación del formato y obtención de la red u operador actual del número. Coste: 0,75 créditos. status
Consulta 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
JSON
con los valores que se detallan a continuación: result string
Resultado satisfactorio o erróneo de la solicitud. Valores:
ok
ko
numbers 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:
requiredfields
internalerror
numberslimit
nocredits
invalidauth
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úmeroactive
Disponible y activo recientemente. absent
Válido pero sin conexión a la red reciente. not_active
Incorrecto o sin suscripción activa. not_mobile
El formato no corresponde a un número móvil. unknown
Error 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
,absent
onot_active
).error
Error 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:
valid
error
type string
Tipo de número telefónico. Valores:
mobile
fixed
fixedormobile
tollfree
premium
shared
voip
personal
pager
uan
voicemail
unknown
country_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
active
se 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
active
se 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