Vista previa de enlace
Pega un enlace en una app de chat y aparece una tarjeta con título, resumen e imagen, casi al instante. Este endpoint genera esos mismos datos de tarjeta bajo demanda para cualquier URL que le envíe, para que pueda construir esa misma experiencia en su propio producto sin mantener un extractor para las particularidades de marcado de cada sitio.
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.
La tarjeta detrás de cada enlace compartido
Cada vez que un enlace se convierte en una tarjeta con titular, descripción breve y miniatura, algún sistema tuvo que leer esa página y elegir las piezas correctas. Apps de mensajería, foros, herramientas de notas y plataformas de gestión de contenido necesitan lo mismo cuando un usuario pega una URL: suficiente vista previa para saber en qué está a punto de hacer clic, sin salir de la aplicación para averiguarlo.
Qué se extrae y cómo
Envía una URL y este endpoint obtiene la página, lee las etiquetas Open Graph y Twitter Card cuando están presentes, y recurre de forma sensata al título de la página, la meta descripción y una imagen representativa cuando esas etiquetas específicas faltan. El resultado llega primero como task_id, y luego los datos de la vista previa mediante un webhook o un enlace firmado válido durante 24 horas: título, descripción, URL de la imagen y el nombre propio del sitio cuando está disponible.
Por qué existe Open Graph
Las etiquetas Open Graph se crearon para que una página pudiera describirse a sí misma una sola vez y que cualquier plataforma que la enlazara mostrara una vista previa consistente, en lugar de que cada sitio adivinara por su cuenta. No todas las páginas las implementan bien, o siquiera las implementan, y es justo por eso que una cadena de respaldo confiable importa más que simplemente leer las etiquetas OG y esperar lo mejor.
Dónde ahorra tiempo real de ingeniería
Construir una función de vista previa de enlaces desde cero implica manejar redirecciones, meta etiquetas mal formadas, imágenes ausentes y páginas que bloquean extractores ingenuos, nada de lo cual es el núcleo de lo que su producto realmente hace. Llamar a este endpoint en su lugar significa que su chat, su herramienta de marcadores o su panel de curaduría de contenido obtienen vistas previas correctas sin que su equipo cargue con ese mantenimiento a largo plazo.
Qué puede hacer con ella
Apps de chat y mensajería
Muestre una tarjeta de vista previa en el momento en que un usuario pega un enlace en una conversación, igual que las grandes plataformas de mensajería.
Herramientas de marcadores y lectura posterior
Complete un enlace guardado con título, miniatura y descripción de forma automática en lugar de dejarlo como una URL sin contexto.
Paneles de curaduría de contenido
Genere tarjetas de vista previa consistentes para un resumen o boletín que reúne enlaces de muchas fuentes externas distintas.
Bloques de enlace en CMS y constructores de páginas
Permita que los editores peguen una URL y el bloque de enlace se complete automáticamente con el título, imagen y descripción correctos.
Preguntas frecuentes
¿Cómo funciona la API de vista previa de enlaces?
Envíe una solicitud POST a /web/link-preview con una URL; recibe un task_id de inmediato y los datos de la vista previa (título, descripción, imagen) llegan por webhook o por un enlace firmado cuando están listos.
¿Es gratuita la API de vista previa de enlaces?
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.
¿Lee las etiquetas Open Graph y Twitter Card?
Sí, primero lee los metadatos de Open Graph y Twitter Card, y recurre al título de la página, la meta descripción y una imagen probable cuando esas etiquetas faltan o están incompletas.
¿Qué pasa si una página no tiene ninguna imagen de vista previa?
El campo de imagen se devuelve vacío en lugar de adivinarse al azar, para que su interfaz decida cómo mostrar un enlace sin miniatura disponible.
¿Puedo generar vistas previas en volumen para muchas URL?
Sí, envíe varias solicitudes y deje que el webhook recolecte cada resultado a medida que se completa, algo útil para poblar un lote de enlaces guardados o un feed de contenido.
¿En qué se diferencia de leer las meta etiquetas yo mismo?
Se encarga de la lógica de respaldo, del seguimiento de redirecciones y de las implementaciones inconsistentes de etiquetas en sitios reales, para que obtenga una estructura limpia sin importar cómo esté construida la página de origen.
¿Cómo recibo los datos de la vista previa?
Puede elegir un webhook firmado para entrega automática, o consultar el resultado en un enlace firmado que permanece válido durante 24 horas después de completarse la tarea.
¿Se conserva el contenido de la página después de generar la vista previa?
No, los datos se eliminan al terminar la ventana de retención y nunca se usan para entrenar ningún modelo.
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/link-preview \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/link-preview", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/link-preview",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/link-preview", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/link-preview", 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
{
"url": "https://ejemplo.com"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.link_preview",
"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. |