Leer un código de barras
Un lector portátil dedicado descifra un código de barras al instante porque está construido para exactamente una tarea bajo exactamente un tipo de iluminación; una cámara de celular fotografiando un recibo arrugado o una lata abollada no tiene ninguna de esas garantías. Esta api para leer código de barras lee códigos EAN, UPC, Code128, Code39 e ITF desde una foto común, para que las aplicaciones que solo cuentan con cámara, no con un escáner láser, puedan igual extraer un código de producto confiable de una imagen.
Esta tarea no está disponible ahora mismo, así que no se puede contratar. No se cobra nada por ella.
Cómo funciona y APIPor qué los códigos fotografiados son más difíciles de lo que parece
Un escáner de retail dedicado barre con un láser o toma una imagen controlada a una distancia y ángulo fijos, condiciones para las que el formato de código de barras fue diseñado desde el inicio. Una foto tomada a mano introduce inclinación, iluminación desigual, desenfoque por movimiento y, en empaques curvos como una lata o botella, distorsión geométrica real de las propias barras. Decodificar a partir de ese tipo de imagen implica corregir todo eso antes de poder siquiera medir el ancho de las barras con la precisión suficiente para leer los dígitos subyacentes.
Qué hace POST /dev/barcode-decode con su imagen
Envía una foto que contiene uno o más códigos de barras, y la tarea ubica cada símbolo, determina qué simbología usa, y devuelve el valor decodificado junto con el formato identificado. Si un código está demasiado dañado, es muy pequeño o está demasiado distorsionado para decodificarse de forma confiable, la tarea reporta ese resultado explícitamente en lugar de adivinar un valor que podría ser incorrecto.
Cincuenta años de la misma idea de fondo
El código de barras comercial se remonta a 1974, cuando el primer artículo con código UPC se escaneó en una caja real, y el mecanismo central, barras y espacios de ancho variable que representan dígitos, no ha cambiado de fondo desde entonces. Lo que sí ha cambiado es cómo se leen esos códigos: una tarea que antes requería un equipo láser dedicado y costoso ahora puede hacerse desde la imagen de una cámara de uso general, lo cual es precisamente lo que hace práctico hoy decodificar desde una foto común, algo que no era posible una generación atrás.
Distinguir simbologías de forma automática
EAN, UPC, Code128, Code39 e ITF codifican sus datos con un patrón y estructura de barras distintos cada uno, y la tarea identifica cuál está observando como parte del proceso de decodificación, sin que tenga que especificarlo de antemano. Eso importa en la práctica porque una sola foto, de una caja de envío por ejemplo, podría contener un código ITF en la caja exterior y una etiqueta Code128 de una transportadora pegada al lado, y ambos deben leerse correctamente sin clasificación manual.
Cómo encaja en un flujo automatizado de recepción
Las auditorías de inventario hechas con la cámara de un celular en lugar de un lector portátil, el procesamiento de devoluciones que fotografía un producto para confirmar su identidad, y las aplicaciones para compradores que dejan escanear una etiqueta de precio para compararlo en otro lado, todos llaman a este endpoint de la misma forma, enviando una imagen y recibiendo el valor decodificado por webhook firmado o por enlace firmado. Un lote de fotos de una sola jornada de auditoría se procesa con el mismo modelo asíncrono que una sola imagen.
Qué puede hacer con ella
Auditorías de inventario con el celular
Fotografíe el stock en el estante con una cámara de celular estándar y decodifique el código de barras de cada producto sin cargar un lector dedicado.
Verificación en procesamiento de devoluciones
Confirme la identidad de un artículo devuelto decodificando el código de barras de su empaque contra el pedido original antes de emitir un reembolso.
Comparación de precios en una app de compras
Deje que un usuario fotografíe el código de barras de una etiqueta de precio para que la app decodifique el código de producto y busque el precio en otro lugar.
Lectura de etiquetas de envío con simbologías mixtas
Decodifique tanto el código ITF de una caja exterior como una etiqueta Code128 de transportadora que aparecen en la misma foto durante la recepción en el muelle.
Preguntas frecuentes
¿Qué tipos de código de barras lee esta api para leer código de barras?
EAN, UPC, Code128, Code39 e ITF, con la simbología identificada de forma automática como parte de la decodificación.
¿Puede leer un código de barras en una superficie curva como una lata?
Sí, dentro de límites razonables, el decodificador está construido para manejar la distorsión típica de los códigos impresos en empaques curvos fotografiados a mano.
¿Qué pasa si el código está demasiado dañado para leerse?
La tarea informa explícitamente que el código no pudo decodificarse de forma confiable en lugar de devolver un valor adivinado o incorrecto.
¿Debo indicarle a la API qué simbología esperar?
No, la simbología se identifica de forma automática como parte de la decodificación, así que no necesita especificar de antemano si es EAN, UPC, Code128, Code39 o ITF.
¿Puedo decodificar varios códigos de barras de una sola foto?
Sí, cada código encontrado en la imagen se decodifica y se devuelve por separado, incluso cuando aparecen distintas simbologías en la misma foto.
¿Existe un plan gratuito para leer códigos de barras?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuánto cuesta decodificar un código de barras?
$0.002 por solicitud más $0.005 por imagen, y no se cobra por una tarea que termina fallando tras los reintentos.
¿Cómo recibo el resultado decodificado?
POST /dev/barcode-decode devuelve un task_id de inmediato, y el valor decodificado se entrega por webhook firmado o por un enlace firmado válido por 24 horas.
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/dev/barcode-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/dev/barcode-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/barcode-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/barcode-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/barcode-decode", 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
{
"image": "https://ejemplo.com/imagen.jpg"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.barcode_decode",
"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. |