PRNT REST API
التوثيق ومجموعات التطوير SDK

ادمج التقاط الويب البرمجي في تطبيقاتك خلال دقائق. تصميم RESTful، استجابات JSON، وخطافات ويب موقعة بـ HMAC.

REST API v1.0
استجابة فائقة السرعة بأقل من 42 مللي ثانية
مواصفات OpenAPI 3.0
5 حزم SDK جاهزة

معالجة في أقل من 50 مللي ثانية

خوادم Chromium جاهزة ومسخنة مسبقاً عبر 12 عقدة طرفية عالمية مع تخزين CDN فوري للطلبات المتكررة.

بنية DOM مطابقة تماماً للبكسل

تنفيذ كامل لجافا سكريبت، إطارات WebGL، تمرير لانهائي، مضاعفات Retina، وإغلاق تلقائي لإشعارات ملفات تعريف الارتباط.

أمان وحماية معززة

حماية آلية من SSRF، حاويات Docker معزولة أحادية الاستخدام، عدم حفظ ملفات تعريف الارتباط للهدف، وتشفير TLS 1.3 256-bit.

مكتبات SDK متعددة اللغات

مكتبات برمجية ونماذج جاهزة للنسخ بلغات cURL وPython وNode.js وPHP وGo مع معلمات محددة النوع.

01 دليل البدء السريع

أرسل أول طلب لقطة شاشة برمجي في أقل من 60 ثانية باستخدام واجهة RESTful API الخاصة بنا:

  1. سجل للحصول على حساب مطور مجاني للحصول على مفتاح API الفعلي.
  2. انتقل إلى لوحة تحكم مفاتيح API لنسخ رمز Bearer الخاص بك.
  3. أرسل طلب HTTP POST إلى نقطة النهاية /v1/capture مع رابط الموقع المطلوب.
# 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 السرية في كود JavaScript للعميل أو مستودعات GitHub أو حزم الواجهة الأمامية. أرسل الطلبات دائماً عبر خدمة الواجهة الخلفية.

03 الرابط الأساسي وتنسيقات المحتوى

تُقدم جميع نقاط نهاية 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)

المعلمة النوع الحالة الوصف والقيمة الافتراضية
url string مطلوب الرابط الكامل لصفحة الويب المستهدفة (يجب أن يبدأ بـ 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 إلى 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 رابط الموقع مفقود، أو الأبعاد غير صالحة، أو بنية JSON غير صحيحة.
401 Unauthorized INVALID_API_KEY رمز Bearer مفقود أو تم إلغاؤه في ترويسة الطلب.
403 Forbidden DOMAIN_BLOCKED النطاق المطلوب ينتهك سياسة الاستخدام المقبول أو تم حظره بواسطة جدار حماية SSRF.
429 Too Many Requests RATE_LIMIT_EXCEEDED تم الوصول إلى الحد الأقصى لطلبات خطتك أو سعة التزامن. قم بترقية خطتك للمتابعة.
504 Gateway Timeout RENDER_TIMEOUT فشلت الصفحة المستهدفة في الاستجابة أو العرض خلال المهلة المحددة بـ 30 ثانية.

06 أمثلة كود ومكتبات 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');