PRNT REST API
Документация и SDK

Интегрируйте программный захват веб-страниц за считанные минуты. Архитектура RESTful, ответы в JSON и подписанные вебхуки HMAC.

REST API v1.0
Задержка менее 42 мс
Спецификация OpenAPI 3.0
Готово 5 SDK

Рендеринг менее 50 мс

Предварительно прогретые экземпляры Chromium на 12 глобальных узлах Edge с мгновенным кэшированием CDN.

Пиксельно точный DOM

Полная гидратация JS, WebGL, бесконечная прокрутка, масштабирование Retina и автоматическое закрытие баннеров куки.

Усиленная безопасность

Автоматическая защита от SSRF, изолированные одноразовые контейнеры Docker, нулевое сохранение куки и 256-битный TLS 1.3.

Мультиязычные SDK

Библиотеки и готовые примеры на cURL, Python, Node.js, PHP и Go с типизированными параметрами.

01 Быстрый Старт

Отправьте свой первый программный запрос на снимок экрана менее чем за 60 секунд с помощью нашего RESTful API:

  1. Зарегистрируйте бесплатный аккаунт разработчика, чтобы получить рабочий API-ключ.
  2. Перейдите в панель ключей API, чтобы скопировать токен Bearer.
  3. Отправьте запрос HTTP POST на эндпоинт /v1/capture с целевым URL-адресом.
# 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 аутентифицирует запросы API с помощью токенов Bearer. Добавляйте свой ключ в заголовок Authorization каждого запроса:

HEADER Authorization: Bearer <YOUR_API_KEY>
Рекомендация по безопасности: Никогда не раскрывайте секретные ключи API в клиентском коде, репозиториях GitHub или бандлах. Всегда отправляйте запросы через бэкенд.

03 Базовый URL и форматы контента

Все эндпоинты API безопасно обслуживаются через TLS 1.3. Рабочая точка входа:

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

PRNT поддерживает несколько форматов вывода, адаптированных для веба, печати и архивирования:

Формат MIME-тип Оптимальное применение
png image/png По умолчанию. Качество без потерь, идеально для четкого текста, элементов интерфейса и прозрачного фона.
jpeg / jpg image/jpeg Оптимальный размер файла для сайтов с обилием фото с настраиваемым качеством quality (1-100).
webp image/webp Современный веб-формат с высокой степенью сжатия и размером файлов до 30% меньше, чем JPEG.
pdf application/pdf Многостраничный векторный экспорт документов для счетов, юридических документов и архивной печати.

04 POST /v1/capture

Основной эндпоинт для преобразования веб-страниц в изображения высокого разрешения или документы.

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

Параметры запроса (JSON Body)

Параметр Тип Статус Описание и значение по умолчанию
url string ОБЯЗАТЕЛЬНО Полный URL-адрес целевой страницы (должен содержать https:// или http://).
format string НЕОБЯЗАТЕЛЬНО png (по умолчанию), jpeg, webp, или pdf.
full_page boolean НЕОБЯЗАТЕЛЬНО Автоматически прокручивает страницу для загрузки отложенных элементов. По умолчанию: false.
viewport.width integer НЕОБЯЗАТЕЛЬНО Ширина окна браузера в пикселях. По умолчанию: 1920.
viewport.height integer НЕОБЯЗАТЕЛЬНО Высота окна браузера в пикселях. По умолчанию: 1080.
delay integer НЕОБЯЗАТЕЛЬНО Время ожидания в мс после загрузки DOM перед снимком (0 – 10000 мс). По умолчанию: 0.
dark_mode boolean НЕОБЯЗАТЕЛЬНО Эмулирует медиазапросы CSS prefers-color-scheme: dark. По умолчанию: false.
block_cookie_banners boolean НЕОБЯЗАТЕЛЬНО Автоматически обнаруживает и скрывает навязчивые баннеры GDPR и куки. По умолчанию: true.
custom_css string НЕОБЯЗАТЕЛЬНО Внедрение пользовательских правил CSS перед снимком (например, .announcement { display: none; }).
custom_js string НЕОБЯЗАТЕЛЬНО Выполнение произвольного клиентского JavaScript-кода перед снимком.

05 Коды состояния HTTP и ошибки

PRNT возвращает стандартные коды HTTP со структурированными ошибками в формате JSON:

Код 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 Целевая страница не ответила или не отрендерилась в течение 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');