PRNT REST API
Documentación y SDKs
Integre la captura web programática en sus aplicaciones en minutos. Diseño RESTful, respuestas JSON y webhooks firmados con HMAC.
Renderizado en menos de 50ms
Instancias de Chromium precalentadas en 12 nodos Edge globales con aciertos de caché CDN instantáneos para solicitudes repetidas.
DOM Perfecto al Píxel
Hidratación completa de JavaScript, fotogramas WebGL, desplazamiento infinito, multiplicadores Retina y cierre automático de avisos de cookies.
Seguridad Reforzada
Protección automática contra SSRF, sandboxes Docker aislados de un solo uso, cero persistencia de cookies de destino y TLS 1.3 de 256 bits.
SDKs Multilenguaje
Bibliotecas idiomáticas y ejemplos listos para copiar y pegar en cURL, Python, Node.js, PHP y Go con parámetros tipados.
01 Guía de Inicio Rápido
Realice su primera solicitud de captura programática en menos de 60 segundos con nuestra API RESTful:
- Regístrese para obtener una cuenta de desarrollador gratuita y obtener su clave de API en vivo.
- Vaya a su panel de Claves API para copiar su token Bearer.
- Envíe una solicitud HTTP POST al endpoint
/v1/capturecon su URL de destino.
# Request full-page PNG screenshot
curl -X POST "https://api.prnt.tr/v1/capture" \
-H "Authorization: Bearer prnt_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"url": "https://github.com",
"format": "png",
"full_page": true,
"viewport": { "width": 1920, "height": 1080 }
}' --output screenshot.png
import requests
url = "https://api.prnt.tr/v1/capture"
headers = {
"Authorization": "Bearer prnt_live_your_api_key_here",
"Content-Type": "application/json"
}
payload = {
"url": "https://github.com",
"format": "png",
"full_page": True
}
response = requests.post(url, json=payload, headers=headers)
with open("screenshot.png", "wb") as f:
f.write(response.content)
print("Screenshot saved successfully!")
import fs from 'fs/promises';
const response = await fetch('https://api.prnt.tr/v1/capture', {
method: 'POST',
headers: {
'Authorization': 'Bearer prnt_live_your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://github.com',
format: 'png',
full_page: true
})
});
const buffer = Buffer.from(await response.arrayBuffer());
await fs.writeFile('screenshot.png', buffer);
console.log('Screenshot captured successfully.');
<?php
$apiKey = 'prnt_live_your_api_key_here';
$ch = curl_init('https://api.prnt.tr/v1/capture');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer {$apiKey}",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://github.com',
'format' => 'png',
'full_page' => true
]),
CURLOPT_RETURNTRANSFER => true
]);
$image = curl_exec($ch);
file_put_contents('screenshot.png', $image);
curl_close($ch);
02 Autenticación y Seguridad
PRNT autentica solicitudes de API mediante tokens Bearer criptográficos. Incluya su clave en el encabezado Authorization de cada solicitud:
03 URL Base y Formatos de Contenido
Todos los endpoints de la API se sirven de forma segura a través de TLS 1.3. El punto de entrada de producción es:
PRNT admite múltiples codificaciones de imagen de salida diseñadas para web, impresión y archivo:
| Formato | Tipo MIME | Mejor Caso de Uso |
|---|---|---|
png |
image/png |
Predeterminado. Calidad sin pérdidas, ideal para texto nítido, elementos de interfaz y fondos transparentes. |
jpeg / jpg |
image/jpeg |
Tamaño de archivo optimizado para sitios ricos en fotos con calidad configurable (1-100). |
webp |
image/webp |
Formato web moderno de alta compresión con un tamaño de archivo hasta un 30% menor que JPEG. |
pdf |
application/pdf |
Exportación de documentos vectoriales paginados para facturas, cumplimiento legal e impresión de archivo. |
04 POST /v1/capture
El endpoint programático principal para convertir páginas web en imágenes o documentos de alta resolución.
Parámetros de Solicitud (Cuerpo JSON)
| Parámetro | Tipo | Estado | Descripción y Valor Predeterminado |
|---|---|---|---|
url |
string | OBLIGATORIO | La URL completa de la página web de destino (debe incluir https:// o http://). |
format |
string | OPCIONAL | png (predeterminado), jpeg, webp, o pdf. |
full_page |
boolean | OPCIONAL | Se desplaza automáticamente por elementos DOM diferidos para capturar la altura total. Por defecto es false. |
viewport.width |
integer | OPCIONAL | Ancho de la ventana del navegador en píxeles. Por defecto es 1920. |
viewport.height |
integer | OPCIONAL | Altura de la ventana del navegador en píxeles. Por defecto es 1080. |
delay |
integer | OPCIONAL | Tiempo de espera en milisegundos tras la carga del DOM antes de capturar (0 a 10000ms). Por defecto es 0. |
dark_mode |
boolean | OPCIONAL | Emula consultas de medios CSS prefers-color-scheme: dark. Por defecto es false. |
block_cookie_banners |
boolean | OPCIONAL | Detecta y elimina automáticamente ventanas emergentes intrusivas de consentimiento RGPD/Cookies. Por defecto es true. |
custom_css |
string | OPCIONAL | Inyecte reglas CSS personalizadas antes de la captura (ej. .announcement { display: none; }). |
custom_js |
string | OPCIONAL | Ejecute JavaScript arbitrario del lado del cliente antes de capturar. |
05 Códigos de Estado HTTP y Errores
PRNT devuelve códigos de respuesta HTTP estándar acompañados de cargas útiles de error JSON estructuradas:
| Código HTTP | Constante de Error | Razón y Solución |
|---|---|---|
200 OK |
SUCCESS | Captura de pantalla renderizada con éxito y devuelta como imagen binaria o recurso CDN. |
400 Bad Request |
INVALID_PARAMETER | Falta la URL de destino, dimensiones no válidas o carga útil JSON mal formada. |
401 Unauthorized |
INVALID_API_KEY | Token Bearer de API faltante o revocado en el encabezado de la solicitud. |
403 Forbidden |
DOMAIN_BLOCKED | El dominio de destino solicitado infringe nuestra Política de Uso Aceptable o el firewall SSRF. |
429 Too Many Requests |
RATE_LIMIT_EXCEEDED | Se ha alcanzado la cuota de solicitudes o el límite de concurrencia de su plan. Actualice el plan para escalar. |
504 Gateway Timeout |
RENDER_TIMEOUT | La página web de destino no respondió ni se renderizó dentro de la ventana de ejecución de 30 segundos. |
06 Ejemplos de Código y Bibliotecas SDK
Explore secuencias de comandos de muestra listas para integrar en nuestros SDK oficiales y clientes HTTP:
package main
import (
"bytes"
"encoding/json"
"io"
"net/http"
"os"
)
func main() {
payload, _ := json.Marshal(map[string]interface{}{
"url": "https://github.com",
"format": "png",
"full_page": true,
})
req, _ := http.NewRequest("POST", "https://api.prnt.tr/v1/capture", bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer prnt_live_your_api_key_here")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := os.Create("screenshot.png")
defer out.Close()
io.Copy(out, resp.Body)
}
# pip install prnt-sdk
from prnt import PrntClient
client = PrntClient(api_key="prnt_live_your_api_key_here")
screenshot = client.capture(
url="https://github.com",
format="png",
full_page=True,
dark_mode=True,
delay=500
)
screenshot.save("github_dark.png")
// npm install @prnt/sdk
import { PrntClient } from '@prnt/sdk';
const prnt = new PrntClient({ apiKey: 'prnt_live_your_api_key_here' });
const image = await prnt.capture({
url: 'https://github.com',
format: 'webp',
fullPage: true,
blockCookieBanners: true
});
await image.save('output.webp');