APIs that just work

Screenshots, QR codes, link shortening, OG images, and more. No signup required. Start with a single HTTP request.

๐Ÿš€ <100ms response ๐Ÿ”‘ No API key needed ๐Ÿ†“ Generous free tier ๐Ÿ“š REST + JSON

Our APIs

FREEMIUM

๐Ÿ“ธ Screenshot API

Capture pixel-perfect screenshots and PDFs of any webpage. Full-page, custom viewport, wait for elements, mobile emulation.

GET https://api.pandan.is/v1/screenshot?url=example.com
FREEMIUM

๐Ÿ“ฑ QR Code API

Generate QR codes in PNG or SVG format. Customizable size, colors, error correction. Base64 output available.

GET https://qr.pandan.is/v1/qr?data=hello&format=png
FREEMIUM

๐Ÿ”— Link Shortener

Shorten URLs with custom aliases. Click tracking, analytics, and API access. Perfect for marketing campaigns.

POST https://s.pandan.is/v1/shorten { "url": "..." }
FREE

๐Ÿ–ผ๏ธ OG Image API

Generate beautiful Open Graph images for social media previews. Multiple themes, patterns, custom colors. Just a URL.

GET https://og.pandan.is/v1/og?title=Hello&subtitle=World
FREEMIUM

๐Ÿงพ Invoice API

Generate professional PDF invoices via API. Supports Icelandic kennitala, automatic VAT calculation, beautiful templates.

POST https://reikningur.pandan.is/v1/invoice
FREE

๐Ÿ’ฑ Currency API

Live exchange rates for 14 currencies with ISK focus. Cached every 4 hours. Simple JSON responses.

GET https://gjaldmidlar.pandan.is/api/rates

Try it right now

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()
}

Simple pricing

Start free. Scale when you need to.

Free

$0/mo
  • 100 screenshots/mo
  • 200 QR codes/mo
  • 50 short links
  • Unlimited OG images
  • No API key needed
Get Started

Business

$49/mo
  • Unlimited screenshots
  • Unlimited QR codes
  • Unlimited short links
  • SLA guarantee
  • Webhook callbacks
  • Priority support
Coming Soon

Get notified when Pro launches

Join the waitlist. We'll email you when paid plans go live.

๐Ÿ“ฆ Developer Resources

Import our APIs into your favorite tools

๐Ÿ“ฎ Postman Collection ๐Ÿ“ธ Screenshot OpenAPI ๐Ÿ”ฒ QR Code OpenAPI ๐Ÿ”— Link Shortener OpenAPI