PRNT REST API
Documentation & SDKs

Intégrez la capture web programmatique dans vos applications en quelques minutes. Architecture RESTful, réponses JSON et webhooks signés HMAC.

API REST v1.0
Latence inférieure à 42ms
Spécification OpenAPI 3.0
5 SDK Disponibles

Rendu inférieur à 50ms

Instances Chromium préchauffées sur 12 nœuds Edge mondiaux avec accès instantané au cache CDN pour les requêtes répétées.

DOM Pixel-Perfect

Hydratation JavaScript complète, WebGL, défilement infini, multiplicateurs Retina et fermeture automatique des bannières de cookies.

Sécurité Renforcée

Protection SSRF automatisée, conteneurs Docker à usage unique isolés, aucune persistance de cookies cibles et TLS 1.3 256 bits.

SDK Multilingues

Bibliothèques idiomatiques et exemples prêts à l'emploi en cURL, Python, Node.js, PHP et Go avec paramètres typés.

01 Guide de démarrage rapide

Effectuez votre toute première requête de capture d'écran programmatique en moins de 60 secondes avec notre API RESTful :

  1. Inscrivez-vous pour obtenir un compte développeur gratuit et récupérer votre clé API en direct.
  2. Accédez à votre tableau de bord des clés API pour copier votre jeton Bearer.
  3. Envoyez une requête HTTP POST au point de terminaison /v1/capture avec votre URL cible.
# 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 Authentification & Sécurité

PRNT authentifie les requêtes API via des jetons cryptographiques Bearer. Incluez votre clé dans l'en-tête Authorization de chaque requête :

HEADER Authorization: Bearer <YOUR_API_KEY>
Bonne Pratique de Sécurité : N'exposez jamais de clés API secrètes dans le JavaScript côté client public, sur GitHub ou dans vos bundles frontend. Envoyez toujours vos requêtes via votre service backend.

03 URL de Base & Formats de Contenu

Tous les points de terminaison API sont servis de manière sécurisée via TLS 1.3. L'URL d'entrée en production est :

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

PRNT prend en charge plusieurs formats d'image adaptés au web, à l'impression et à l'archivage :

Format Type MIME Meilleur Cas d'Utilisation
png image/png Par défaut. Qualité sans perte, idéal pour le texte net, les éléments d'interface et les arrière-plans transparents.
jpeg / jpg image/jpeg Taille de fichier optimisée pour les sites riches en photos avec qualité configurable (1-100).
webp image/webp Format web moderne à haute compression avec une taille de fichier jusqu'à 30% inférieure au JPEG.
pdf application/pdf Export de document vectoriel paginé pour factures, conformité légale et impression d'archivage.

04 POST /v1/capture

Le point de terminaison principal pour convertir des pages web en images ou documents haute résolution.

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

Paramètres de Requête (Corps JSON)

Paramètre Type Statut Description & Valeur par Défaut
url string REQUIS L'URL complète de la page web cible (doit inclure https:// ou http://).
format string FACULTATIF png (par défaut), jpeg, webp, ou pdf.
full_page boolean FACULTATIF Fait défiler automatiquement les éléments DOM différés pour capturer toute la hauteur. Par défaut : false.
viewport.width integer FACULTATIF Largeur de la fenêtre du navigateur en pixels. Par défaut : 1920.
viewport.height integer FACULTATIF Hauteur de la fenêtre du navigateur en pixels. Par défaut : 1080.
delay integer FACULTATIF Délai d'attente en millisecondes après le chargement du DOM avant la capture (0 à 10 000 ms). Par défaut : 0.
dark_mode boolean FACULTATIF Émule les requêtes média CSS prefers-color-scheme: dark. Par défaut : false.
block_cookie_banners boolean FACULTATIF Détecte et supprime automatiquement les popups intrusifs de consentement RGPD/Cookies. Par défaut : true.
custom_css string FACULTATIF Injectez des règles CSS personnalisées avant la capture (ex. : .announcement { display: none; }).
custom_js string FACULTATIF Exécutez du code JavaScript côté client arbitraire avant la capture.

05 Codes d'État HTTP & Erreurs

PRNT renvoie des codes de réponse HTTP standard accompagnés de données d'erreur JSON structurées :

Code HTTP Constante d'Erreur Raison & Solution
200 OK SUCCESS Capture d'écran rendue avec succès et renvoyée sous forme d'image binaire ou de ressource CDN.
400 Bad Request INVALID_PARAMETER URL cible manquante, dimensions non valides ou charge utile JSON mal formée.
401 Unauthorized INVALID_API_KEY Jeton Bearer API manquant ou révoqué dans l'en-tête de requête.
403 Forbidden DOMAIN_BLOCKED Le domaine cible demandé enfreint notre politique d'utilisation acceptable ou le pare-feu SSRF.
429 Too Many Requests RATE_LIMIT_EXCEEDED Le quota de requêtes ou la limite de concurrence de votre forfait est atteint. Mettez à niveau votre forfait.
504 Gateway Timeout RENDER_TIMEOUT La page web cible n'a pas répondu ou n'a pas pu être rendue dans le délai d'exécution de 30 secondes.

06 Exemples de Code & Bibliothèques SDK

Découvrez des exemples de scripts prêts à intégrer pour nos SDK officiels et clients 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');