PRNT REST API
ドキュメント&SDK

わずか数分でアプリケーションに自動Webキャプチャを統合。RESTful設計、JSONレスポンス、HMAC署名付きWebhook。

REST API v1.0
42ms未満の超低遅延
OpenAPI 3.0 仕様準拠
5種類のSDK対応

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秒未満で最初の自動キャプチャリクエストを送信できます:

  1. 無料の開発者アカウントに登録して本番APIキーを取得します。
  2. APIキーダッシュボードに移動してBearerトークンをコピーします。
  3. 対象の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ヘッダーにキーを含めてください:

HEADER Authorization: Bearer <YOUR_API_KEY>
セキュリティのベストプラクティス: APIキーを公開クライアントサイドJavaScript、GitHubリポジトリ、フロントエンドバンドルで絶対に公開しないでください。常にバックエンド経由でリクエストをディスパッチしてください。

03 ベースURLと出力フォーマット

すべてのAPIエンドポイントはTLS 1.3でセキュアに配信されます。本番エントリポイント:

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

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ページを高解像度画像またはドキュメントに変換するメインエンドポイント。

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

リクエストパラメータ(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');