EN

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.

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

  • 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:

  • Ampliar todo

    RESULTADO POR NÚMERO

Ejemplo consulta HLR
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

            
Resultado positivo
{
  "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
}
              
Resultado erróneo
{
  "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ódigos de error de la API HLR
Código HTTPErrores JSONDescripción
200Petición procesada correctamente.
400requiredfields typeerror numberslimitError 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.
401invalidauthCredenciales (username o token) incorrectas.
402nocreditsLa cuenta no tiene el saldo suficiente para la petición HLR.
500internalerrorError temporal o incidencia en el servicio.