PRNT REST API
Dokumentation & SDKs
Integrieren Sie programmatische Weberfassung in wenigen Minuten in Ihre Anwendungen. RESTful-Design, JSON-Antworten und signierte HMAC-Webhooks.
Rendering unter 50ms
Vorgewärmte Chromium-Instanzen an 12 globalen Edge-Knoten mit sofortigen CDN-Cache-Treffern bei wiederholten Anfragen.
Pixelgenaues DOM
Vollständige JavaScript-Hydratisierung, WebGL-Frames, endloses Scrollen, Retina-Skalierung und automatisches Schließen von Cookie-Bannern.
Gehärtete Sicherheit
Automatischer SSRF-Schutz, isolierte Einweg-Docker-Sandboxes, keine Ziel-Cookie-Persistenz und 256-Bit TLS 1.3.
Mehrsprachige SDKs
Idiomatische Bibliotheken und einsatzbereite Beispiele in cURL, Python, Node.js, PHP und Go mit typisierten Parametern.
01 Schnellstartanleitung
Senden Sie in weniger als 60 Sekunden Ihre erste programmatische Screenshot-Anfrage mit unserer RESTful API:
- Registrieren Sie sich für ein kostenloses Entwicklerkonto, um Ihren Live-API-Schlüssel zu erhalten.
- Navigieren Sie zu Ihrem API-Schlüssel-Dashboard, um Ihr Bearer-Token zu kopieren.
- Senden Sie eine HTTP-POST-Anfrage mit Ihrer Ziel-URL an den Endpunkt
/v1/capture.
# 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 Authentifizierung & Sicherheit
PRNT authentifiziert API-Anfragen über kryptografische Bearer-Token. Fügen Sie Ihren Schlüssel im Authorization-Header jeder Anfrage ein:
03 Basis-URL & Inhaltsformate
Alle API-Endpunkte werden sicher über TLS 1.3 bereitgestellt. Der Produktions-Einstiegspunkt ist:
PRNT unterstützt mehrere Ausgabebildkodierungen, die auf Web, Druck und Archivierung zugeschnitten sind:
| Format | MIME-Typ | Bester Anwendungsfall |
|---|---|---|
png |
image/png |
Standard. Verlustfreie Qualität, perfekt für scharfen Text, UI-Elemente und transparente Hintergründe. |
jpeg / jpg |
image/jpeg |
Optimierte Dateigröße für fotolastige Websites mit konfigurierbarer Qualität (1-100). |
webp |
image/webp |
Modernes Webformat mit hoher Komprimierung und bis zu 30% kleinerer Dateigröße als JPEG. |
pdf |
application/pdf |
Paginierter Vektordokumentexport für Rechnungen, rechtliche Compliance und Archivdruck. |
04 POST /v1/capture
Der zentrale programmatische Endpunkt zum Rendern von Webseiten in hochauflösende Bilder oder Dokumente.
Anfrageparameter (JSON-Body)
| Parameter | Typ | Status | Beschreibung & Standard |
|---|---|---|---|
url |
string | ERFORDERLICH | Die vollqualifizierte Ziel-Webseiten-URL (muss https:// oder http:// enthalten). |
format |
string | OPTIONAL | png (Standard), jpeg, webp, oder pdf. |
full_page |
boolean | OPTIONAL | Scrollt automatisch durch Lazy-DOM-Elemente, um die volle Seitenhöhe zu erfassen. Standard ist false. |
viewport.width |
integer | OPTIONAL | Browserfensterbreite in Pixeln. Standard ist 1920. |
viewport.height |
integer | OPTIONAL | Browserfensterhöhe in Pixeln. Standard ist 1080. |
delay |
integer | OPTIONAL | Wartezeit in Millisekunden nach dem DOM-Laden vor der Aufnahme (0 – 10000ms). Standard ist 0. |
dark_mode |
boolean | OPTIONAL | Emuliert prefers-color-scheme: dark CSS-Media-Queries. Standard ist false. |
block_cookie_banners |
boolean | OPTIONAL | Erkennt und entfernt störende DSGVO- / Cookie-Zustimmungs-Popups automatisch. Standard ist true. |
custom_css |
string | OPTIONAL | Benutzerdefinierte CSS-Regeln vor der Aufnahme einfügen (z. B. .announcement { display: none; }). |
custom_js |
string | OPTIONAL | Beliebiges clientseitiges JavaScript vor der Erfassung ausführen. |
05 HTTP-Statuscodes & Fehler
PRNT gibt Standard-HTTP-Antwortcodes zusammen mit strukturierten JSON-Fehlernutzlasten zurück:
| HTTP-Code | Fehlerkonstante | Ursache & Lösung |
|---|---|---|
200 OK |
SUCCESS | Screenshot erfolgreich gerendert und als Binärbild oder CDN-Asset zurückgegeben. |
400 Bad Request |
INVALID_PARAMETER | Fehlende Ziel-URL, ungültige Abmessungen oder fehlerhafte JSON-Nutzlast. |
401 Unauthorized |
INVALID_API_KEY | Fehlendes oder widerrufenes API-Bearer-Token im Anfrage-Header. |
403 Forbidden |
DOMAIN_BLOCKED | Die angeforderte Zieldomäne verstößt gegen unsere Nutzungsrichtlinie oder die SSRF-Firewall. |
429 Too Many Requests |
RATE_LIMIT_EXCEEDED | Ihr Tarif-Anforderungskontingent oder Parallelitätslimit wurde erreicht. Upgraden Sie Ihren Tarif zur Skalierung. |
504 Gateway Timeout |
RENDER_TIMEOUT | Die Zielwebseite konnte innerhalb des 30-Sekunden-Ausführungsfensters nicht antworten oder gerendert werden. |
06 SDK-Codebeispiele & Bibliotheken
Entdecken Sie integrationsbereite Beispielskripte für unsere offiziellen SDKs und HTTP-Clients:
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');