PRNT REST API
Dokumentation & SDKs

Integrieren Sie programmatische Weberfassung in wenigen Minuten in Ihre Anwendungen. RESTful-Design, JSON-Antworten und signierte HMAC-Webhooks.

REST API v1.0
Latenz unter 42ms
OpenAPI 3.0 Spezifikation
5 SDKs bereit

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:

  1. Registrieren Sie sich für ein kostenloses Entwicklerkonto, um Ihren Live-API-Schlüssel zu erhalten.
  2. Navigieren Sie zu Ihrem API-Schlüssel-Dashboard, um Ihr Bearer-Token zu kopieren.
  3. 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:

HEADER Authorization: Bearer <YOUR_API_KEY>
Sicherheits-Best-Practice: Geben Sie geheime API-Schlüssel niemals in öffentlichem clientseitigem JavaScript, GitHub-Repositories oder Frontend-Bundles preis. Senden Sie Anfragen immer über Ihren Backend-Dienst.

03 Basis-URL & Inhaltsformate

Alle API-Endpunkte werden sicher über TLS 1.3 bereitgestellt. Der Produktions-Einstiegspunkt ist:

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

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.

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

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