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.
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:
- Cadastre-se para obter uma conta de desenvolvedor gratuita e sua chave de API ativa.
- Acesse seu Painel de Chaves de API para copiar seu token Bearer.
- Envie uma solicitação HTTP POST para o endpoint
/v1/capturecom 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:
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 é:
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.
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');