URL a PDF
Apunte este endpoint a cualquier URL pública y reciba la página convertida en PDF, no una captura de pantalla armada a la fuerza, sino un documento real con texto seleccionable, saltos de página funcionales y el diseño que el sitio realmente muestra. Sirve para el momento en que necesita dejar constancia de cómo se veía una página, o una copia imprimible de un contenido que no controla.
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é archivar una página en vez de su HTML
A veces la fuente no es suya: la página de precios de un competidor, un aviso oficial, los términos de un socio, un anuncio del que necesita evidencia antes de que cambie. Guardar el HTML crudo es frágil — las hojas de estilo externas dejan de existir, los scripts dejan de correr, y seis meses después el archivo se ve como un muro de texto sin formato. Un PDF congela la página tal como se renderizó en el momento de la captura: fuentes incrustadas, diseño fijo, con fecha. Este endpoint está pensado exactamente para ese caso, donde lo que importa es la página destino como fuente de verdad, no una plantilla que usted redacta.
Qué ocurre realmente al llamarlo
Envía la URL destino con un POST a /pdf/from-url, con tamaño de página, márgenes y una condición de espera opcionales si la página tarda en terminar de cargar. La llamada devuelve un task_id de inmediato porque cargar y renderizar un sitio en vivo no es instantáneo: el DNS, las redirecciones, las imágenes y las fuentes toman tiempo real. Cuando la página termina de renderizarse, la convertimos a PDF y le avisamos por webhook, o la dejamos lista para descargar en un enlace firmado válido por 24 horas.
Una historia más discreta de lo que parece
Convertir una página renderizada en un formato del tamaño de una hoja es anterior a la web moderna — los navegadores traen función de 'imprimir' desde los años noventa — pero hacerlo sin interfaz, bajo demanda y por API es una comodidad más reciente construida sobre los mismos motores de renderizado que usamos a diario para navegar. Lo que antes exigía abrir un navegador, esperar y hacer clic en Archivo, luego Imprimir, ahora ocurre en una sola llamada asíncrona, lo que hace posible integrarlo dentro de un software y no solo dentro del flujo de una persona.
Dónde encaja en una canalización
Como cada solicitud es independiente y reporta su resultado por webhook, puede encolar una URL en el momento exacto en que importa — aparece una factura nueva en el portal del cliente, se actualiza una página regulatoria, se publica una vacante — y capturarla sin que nadie abra un navegador. Los reintentos ocurren automáticamente hasta tres veces si la página está lenta o momentáneamente inaccesible, y solo una página que nunca carga devuelve un error. No se cobra nada por una solicitud que falla.
Precio, acceso y qué pasa con sus datos
El precio es $0.040 por solicitud más $0.001 por página del PDF resultante, así que una captura de una sola página cuesta unos cuatro centavos y un artículo largo unos centavos más. Llamar al endpoint requiere saldo prepago — sin saldo recibe un 402, algo intencional que mantiene rápida la cola de renderizado para todos los que sí tienen acceso. La página capturada y el PDF que produce se conservan solo durante la ventana de retención, luego se eliminan y jamás se usan para entrenar nada.
Qué puede hacer con ella
Evidencia legal y de cumplimiento
Capture las afirmaciones publicitarias de un competidor, los términos publicados de un proveedor o un aviso oficial exactamente como aparecían en una fecha determinada, antes de que la página pueda editarse o retirarse.
Lectura posterior y archivos sin conexión
Convierta artículos largos o páginas de documentación en PDFs para una base de conocimiento, de modo que los compañeros sin acceso a internet o sin cuenta en el sitio original puedan leer el material igual.
Capturas de monitoreo automatizado
Obtenga una página de precios, una página de estado o un panel público con periodicidad programada y guarde cada PDF como un registro fechado, para poder demostrar qué mostraba una página en un momento dado.
Entregables para clientes desde contenido alojado
Convierta un reporte o panel orientado al cliente que solo existe como página web en un PDF que puede enviar por correo o archivar, sin pedirle a nadie que instale nada.
Preguntas frecuentes
¿Cómo convierto una URL a PDF con una API?
Haga un POST de la URL a /pdf/from-url y recibe un task_id de inmediato. El PDF terminado llega a su webhook, o lo descarga desde un enlace firmado una vez que termina el renderizado.
¿Hay plan gratuito o prueba gratis en la API URL a PDF?
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 convertir una página web a PDF?
El precio es $0.040 por solicitud más $0.001 por página del documento resultante, así que una captura típica de una sola página cuesta cerca de $0.041.
¿Captura páginas que cargan contenido de forma dinámica?
Sí — la página se renderiza por completo, incluidos scripts y estilos, antes de convertirla, así que el contenido que aparece después de la carga inicial queda incluido en el PDF.
¿Puedo convertir páginas privadas o protegidas con contraseña?
El endpoint obtiene URLs públicas; las páginas detrás de un inicio de sesión que la solicitud no pueda alcanzar no se renderizarán correctamente, así que funciona mejor con contenido de acceso público.
¿Puedo procesar un lote grande de URLs de una vez?
Sí. Cada URL es una tarea independiente con su propio task_id, así que puede encolar miles de páginas y dejar que cada webhook de finalización dispare el siguiente paso, sin consultas repetidas.
¿Qué pasa si la página destino no carga?
La tarea se reintenta automáticamente hasta tres veces, y solo entonces devuelve un error claro. Nunca se le cobra por una solicitud que termina fallando.
¿Cuánto tiempo está disponible el resultado y retienen mis datos?
El enlace firmado sigue válido durante 24 horas. Tras la ventana de retención, la página obtenida y el PDF generado se eliminan y nunca se usan para entrenar nada.
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/pdf/from-url \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf":"https://ejemplo.com/documento.pdf"}'const res = await fetch("https://api.kit.forhosting.com/pdf/from-url", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pdf": "https://ejemplo.com/documento.pdf"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/from-url",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pdf": "https://ejemplo.com/documento.pdf"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/from-url", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pdf":"https://ejemplo.com/documento.pdf"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pdf":"https://ejemplo.com/documento.pdf"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/from-url", 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
{
"pdf": "https://ejemplo.com/documento.pdf"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.from_url",
"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 | 25 |
max_pages | 200 |
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. |
413 | input_too_large | El archivo supera el límite de tamaño. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |