Validar un teléfono
Una api validar numero de telefono toma lo que sea que un usuario haya escrito, con guiones, espacios, paréntesis, formato local o nada de eso, y lo convierte en una cadena E.164 confiable como +14155552671, o le dice claramente que el número no puede ser válido. Es la diferencia entre una base de datos llena de suposiciones y una que realmente puede marcar o usar para enviar mensajes.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Por qué los números telefónicos son más caóticos de lo que parecen
Un número telefónico escrito en un formulario web puede llegar como (415) 555-2671, 415.555.2671, 04155552671, o 15552671 asumiendo un código de país que nunca se escribió. Los planes de numeración varían por país en longitud, estructura del código de área e incluso en si se eliminan los ceros iniciales al marcar internacionalmente, así que una expresión regular que funciona para los números de un país suele rechazar o distorsionar los de otro. Guardar ese caos crudo significa que cada sistema siguiente, proveedor de SMS, discador, CRM, tiene que adivinar el formato por su cuenta.
Qué es realmente E.164
E.164 es el estándar internacional de numeración telefónica: un signo más, el código de país, y luego el número de suscriptor, sin espacios, guiones ni paréntesis, con un tope de quince dígitos. Existe específicamente para que los sistemas de telecomunicaciones de todo el mundo puedan enrutar llamadas y mensajes sin ambigüedad, y se ha convertido en el formato que espera de facto cualquier api de SMS o voz seria. Normalizar a E.164 una sola vez, al ingresar el dato, significa que nunca más tiene que reconciliar diferencias de formato.
Cómo maneja el análisis el endpoint
Envía el texto crudo junto con una pista opcional de país por defecto, ya que un número como 555-2671 no significa nada sin saber a qué plan de numeración pertenece, y el endpoint lo analiza contra las reglas de numeración de esa región, valida la longitud y estructura, y devuelve la forma normalizada en E.164 cuando el número es estructuralmente válido. También devuelve un veredicto claro de inválido para números que no pueden ser reales, detectando erratas, dígitos faltantes y códigos de área imposibles antes de que lleguen a un discador.
Qué contiene una respuesta
Cada llamada devuelve un task_id de inmediato, y el resultado, entregado por webhook o enlace firmado válido por 24 horas, incluye el número normalizado en formato E.164, un indicador de validez y el país detectado o confirmado. Eso es suficiente para guardar un solo campo limpio en su base de datos y dejar de manejar múltiples formatos crudos entre mercados.
Dónde rinde la normalización más adelante
Las plataformas de SMS y voz cobran y enrutan según E.164, así que un número mal formateado puede fallar silenciosamente al enviarse o cobrarse a la tarifa equivocada. Pasar cada número por esta verificación al registrarse, pagar o capturar un lead significa que su CRM, su flujo de autenticación de dos factores y su discador de soporte al cliente leen todos de la misma fuente normalizada, sin lógica de formato duplicada por cada equipo en su infraestructura.
Qué puede hacer con ella
Normalización en formularios de registro
Convierta lo que sea que un usuario escriba en un campo de teléfono, formato local, espacios, paréntesis, en E.164 limpio antes de que toque su base de datos.
Configuración de autenticación de dos factores
Valide que un número sea estructuralmente correcto antes de enviar el primer código por SMS, evitando un envío desperdiciado a un número imposible.
Limpieza de datos del CRM
Normalice miles de números de contacto antiguos guardados en formatos inconsistentes para que su discador y su herramienta de SMS los usen sin reformateo manual.
Confirmación de entrega en el pago
Confirme que el número de contacto de envío sea válido y esté correctamente formateado antes de despachar un pedido, para que las actualizaciones por SMS realmente lleguen al comprador.
Preguntas frecuentes
¿Qué es E.164 y por qué la API normaliza a ese formato?
E.164 es el estándar internacional de numeración telefónica, un signo más, código de país y número de suscriptor sin otros caracteres; esta api validar numero de telefono normaliza a ese formato porque es lo que esperan las plataformas de SMS y voz en todo el mundo.
¿Necesito especificar el país?
Para números sin código de país, dar una pista de país por defecto mejora la precisión, ya que un número en formato local es ambiguo sin saber a qué plan de numeración pertenece.
¿Es gratis validar números telefónicos?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Cuánto cuesta cada validación?
Cada solicitud a /verify/phone cuesta 0.002 dólares, cobrados únicamente cuando la tarea se completa con éxito.
¿Confirma que el número está activo o es alcanzable en este momento?
No, este endpoint valida estructura y formato contra las reglas del plan de numeración; para detalle de operador y tipo de línea, combínelo con el endpoint de consulta de operador.
¿Funciona con números de cualquier país?
Sí, analiza contra las reglas de los planes de numeración de países en todo el mundo, no el formato de una sola región.
¿Cómo obtengo el resultado?
Recibe un task_id de inmediato, y el número normalizado junto con el indicador de validez llegan mediante su webhook firmado o un enlace firmado válido por 24 horas.
¿Se me cobra si la validación falla?
No, las tareas fallidas se reintentan automáticamente hasta tres veces y nunca se cobran; solo se devuelve un error claro después de agotar los reintentos.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/verify/phone \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/verify/phone", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/verify/phone",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/verify/phone", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/verify/phone", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.phone",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |