Etiquetar imágenes
Apunte esta API a una carpeta de fotos sin etiquetar y reciba, para cada una, una lista limpia de palabras clave descriptivas —las mismas que escribiría un catalogador humano, sin las semanas de trabajo. Está pensada para el momento en que una fototeca crece más rápido de lo que se puede etiquetar a mano.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema: bibliotecas que crecen más rápido que el etiquetado manual
Todo catálogo de productos, banco de imágenes o galería con contenido de usuarios llega al mismo muro: miles de imágenes entran más rápido de lo que cualquier persona puede sentarse a describir con palabras clave. Lo primero que falla es la búsqueda —un cliente no encuentra 'botas de cuero rojas' si nada en el sistema dice 'rojo', 'cuero' o 'botas'. Después fallan los flujos internos, porque editores y equipos de merchandising no pueden filtrar lo que no está descrito. image.tag existe justo para ese momento, convirtiendo un cúmulo de imágenes mudas en un conjunto buscable y filtrable.
Qué envía y qué recibe de vuelta
Llame a POST /image/tag con una imagen (o una URL firmada hacia ella) y la tarea queda en cola para procesarse. En lugar de una única etiqueta rígida, recibe una lista ordenada de etiquetas —palabras clave generales, objetos relevantes, colores, entornos y materiales presentes en la imagen— para que decida su propio umbral de confianza según el caso de uso. No hay un vocabulario fijo que aprender: las etiquetas describen lo que realmente aparece en la foto.
Cómo llega el resultado
Como etiquetar una biblioteca real implica miles de llamadas, no una sola, el endpoint es asíncrono: devuelve un task_id de inmediato y procesa en segundo plano. Registre un webhook y cada resultado llega en cuanto está listo, o recupérelo usted mismo desde un enlace firmado válido por 24 horas —en ambos casos, ninguna conexión HTTP queda abierta esperando.
Dónde encaja en un flujo más grande
El etiquetado rara vez corre solo. Los equipos suelen encadenarlo después de la subida y antes de la indexación: etiquetar al llegar, escribir las palabras clave en el registro del producto o del DAM, y dejar que la búsqueda y las recomendaciones lean ese campo. Combínelo con image.classify cuando además necesite una categoría principal única, o con image.quality antes, para que las subidas borrosas o rotas nunca lleguen a etiquetarse ni publicarse.
Un precio acorde a cómo crecen las bibliotecas reales
El costo es una pequeña tarifa base por solicitud más una tarifa por imagen, ambas publicadas, sin niveles de suscripción que negociar ni prueba gratuita que abusar. Una solicitud que falla se reintenta automáticamente hasta tres veces y, si sigue fallando, nunca se cobra —así que un archivo corrupto o una URL de origen caída no le cuesta nada, solo un error claro sobre el que puede actuar.
Qué puede hacer con ella
Catálogos de comercio electrónico
Etiqueta automáticamente las fotos de producto entrantes para que los compradores filtren por color, material o estilo sin que nadie escriba una palabra clave a mano.
Bancos de imágenes y archivos históricos
Completa décadas de imágenes de archivo sin etiquetar con palabras clave buscables en un solo lote, en vez de un proyecto de catalogación manual.
Contenido generado por usuarios
Etiqueta las fotos en el momento en que los usuarios las suben, alimentando de inmediato la búsqueda y los flujos de moderación con datos estructurados.
Gestión de activos digitales (DAM)
Mantenga los metadatos de un DAM actualizados automáticamente conforme llegan nuevos activos creativos, en lugar de depender de una carga manual inconsistente.
Preguntas frecuentes
¿Cómo decide la API de etiquetar imágenes qué etiquetas devolver?
Analiza el contenido visual de cada imagen y devuelve una lista ordenada de palabras clave descriptivas de los objetos, colores, entornos y materiales que detecta; usted elige cuáles conservar.
¿Hay un plan gratuito para image.tag?
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.
¿Qué formatos de imagen se aceptan?
Se aceptan formatos rasterizados comunes (JPEG, PNG, WebP y similares); envía el archivo directamente o una URL firmada hacia él.
¿Cómo se cobra el etiquetado de imágenes?
Una pequeña tarifa fija por solicitud más una tarifa por imagen, ambas publicadas en esta página; nada de tokens ni créditos inventados.
¿Puedo etiquetar miles de imágenes a la vez?
Sí. Cada imagen es su propia tarea asíncrona, así que envía solicitudes al ritmo que su flujo permita y recibe los resultados por webhook conforme terminan.
¿Qué pasa si una solicitud de etiquetado falla?
Se reintenta automáticamente hasta tres veces; si sigue fallando recibe un error claro y nunca se le cobra esa solicitud.
¿Cómo recibo los resultados?
Registre un webhook para recibir cada resultado en cuanto esté listo, o consulte un enlace firmado que permanece válido durante 24 horas.
¿En qué se diferencia image.tag de image.classify?
El etiquetado devuelve varias palabras clave descriptivas por imagen; la clasificación asigna la imagen a una de sus propias categorías predefinidas.
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/image/tag \
-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/image/tag", {
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/image/tag",
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/image/tag", 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/image/tag", 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": "image.tag",
"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.
Límites
max_mb | 15 |
max_megapixels | 12 |
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. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |