Vigilar cambios visuales
El texto de una página puede quedar intacto mientras el diseño se rompe por completo: una imagen principal caída, un layout colapsado, un banner que desapareció sin avisar. Esta API para monitorear cambios visuales renderiza la página, la compara contra la última captura válida y le dice exactamente qué se movió, apareció o desapareció.
Por qué los píxeles no mienten como el texto
Comparar el HTML crudo puede indicar tranquilamente que nada cambió, cuando en realidad falló la carga de una hoja de estilos y toda su página de pago se muestra ahora como texto sin formato sobre fondo blanco. Equipos de diseño, QA y cualquiera responsable de páginas de marketing que deben verse de una forma específica necesitan una verificación que renderice la página como la vería un visitante real y compare esa representación a lo largo del tiempo.
Qué ocurre en cada verificación
Llama a POST /web/monitor-visual con una URL y una frecuencia de chequeo; la tarea renderiza la página, la captura y guarda una huella visual de referencia. En cada comprobación posterior, la nueva captura se compara región por región contra esa línea base. Si la diferencia supera un umbral significativo, recibe un resultado con las áreas afectadas y una referencia de antes y después, no una simple bandera de 'algo cambió'.
De capturas sueltas a una disciplina
El monitoreo de regresión visual nació en el control de calidad de frontend, cuando los equipos se cansaron de publicar un botón con el color equivocado o un desplazamiento de diseño que nadie detectó en una revisión manual. Aplicar la misma idea a páginas de producción reales, no solo a entornos de prueba, cierra un punto ciego: las cosas se rompen en producción por razones que un ambiente de staging nunca ve, desde una mala configuración hasta un widget de terceros que deja de funcionar.
Pensado para su propia automatización
Cada tarea es asíncrona: recibe un task_id de inmediato y el resultado real más tarde, por webhook firmado (lo recomendado para flujos automatizados) o por enlace firmado válido durante 24 horas. Eso significa que puede programar las verificaciones desde su propio cron, enviar los resultados directo a un canal de incidentes o encadenarlas después de un despliegue, sin mantener una conexión abierta ni hacer polling.
Un precio acorde a lo que usa
El endpoint cuesta $0.040 por solicitud más $0.001 por comprobación, publicado y predecible. No hay plan gratuito ni período de prueba: el acceso requiere saldo prepago, lo que mantiene la capacidad de verificación rápida y libre de abuso. Una tarea fallida se reintenta automáticamente hasta tres veces y nunca se cobra si finalmente no se completa.
Qué puede hacer con ella
Integridad de páginas de marketing
Confirme que una landing page de campaña siga mostrando su imagen principal, tabla de precios y llamado a la acción tal como fueron diseñados después de cada despliegue.
Falla de un widget de terceros
Detecte el momento exacto en que un chat, un banner de cookies o un video incrustado deja de cargar y deja un espacio vacío visible.
Seguimiento del diseño de la competencia
Vigile la página de precios o funciones de un competidor para notar un rediseño visual antes de que el cambio aparezca en cualquier otro lado.
Control visual después de cada despliegue
Ejecute una comprobación visual automática justo después de que termine su pipeline de publicación, y decida un rollback según el resultado.
Preguntas frecuentes
¿En qué se diferencia monitorear cambios visuales de comparar el HTML?
El HTML puede seguir siendo técnicamente válido mientras la página se ve rota: falta una hoja de estilos, una sección queda oculta o una imagen falla en silencio. Esta api para monitorear cambios visuales compara la salida realmente renderizada, así que detecta lo que una comparación de texto se pierde.
¿Hay una versión gratuita del monitor visual?
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 recibo el resultado de la comparación?
Cada llamada a POST /web/monitor-visual devuelve un task_id de inmediato; el resultado llega por webhook firmado o por enlace firmado válido durante 24 horas, según lo que configure.
¿Qué se considera una comprobación?
Cada verificación visual individual realizada sobre la URL objetivo, incluida la captura base y cada comparación posterior, se factura a $0.001, además del costo base de $0.040 por solicitud.
¿Puedo monitorear páginas con inicio de sesión o tamaños de pantalla específicos?
Sí, la URL objetivo y los parámetros de renderizado se definen por solicitud, así que se pueden verificar páginas autenticadas o específicas de un dispositivo mientras la página sea alcanzable.
¿Qué pasa si una verificación falla, por ejemplo por timeout?
La tarea se reintenta automáticamente hasta tres veces; si aun así falla, recibe un error claro y no se cobra ese intento fallido.
¿Guardan mis capturas para siempre?
No. Los datos capturados se eliminan después del período de retención y nunca se usan para entrenar modelos; solo existen para entregar su comparación y su webhook.
¿Puedo usarlo en volumen sobre muchas URLs?
Sí, cada URL es una solicitud asíncrona independiente, así que puede disparar comprobaciones de monitor-visual sobre tantas páginas como necesite desde su propio programador.
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/web/monitor-visual \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/web/monitor-visual", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/monitor-visual",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/monitor-visual", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/monitor-visual", 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
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.monitor_visual",
"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
timeout_sec | 30 |
max_crawl_pages | 25 |
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. |