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-Type | Tipe gambar hasil screenshot. |
X-Screenshot-Format | Format akhir yang dipakai API. |
X-Screenshot-Trace | ID trace untuk bantu debug di Vercel logs. |
X-RateLimit-Limit | Batas request per window. |
X-RateLimit-Remaining | Sisa request di window aktif. |
X-RateLimit-Reset | Unix timestamp saat window rate limit reset. |
Retry-After | Muncul 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-Afterakan memberi tahu berapa detik harus menunggu. - Implementasi ini ringan dan cocok untuk tahap awal tanpa database eksternal.
Parameter
| Param | Default | Keterangan |
|---|---|---|
url | wajib | URL target. Harus http:// atau https://. |
format | webp | webp, jpeg, atau png. |
quality | 80/82 | Kualitas 10–100 untuk WebP/JPEG. |
width | 1280 | Lebar viewport. |
height | 720 | Tinggi viewport. |
dpr | 1 | Device pixel ratio / scale. |
fullPage | 0 | 1 untuk seluruh halaman. |
mobile | 0 | 1 untuk mode mobile/touch. |
dark | 0 | 1 untuk preferensi dark mode. |
transparent | 0 | 1 untuk background transparan. |
selector | kosong | Screenshot elemen tertentu berdasarkan CSS selector. |
waitUntil | networkidle2 | load, domcontentloaded, networkidle0, networkidle2. |
delay | 500 | Delay tambahan setelah halaman selesai dimuat. |
timeout | 45000 | Timeout maksimum request render. |
failOnStatus | 0 | Jika 1, request gagal saat target memberi HTTP error. |
debug | 0 | Jika 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);
}