API Docs

Endpoint screenshot website dengan response sukses berupa data gambar langsung. Cocok untuk browser, tag <img>, fetch arraybuffer, atau buffer untuk bot.

Quick Start

GET /api/screenshot?url=https://example.com
Success response: image/webp, image/jpeg, atau image/png sesuai parameter format. Tidak ada bungkus JSON saat sukses.

Contoh cepat

/api/screenshot?url=https%3A%2F%2Fs.chioriya.my.id&format=webp&quality=80&width=1280&height=720&delay=1000&waitUntil=domcontentloaded

Response Headers

Content-TypeTipe gambar hasil screenshot.
X-Screenshot-FormatFormat akhir yang dipakai API.
X-Screenshot-TraceID trace untuk bantu debug di Vercel logs.
X-RateLimit-LimitBatas request per window.
X-RateLimit-RemainingSisa request di window aktif.
X-RateLimit-ResetUnix timestamp saat window rate limit reset.
Retry-AfterMuncul saat status 429.

Rate Limit

Saat ini rate limit aktif: 1 request per IP per 30 detik.
  • Jika terlalu cepat request lagi, API akan membalas 429.
  • Header Retry-After akan memberi tahu berapa detik harus menunggu.
  • Implementasi ini ringan dan cocok untuk tahap awal tanpa database eksternal.

Parameter

ParamDefaultKeterangan
urlwajibURL target. Harus http:// atau https://.
formatwebpwebp, jpeg, atau png.
quality80/82Kualitas 10–100 untuk WebP/JPEG.
width1280Lebar viewport.
height720Tinggi viewport.
dpr1Device pixel ratio / scale.
fullPage01 untuk seluruh halaman.
mobile01 untuk mode mobile/touch.
dark01 untuk preferensi dark mode.
transparent01 untuk background transparan.
selectorkosongScreenshot elemen tertentu berdasarkan CSS selector.
waitUntilnetworkidle2load, domcontentloaded, networkidle0, networkidle2.
delay500Delay tambahan setelah halaman selesai dimuat.
timeout45000Timeout maksimum request render.
failOnStatus0Jika 1, request gagal saat target memberi HTTP error.
debug0Jika 1, saat gagal API mengembalikan JSON error.

Preset yang disarankan

Balanced

format=webp&quality=80&width=1280&height=720&dpr=1

Hemat size / bot

format=jpeg&quality=76&width=1280&height=720&waitUntil=domcontentloaded&delay=800

Kualitas tinggi

format=png&width=1440&height=900&dpr=2

Contoh error

Saat gagal, mode biasa akan menampilkan plain text. Jika ingin detail, tambahkan debug=1.
/api/screenshot?url=https%3A%2F%2Fexample.com&debug=1

Kamu bisa pakai nilai X-Screenshot-Trace untuk mencocokkan error dengan log di Vercel.

Contoh penggunaan

HTML

<img src="/api/screenshot?url=https%3A%2F%2Fexample.com&format=webp&quality=80" alt="preview" />

Node.js (axios)

const axios = require("axios");

async function getScreenshotBuffer(url) {
  const res = await axios.get("https://ssweb.chioriya.my.id/api/screenshot", {
    responseType: "arraybuffer",
    params: {
      url,
      format: "jpeg",
      quality: 76,
      width: 1280,
      height: 720,
      waitUntil: "domcontentloaded",
      delay: 800
    }
  });

  return Buffer.from(res.data);
}