Validar un código postal
Un código postal que parece correcto a simple vista puede arruinar una etiqueta de envío, un cálculo de impuestos o una importación al CRM. Esta api para validar código postal comprueba el formato según las reglas del país correspondiente, detectando errores de escritura en el momento en que se ingresan, no después de que el paquete rebota.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
El problema de que 'se vea bien'
Los sistemas postales no están estandarizados. Un ZIP de Estados Unidos tiene cinco dígitos, a veces nueve con un guion. Un código canadiense alterna letras y números. Un código postal del Reino Unido tiene una longitud que varía por región y un formato que confunde incluso a quienes lo usan a diario. Cuando un formulario de pago o de registro acepta cualquier texto sin validar, una parte considerable de las direcciones terminan siendo imposibles de enrutar, y alguien tiene que corregirlas a mano después. Este endpoint existe para detectar ese error antes de que se convierta en un ticket de soporte.
Qué revisa realmente el endpoint
Se envía un código postal y un identificador de país a POST /verify/postal-code. La tarea valida el texto contra el patrón estructural que usa la autoridad postal de ese país: cantidad de dígitos, posición de letras, separadores y rangos reservados conocidos cuando aplica. Confirma que el código tiene el formato correcto para ese país; no confirma que corresponda a una zona de entrega real y actualmente asignada, porque los límites postales cambian y esos datos no son algo que inventemos o adivinemos.
Un poco de historia que casi nadie recuerda
Los códigos postales son más recientes de lo que la mayoría piensa. Alemania introdujo un sistema numérico en los años cuarenta, Estados Unidos lanzó los ZIP codes en 1963, y los códigos alfanuméricos del Reino Unido se implementaron gradualmente durante los años setenta y ochenta. Como cada país construyó su sistema de forma independiente, para resolver problemas locales de clasificación con infraestructura local, no existe un patrón universal. Por eso mismo, validar el formato requiere un conjunto de reglas mantenido país por país, y no una única expresión regular escrita una vez y olvidada.
Dónde encaja en su flujo de trabajo
Puede invocarlo en línea durante el checkout o el registro para recibir retroalimentación inmediata, o correrlo en lote contra una base de datos existente de clientes o envíos para marcar los registros que merecen una segunda revisión. Como cada tarea es asíncrona, encola la solicitud, mantiene su formulario ágil, y recibe el resultado mediante un webhook firmado o un enlace firmado válido por 24 horas. Nada aquí le obliga a añadir geocodificación o autocompletado de direcciones a un simple paso de validación.
Lo que no es
Esto es un verificador de formato, no una suite completa de verificación de direcciones. No le dirá si una calle existe ni si un mensajero entrega ahí. Usado para lo que es, es un filtro barato, rápido y preciso que elimina una gran parte de los registros claramente rotos antes de que le cuesten una entrega fallida o una factura rebotada.
Qué puede hacer con ella
Validación en el formulario de pago
Verifique el campo de código postal en tiempo real mientras el cliente completa los datos de envío, antes de confirmar el pedido y generar la etiqueta.
Limpieza de base de clientes
Corra una pasada en lote sobre una exportación antigua del CRM para marcar los códigos postales que ya no coinciden con el formato esperado para su país registrado.
Formularios de registro multipaís
Aplique automáticamente el patrón correcto según el país en lugar de mantener su propia tabla de expresiones regulares para más de 200 sistemas postales.
Prechequeo logístico
Filtre un lote de pedidos antes de enviarlo a la API de un transportista, reduciendo la tasa de fallos al generar etiquetas por datos mal formados.
Preguntas frecuentes
¿Qué verifica exactamente esta api para validar código postal?
Comprueba que el código postal coincida con el formato estructural esperado para el país indicado: cantidad correcta de dígitos o letras, separadores y patrones conocidos. No confirma que el código esté actualmente en uso activo.
¿Funciona con países fuera de Estados Unidos?
Sí, cubre formatos postales de más de 200 países y territorios, cada uno verificado contra su propio patrón y no contra una regla genérica.
¿Hay plan gratuito o prueba sin costo?
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 solicitud?
$0.002 por solicitud, y solo se cobra por las tareas que se completan con éxito.
¿Qué pasa si una tarea falla?
El sistema reintenta automáticamente hasta tres veces. Si sigue fallando, recibe un error claro y no se le cobra.
¿Cómo recibo el resultado?
Cada llamada a POST /verify/postal-code devuelve un task_id de inmediato; el resultado llega por webhook firmado, o puede obtenerlo desde un enlace firmado válido por 24 horas.
¿Puedo validar códigos postales en lote?
Sí, como cada tarea es asíncrona, puede encolar lotes grandes sin bloquear su aplicación mientras llegan los resultados.
¿Verifica si la dirección es entregable, no solo el formato?
No, es estrictamente una verificación de formato. Confirmar que una dirección es entregable requiere datos de mensajería o de la autoridad postal que este endpoint no pretende tener.
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/postal-code \
-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/postal-code", {
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/postal-code",
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/postal-code", 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/postal-code", 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.postal_code",
"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. |