Screenshots, QR codes, link shortening, OG images, and more. No signup required. Start with a single HTTP request.
Capture pixel-perfect screenshots and PDFs of any webpage. Full-page, custom viewport, wait for elements, mobile emulation.
Generate QR codes in PNG or SVG format. Customizable size, colors, error correction. Base64 output available.
Shorten URLs with custom aliases. Click tracking, analytics, and API access. Perfect for marketing campaigns.
Generate beautiful Open Graph images for social media previews. Multiple themes, patterns, custom colors. Just a URL.
Generate professional PDF invoices via API. Supports Icelandic kennitala, automatic VAT calculation, beautiful templates.
Copy and paste into your terminal. No signup, no API key.
# Screenshot a webpage
curl "https://api.pandan.is/v1/screenshot?url=https://github.com&format=png" -o screenshot.png
# Generate a QR code
curl "https://qr.pandan.is/v1/qr?data=https://mysite.com&size=400" -o qr.png
# Shorten a URL
curl -X POST https://s.pandan.is/v1/shorten \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/very/long/url"}'
# Generate an OG image
curl "https://og.pandan.is/v1/og?title=My+Blog&subtitle=Welcome" -o og.png
import requests
# Screenshot
r = requests.get("https://api.pandan.is/v1/screenshot", params={
"url": "https://github.com",
"format": "png",
"width": 1280
})
with open("screenshot.png", "wb") as f:
f.write(r.content)
# QR Code
r = requests.get("https://qr.pandan.is/v1/qr", params={
"data": "https://mysite.com",
"size": 400,
"format": "png"
})
with open("qr.png", "wb") as f:
f.write(r.content)
# Shorten URL
r = requests.post("https://s.pandan.is/v1/shorten", json={
"url": "https://example.com/very/long/url"
})
print(r.json()["short_url"])
// Screenshot
const res = await fetch(
"https://api.pandan.is/v1/screenshot?url=https://github.com&format=png"
);
const buf = Buffer.from(await res.arrayBuffer());
require("fs").writeFileSync("screenshot.png", buf);
// QR Code
const qr = await fetch(
"https://qr.pandan.is/v1/qr?data=hello&size=300&format=svg"
);
console.log(await qr.text()); // SVG string
// Shorten URL
const short = await fetch("https://s.pandan.is/v1/shorten", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://example.com/long" })
});
console.log(await short.json());
package main
import (
"io"
"net/http"
"os"
)
func main() {
// Screenshot
resp, _ := http.Get(
"https://api.pandan.is/v1/screenshot?url=https://github.com&format=png",
)
defer resp.Body.Close()
f, _ := os.Create("screenshot.png")
io.Copy(f, resp.Body)
f.Close()
}
Start free. Scale when you need to.
Join the waitlist. We'll email you when paid plans go live.
Import our APIs into your favorite tools