Detectar objetos
Este endpoint no solo dice qué hay en una foto: dibuja una caja alrededor de cada objeto y le entrega las coordenadas. Si su flujo necesita contar, recortar, difuminar o medir algo dentro de una imagen, las cajas delimitadoras son la pieza que lo hace posible.
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.
Por qué importa la ubicación, no solo la presencia
Saber que una foto 'contiene un auto' suele no ser suficiente —necesita saber dónde está el auto, qué tan grande es respecto al encuadre y si hay más de uno. Esa es la diferencia entre clasificar y detectar: una cámara de bodega que cuenta cajas en un estante, una aplicación de retail que mide espacio en góndola, o una herramienta de anonimización que difumina rostros, todas necesitan coordenadas, no solo un sí o no. image.detect_objects devuelve exactamente eso: una caja delimitadora, una etiqueta y un puntaje de confianza por cada objeto que encuentra.
Cómo luce la respuesta
Envía POST a /image/detect-objects con una imagen y recibe una lista de detecciones, cada una un rectángulo (definido por las coordenadas de sus esquinas) junto con la etiqueta del objeto dentro y un puntaje de confianza. Una sola foto puede devolver cero, una o decenas de detecciones según lo que realmente aparezca en el encuadre —una escena de calle puede devolver peatones, vehículos y señalización en una sola pasada.
De un problema de investigación a una llamada de API rutinaria
Localizar varios objetos dentro de una sola imagen, en lugar de etiquetar la imagen como un todo, fue durante años un problema de visión por computadora mucho más difícil que la simple clasificación —exigía modelos construidos específicamente para proponer y puntuar regiones de una imagen, no solo describirla. Esa complejidad hoy está detrás de un único endpoint asíncrono: envía la imagen, recibe un task_id de inmediato y obtiene las detecciones cuando el procesamiento termina, sin operar usted mismo ningún modelo de detección.
Construida para flujos, no para consultas sueltas
Como el trabajo de detección varía mucho en duración según la complejidad de la imagen, toda solicitud es asíncrona: se pone en cola, se procesa y se entrega por webhook en cuanto termina, o mediante un enlace firmado que puede consultar durante 24 horas. Eso significa que un lote de diez mil fotos de bodega y una sola verificación puntual usan la misma llamada, solo que a distinto volumen.
Dónde se conecta
La detección suele ser el primer paso de un trabajo más grande: recortar cada caja delimitadora para alimentar image.classify con una etiqueta más fina, difuminar las cajas devueltas alrededor de rostros o placas por privacidad, o contar detecciones por cuadro para casos de inventario y densidad de multitudes. El precio es una pequeña tarifa base por solicitud más una tarifa por imagen, ambas publicadas de antemano, y una solicitud que falla tras tres reintentos automáticos nunca se cobra —solo recibe un error claro.
Qué puede hacer con ella
Monitoreo de inventario y góndolas
Cuente y ubique productos en imágenes de cámaras de estante para señalar secciones sin existencias sin que alguien recorra el pasillo.
Flujos de privacidad y anonimización
Detecte rostros o placas y use sus cajas delimitadoras para difuminarlos automáticamente antes de publicar una imagen.
Revisión de video de seguridad y accesos
Localice personas o vehículos en cuadros fijos extraídos de cámaras para acelerar la revisión manual de eventos marcados.
Recorte automático y miniaturas
Use las cajas delimitadoras devueltas para recortar automáticamente miniaturas ajustadas y centradas en el sujeto de fotos de producto o anuncios.
Preguntas frecuentes
¿Qué devuelve exactamente la API de detección de objetos?
Una lista de detecciones, cada una con una caja delimitadora, una etiqueta de objeto y un puntaje de confianza, por cada objeto encontrado en la imagen.
¿Cuántos objetos se pueden detectar en una imagen?
Tantos como la imagen realmente contenga —de cero a decenas— ya que cada detección se devuelve de forma independiente y no hay un conteo fijo.
¿La detección de cajas delimitadoras es gratuita?
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.
¿Cómo se cobra la detección de objetos?
Una pequeña tarifa base por solicitud más una tarifa por imagen, ambas publicadas en esta página; sin tokens ni créditos ocultos.
¿Puedo ejecutar detección de objetos en un lote grande de imágenes?
Sí, cada imagen se envía como su propia tarea asíncrona, así que puede encolar lotes grandes y recoger resultados por webhook conforme terminan.
¿En qué formato vienen las coordenadas de las cajas delimitadoras?
Cada detección incluye las coordenadas de las esquinas de su rectángulo junto con la etiqueta y la confianza, listas para recortar, difuminar o medir.
¿En qué se diferencia la detección de la clasificación?
La clasificación asigna una etiqueta a toda la imagen; la detección localiza y etiqueta cada objeto individual dentro de ella, con una caja para cada uno.
¿Qué pasa si una solicitud de detección falla?
Se reintenta automáticamente hasta tres veces; si sigue fallando recibe un error claro y no paga nada por esa solicitud.
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/detect-objects \
-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/detect-objects", {
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/detect-objects",
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/detect-objects", 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/detect-objects", 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.detect_objects",
"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. |