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.
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 :
- Inscrivez-vous pour obtenir un compte développeur gratuit et récupérer votre clé API en direct.
- Accédez à votre tableau de bord des clés API pour copier votre jeton Bearer.
- Envoyez une requête HTTP POST au point de terminaison
/v1/captureavec 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 :
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 :
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.
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');