PRNT REST API
ドキュメント&SDK
わずか数分でアプリケーションに自動Webキャプチャを統合。RESTful設計、JSONレスポンス、HMAC署名付きWebhook。
50ms未満の高速描画
世界12のエッジノードに配置されたプリウォーム済みChromiumインスタンスとCDNキャッシュ即時ヒット。
ピクセルパーフェクトなDOM描画
完全なJavaScript実行、WebGLフレーム、無限スクロール、Retina拡大縮小、Cookieバナーの自動非表示。
強固なセキュリティ
自動SSRF保護、使い捨て隔離Dockerサンドボックス、ターゲットCookie非保持、256ビットTLS 1.3暗号化。
多言語SDK対応
型付きパラメータを備えたcURL、Python、Node.js、PHP、Go向けの公式ライブラリとサンプルコード。
01 クイックスタートガイド
RESTful APIを使用して、60秒未満で最初の自動キャプチャリクエストを送信できます:
- 無料の開発者アカウントに登録して本番APIキーを取得します。
- APIキーダッシュボードに移動してBearerトークンをコピーします。
- 対象のURLを指定して
/v1/captureエンドポイントにHTTP POSTリクエストを送信します。
# 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 認証とセキュリティ
PRNTはBearerトークンによってAPIリクエストを認証します。すべてのリクエストのAuthorizationヘッダーにキーを含めてください:
03 ベースURLと出力フォーマット
すべてのAPIエンドポイントはTLS 1.3でセキュアに配信されます。本番エントリポイント:
PRNTはWeb、印刷、アーカイブ向けに最適化された複数の出力フォーマットをサポートしています:
| 形式 | MIMEタイプ | 最適な用途 |
|---|---|---|
png |
image/png |
デフォルト。鮮明なテキスト、UI要素、透明背景に最適な可逆品質。 |
jpeg / jpg |
image/jpeg |
画像重視のサイト向けに最適化されたファイルサイズ(quality 1〜100で調整可能)。 |
webp |
image/webp |
JPEGより最大30%ファイルサイズを削減できる最新の高圧縮Web形式。 |
pdf |
application/pdf |
請求書、法的コンプライアンス、保存印刷用のページ分けされたベクタードキュメント出力。 |
04 POST /v1/capture
Webページを高解像度画像またはドキュメントに変換するメインエンドポイント。
リクエストパラメータ(JSONボディ)
| パラメータ | 型 | 必須/任意 | 説明とデフォルト値 |
|---|---|---|---|
url |
string | 必須 | キャプチャ対象の完全なWebページURL(https://またはhttp://を含む必要があります)。 |
format |
string | 任意 | png (デフォルト), jpeg, webp, または pdf. |
full_page |
boolean | 任意 | 遅延DOM要素を自動スクロールしてページ全体の高さを取得します。デフォルトはfalseです。 |
viewport.width |
integer | 任意 | ブラウザウィンドウの幅(ピクセル)。デフォルトは1920です。 |
viewport.height |
integer | 任意 | ブラウザウィンドウの高さ(ピクセル)。デフォルトは1080です。 |
delay |
integer | 任意 | DOMロード完了後、撮影までの待機時間(ミリ秒、0〜10000ms)。デフォルトは0です。 |
dark_mode |
boolean | 任意 | prefers-color-scheme: darkメディアクエリをエミュレートします。デフォルトはfalseです。 |
block_cookie_banners |
boolean | 任意 | 不要なGDPR/Cookie同意ポップアップを自動検出して非表示にします。デフォルトはtrueです。 |
custom_css |
string | 任意 | 撮影前にカスタムCSSルールを挿入します(例: .announcement { display: none; })。 |
custom_js |
string | 任意 | 撮影前に任意のクライアントサイドJavaScriptを実行します。 |
05 HTTPステータスコードとエラー
PRNTは構造化されたJSONエラー本文とともに標準のHTTPステータスコードを返します:
| HTTPコード | エラー定数 | 理由と解決方法 |
|---|---|---|
200 OK |
SUCCESS | スクリーンショットが正常に生成され、バイナリ画像またはCDNアセットとして返されました。 |
400 Bad Request |
INVALID_PARAMETER | 対象URLの欠落、無効な解像度、またはJSONフォーマットの不正。 |
401 Unauthorized |
INVALID_API_KEY | リクエストヘッダーのAPI Bearerトークンが欠落または無効化されています。 |
403 Forbidden |
DOMAIN_BLOCKED | 指定された対象ドメインが利用規約に違反しているか、SSRFファイアウォールでブロックされています。 |
429 Too Many Requests |
RATE_LIMIT_EXCEEDED | プランのリクエストクォータまたは並行処理制限に達しました。プランをアップグレードしてください。 |
504 Gateway Timeout |
RENDER_TIMEOUT | 対象Webページが30秒の実行制限時間内に応答または描画を完了できませんでした。 |
06 SDKコードサンプルとライブラリ
公式SDKと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');