PRNT REST API
Documentação e SDKs

Integre captura web programática em seus aplicativos em minutos. Design RESTful, respostas JSON e webhooks assinados com HMAC.

API REST v1.0
Latência inferior a 42ms
Especificação OpenAPI 3.0
5 SDKs Prontos

Renderização abaixo de 50ms

Instâncias pré-aquecidas do Chromium em 12 nós de borda globais com cache CDN instantâneo para solicitações repetidas.

DOM Perfeito ao Pixel

Hidratação completa de JavaScript, frames WebGL, rolagem infinita, multiplicadores Retina e fechamento automático de avisos de cookies.

Segurança Reforçada

Proteção automatizada contra SSRF, sandboxes Docker isoladas de uso único, zero persistência de cookies de destino e TLS 1.3 de 256 bits.

SDKs Multilíngues

Bibliotecas idiomáticas e exemplos prontos para copiar e colar em cURL, Python, Node.js, PHP e Go com parâmetros tipados.

01 Guia de Início Rápido

Faça sua primeira solicitação programática de captura de tela em menos de 60 segundos com nossa API RESTful:

  1. Cadastre-se para obter uma conta de desenvolvedor gratuita e sua chave de API ativa.
  2. Acesse seu Painel de Chaves de API para copiar seu token Bearer.
  3. Envie uma solicitação HTTP POST para o endpoint /v1/capture com a 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 Autenticação e Segurança

O PRNT autentica solicitações de API por meio de tokens Bearer criptográficos. Inclua sua chave no cabeçalho Authorization de cada solicitação:

HEADER Authorization: Bearer <YOUR_API_KEY>
Melhor Prática de Segurança: Nunca exponha chaves secretas de API no JavaScript do lado do cliente público, repositórios GitHub ou pacotes de front-end. Sempre envie solicitações por meio do seu serviço de back-end.

03 URL Base e Formatos de Conteúdo

Todos os endpoints da API são fornecidos com segurança por meio de TLS 1.3. O ponto de entrada de produção é:

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

O PRNT suporta várias codificações de imagem de saída adaptadas para web, impressão e arquivamento:

Formato Tipo MIME Melhor Caso de Uso
png image/png Padrão. Qualidade sem perdas, perfeita para texto nítido, elementos de interface e fundos transparentes.
jpeg / jpg image/jpeg Tamanho de arquivo otimizado para sites com muitas fotos com qualidade configurável (1-100).
webp image/webp Formato web moderno de alta compressão com tamanho de arquivo até 30% menor que JPEG.
pdf application/pdf Exportação de documento vetorial paginado para faturas, conformidade legal e impressão de arquivo.

04 POST /v1/capture

O principal endpoint programático para renderizar páginas da web em imagens ou documentos de alta resolução.

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

Parâmetros de Solicitação (Corpo JSON)

Parâmetro Tipo Status Descrição e Padrão
url string OBRIGATÓRIO A URL completa da página web de destino (deve incluir https:// ou http://).
format string OPCIONAL png (padrão), jpeg, webp, ou pdf.
full_page boolean OPCIONAL Rola automaticamente pelos elementos DOM adiados para capturar a altura total. O padrão é false.
viewport.width integer OPCIONAL Largura da janela do navegador em pixels. O padrão é 1920.
viewport.height integer OPCIONAL Altura da janela do navegador em pixels. O padrão é 1080.
delay integer OPCIONAL Tempo de espera em milissegundos após o carregamento do DOM antes da captura (0 a 10.000 ms). O padrão é 0.
dark_mode boolean OPCIONAL Emula consultas de mídia CSS prefers-color-scheme: dark. O padrão é false.
block_cookie_banners boolean OPCIONAL Detecta e remove automaticamente pop-ups intrusivos de consentimento de cookies/GDPR. O padrão é true.
custom_css string OPCIONAL Injete regras CSS personalizadas antes da captura (ex.: .announcement { display: none; }).
custom_js string OPCIONAL Execute JavaScript arbitrário do lado do cliente antes da captura.

05 Códigos de Status HTTP e Erros

O PRNT retorna códigos de resposta HTTP padrão acompanhados de cargas estruturadas de erro em JSON:

Código HTTP Constante de Erro Motivo e Resolução
200 OK SUCCESS Captura de tela renderizada com sucesso e retornada como imagem binária ou ativo CDN.
400 Bad Request INVALID_PARAMETER URL de destino ausente, dimensões inválidas ou corpo JSON malformado.
401 Unauthorized INVALID_API_KEY Token Bearer de API ausente ou revogado no cabeçalho da solicitação.
403 Forbidden DOMAIN_BLOCKED O domínio de destino solicitado viola nossa Política de Uso Aceitável ou o firewall SSRF.
429 Too Many Requests RATE_LIMIT_EXCEEDED A cota de solicitações ou o limite de concorrência do seu plano foi atingido. Atualize seu plano para escalar.
504 Gateway Timeout RENDER_TIMEOUT A página de destino não respondeu ou não pôde ser renderizada dentro da janela de execução de 30 segundos.

06 Exemplos de Código e Bibliotecas SDK

Explore scripts de exemplo prontos para integração com nossos SDKs e clientes HTTP oficiais:

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