PRNT REST API
Belgeler & SDK'lar
Dakikalar içinde uygulamalarınıza programatik web yakalamayı entegre edin. RESTful mimari, JSON yanıtları ve imzalı HMAC webhook'ları.
50ms Altı İşleme
Tekrarlanan istekler için anlık CDN önbelleği ile 12 küresel edge düğümünde önceden ısıtılmış Chromium örnekleri.
Piksel Düzeyinde Kusursuz DOM
Eksiksiz JavaScript hidrasyonu, WebGL kareleri, sonsuz kaydırma, retina ölçek çarpanları ve otomatik çerez afişi kapatma.
Güçlendirilmiş Güvenlik
Otomatik SSRF koruması, tek kullanımlık izole Docker sanal alanları, sıfır hedef çerez kalıcılığı ve 256-bit TLS 1.3.
Çoklu Dil SDK'ları
Tipli parametrelerle cURL, Python, Node.js, PHP ve Go dillerinde hazır kütüphaneler ve kod örnekleri.
01 Hızlı Başlangıç Kılavuzu
RESTful API'miz ile 60 saniyeden kısa sürede ilk programatik ekran görüntüsü isteğinizi gönderin:
- Canlı API anahtarınızı almak için ücretsiz bir geliştirici hesabı oluşturun.
- Bearer belirtecinizi kopyalamak için API Anahtarları Panelinize gidin.
- Hedef URL'niz ile
/v1/captureuç noktasına bir HTTP POST isteği gönderin.
# 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 Kimlik Doğrulama & Güvenlik
PRNT, API isteklerini kriptografik Bearer belirteçleriyle doğrular. Anahtarınızı her isteğin Authorization başlığına ekleyin:
03 Temel URL & İçerik Formatları
Tüm API uç noktaları TLS 1.3 üzerinden güvenli bir şekilde sunulur. Canlı giriş noktası:
PRNT; web, baskı ve arşivleme için uyarlanmış birden fazla çıktı görsel formatını destekler:
| Format | MIME Türü | En Uygun Kullanım Alanı |
|---|---|---|
png |
image/png |
Varsayılan. Kayıpsız kalite; net metinler, UI öğeleri ve şeffaf arka planlar için ideal. |
jpeg / jpg |
image/jpeg |
Yapılandırılabilir kalite (1-100) ayarıyla fotoğraf ağırlıklı web siteleri için optimize edilmiş dosya boyutu. |
webp |
image/webp |
JPEG'den %30'a kadar daha küçük dosya boyutuna sahip modern, yüksek sıkıştırmalı web formatı. |
pdf |
application/pdf |
Faturalar, yasal uyumluluk ve arşiv baskıları için sayfalandırılmış vektör belge çıktısı. |
04 POST /v1/capture
Web sayfalarını yüksek çözünürlüklü görsellere veya belgelere dönüştüren ana programatik uç nokta.
İstek Parametreleri (JSON Gövdesi)
| Parametre | Tür | Durum | Açıklama ve Varsayılan |
|---|---|---|---|
url |
string | ZORUNLU | Tam nitelikli hedef web sayfası URL'si (https:// veya http:// içermelidir). |
format |
string | İSTEĞE BAĞLI | png (varsayılan), jpeg, webp, veya pdf. |
full_page |
boolean | İSTEĞE BAĞLI | Tüm sayfa yüksekliğini yakalamak için geç yüklenen DOM öğelerini otomatik olarak kaydırır. Varsayılan false. |
viewport.width |
integer | İSTEĞE BAĞLI | Piksel cinsinden tarayıcı penceresi genişliği. Varsayılan 1920. |
viewport.height |
integer | İSTEĞE BAĞLI | Piksel cinsinden tarayıcı penceresi yüksekliği. Varsayılan 1080. |
delay |
integer | İSTEĞE BAĞLI | DOM yüklendikten sonra yakalama öncesi milisaniye cinsinden bekleme süresi (0 – 10000ms). Varsayılan 0. |
dark_mode |
boolean | İSTEĞE BAĞLI | prefers-color-scheme: dark CSS medya sorgularını taklit eder. Varsayılan false. |
block_cookie_banners |
boolean | İSTEĞE BAĞLI | Rahatsız edici GDPR / Çerez onay açılır pencerelerini otomatik olarak algılar ve kaldırır. Varsayılan true. |
custom_css |
string | İSTEĞE BAĞLI | Yakalama öncesinde özel CSS kuralları enjekte edin (ör. .announcement { display: none; }). |
custom_js |
string | İSTEĞE BAĞLI | Yakalama öncesinde özel istemci tarafı JavaScript kodu yürütün. |
05 HTTP Durum Kodları & Hatalar
PRNT, yapılandırılmış JSON hata yükleriyle birlikte standart HTTP yanıt kodları döndürür:
| HTTP Kodu | Hata Sabiti | Sebep ve Çözüm |
|---|---|---|
200 OK |
SUCCESS | Ekran görüntüsü başarıyla işlendi ve ikili görsel veya CDN varlığı olarak döndürüldü. |
400 Bad Request |
INVALID_PARAMETER | Eksik hedef URL, geçersiz boyutlar veya hatalı biçimlendirilmiş JSON gövdesi. |
401 Unauthorized |
INVALID_API_KEY | İstek başlığında eksik veya iptal edilmiş API Bearer belirteci. |
403 Forbidden |
DOMAIN_BLOCKED | İstenen hedef alan adı, Kullanım Politikamızı veya SSRF güvenlik duvarımızı ihlal ediyor. |
429 Too Many Requests |
RATE_LIMIT_EXCEEDED | Plan istek kotanıza veya eşzamanlılık sınırınıza ulaşıldı. Yükseltmek için planınızı yükseltin. |
504 Gateway Timeout |
RENDER_TIMEOUT | Hedef web sayfası 30 saniyelik yürütme penceresi içinde yanıt veremedi veya işlenemedi. |
06 SDK Kod Örnekleri & Kütüphaneler
Resmi SDK'larımız ve HTTP istemcilerimiz için entegrasyona hazır örnek kodları inceleyin:
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');