Validar un código de barras
Un código de barras con un solo dígito mal escrito sigue pareciendo válido, hasta que el lector lo rechaza en caja o un marketplace devuelve la publicación. Esta api para validar ean upc recalcula el dígito de control de códigos EAN-13, EAN-8, UPC-A, UPC-E e ISBN y confirma si el número es matemáticamente consistente, en una sola solicitud.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Para qué sirve el dígito de control
Todo código EAN, UPC e ISBN termina en un dígito que no forma parte de la identidad del producto, es pura aritmética. Ese dígito se calcula a partir de los números anteriores con una fórmula de ponderación fija, así que si un solo dígito se transpuso durante la captura de datos, una importación de hoja de cálculo o un escaneo OCR de una etiqueta impresa, la cuenta ya no cierra y el código queda demostrablemente mal. Esa es la idea completa: un lector puede detectar un error de tipeo sin necesidad de consultar nada externo.
Qué hace POST /verify/barcode
Envía el texto del código y, opcionalmente, la simbología esperada. La tarea elimina el formato, confirma que la longitud coincide con un estándar conocido, recalcula el dígito de control con el algoritmo correcto para ese formato y lo compara con el que se proporcionó. La respuesta indica si el código es válido y con qué simbología coincidió, para que un código que parece válido tanto como EAN-13 como UPC-A mal formado no le deje adivinando.
Un formato con más historia de la que parece
El UPC se adoptó comercialmente en Estados Unidos en 1974, y se escaneó por primera vez en un paquete de chicles en un supermercado de Ohio. El EAN llegó poco después como la extensión internacional, agregando un dígito de prefijo de país para que la misma infraestructura funcionara en todo el mundo. El ISBN, de origen distinto pero de estructura similar, viene de un esquema de numeración para libreros de los años sesenta y más tarde se integró a la misma lógica de dígito de control que usa el EAN-13. Tres industrias distintas, una idea compartida: números capaces de detectar sus propios errores.
Dónde encaja en un flujo real
Úselo cuando llega un feed de proveedor con miles de SKU nuevos y necesita saber qué códigos de barras son estructuralmente correctos antes de que lleguen a un catálogo o a un punto de venta. Úselo antes de enviar publicaciones a un marketplace que rechaza de plano los códigos mal formados. Como la tarea es asíncrona, la envía y sigue trabajando, y luego recoge los resultados mediante un webhook firmado o un enlace firmado válido por 24 horas, sin necesidad de sondear el estado.
Lo que no hace
Confirma validez matemática, no que el código esté registrado a un producto real ni que no esté duplicado dentro de su propio catálogo. Esos son problemas distintos que requieren datos distintos. Lo que ofrece es un primer filtro rápido y honesto que elimina los códigos que ya sabe que están rotos, antes de que le cuesten un envío rechazado.
Qué puede hacer con ella
Revisión de feed de proveedores
Verifica cada código de barras en un feed de productos nuevo antes de importarlo, para que los códigos EAN o UPC estructuralmente inválidos nunca lleguen al catálogo.
Preparación de publicaciones en marketplace
Valida códigos ISBN o EAN antes de enviarlos a un marketplace que rechaza publicaciones con dígitos de control mal formados.
Control en captura de punto de venta
Detecta un dígito mal escrito en un código de barras ingresado manualmente antes de que se guarde en el inventario y provoque errores de lectura después.
Limpieza de catálogo antiguo
Revisa en lote una base de datos de productos antigua para marcar los códigos de barras cuyo dígito de control ya no calcula correctamente.
Preguntas frecuentes
¿Qué formatos de código de barras soporta esta api para validar ean upc?
EAN-13, EAN-8, UPC-A, UPC-E e ISBN, cada uno verificado con el algoritmo de dígito de control específico de ese formato.
¿Confirma que el código de barras corresponde a un producto real y registrado?
No, confirma que el dígito de control es matemáticamente correcto para la simbología indicada. Las consultas a un registro son otro tipo de dato que este endpoint no pretende tener.
¿Puedo validar ISBN con el mismo endpoint?
Sí, ISBN-10 e ISBN-13 son compatibles junto con los formatos EAN y UPC.
¿Hay una prueba gratuita?
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 verificación?
$0.002 por solicitud, y solo se cobra cuando la tarea se completa con éxito.
¿Cómo obtengo los resultados de un lote de códigos?
Cada solicitud a POST /verify/barcode devuelve un task_id de inmediato, y los resultados llegan por webhook firmado o por un enlace firmado válido por 24 horas.
¿Qué pasa si la tarea falla?
Se reintenta automáticamente hasta tres veces; si aún así no se completa, recibe un error claro y no se le cobra.
¿Puede detectar un código duplicado en mi catálogo?
No, eso requiere comparar contra sus propios datos, a los que este endpoint no tiene acceso. Solo valida la consistencia interna del código.
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/barcode \
-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/barcode", {
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/barcode",
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/barcode", 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/barcode", 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.barcode",
"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. |