SnapPDFSnapPDF
quickstart

10 minutes to first request

1 · Create an API key

Sign up at snappdf.au/signup. On the dashboard, click Keys → Create. Copy the key — it starts with sk_live_ or sk_test_ and is shown only once.

2 · Install a SDK

# JavaScript / TypeScript
npm install @snappdf/sdk

# Python
pip install snappdf

# PHP
composer require snappdf/sdk

# Ruby
gem install snappdf

# Go
go get github.com/snappdf/snappdf-go

3 · Make your first call

Merge two PDFs in every supported language:

// JavaScript
import { SnapPdf } from '@snappdf/sdk';
import fs from 'node:fs';

const snap = new SnapPdf({ apiKey: process.env.SNAPPDF_API_KEY! });
const { pdf } = await snap.pdf.merge({
  files: [fs.readFileSync('a.pdf'), fs.readFileSync('b.pdf')],
});
fs.writeFileSync('out.pdf', pdf);
# Python
from snappdf import SnapPdf

snap = SnapPdf(api_key=os.environ["SNAPPDF_API_KEY"])
r = snap.pdf.merge(files=[open("a.pdf", "rb").read(), open("b.pdf", "rb").read()])
open("out.pdf", "wb").write(r["pdf"])
// Go
client := snappdf.NewClient(os.Getenv("SNAPPDF_API_KEY"))
a, _ := os.ReadFile("a.pdf")
b, _ := os.ReadFile("b.pdf")
r, _ := client.Merge(ctx, &snappdf.MergeInput{Files: [][]byte{a, b}})
os.WriteFile("out.pdf", r.PDF, 0644)

4 · Handle errors

Every error is a typed subclass of SnapPdfError. Retry on RateLimitError, surface ValidationError to your user.

5 · Wire up webhooks (optional)

Subscribe to usage.limit_reached and billing.payment_failed so your ops team gets pinged before customers feel pain. Webhooks guide →

Next steps