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.

API REST v1.0
Latencia inferior a 42ms
Especificación OpenAPI 3.0
5 SDKs Listos

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:

  1. Regístrese para obtener una cuenta de desarrollador gratuita y obtener su clave de API en vivo.
  2. Vaya a su panel de Claves API para copiar su token Bearer.
  3. Envíe una solicitud HTTP POST al endpoint /v1/capture con 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:

HEADER Authorization: Bearer <YOUR_API_KEY>
Mejor Práctica de Seguridad: Nunca exponga claves de API secretas en JavaScript público del lado del cliente, repositorios de GitHub o paquetes de frontend. Envíe siempre las solicitudes a través de su servicio backend.

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:

HTTPS https://api.prnt.tr/v1

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.

POST https://api.prnt.tr/v1/capture

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');