API • Business

PDFLift API — PDFs at scale

Merge, split, compress programmatically. REST + API keys, credits per operation, pay only what you use. Same privacy as the browser tools — no watermarks, no storage.

Get API key — free 100 credits Quickstart ↓

Live: POST /api/v1/merge is deployed. Starter $29/mo • Growth $99/mo • Scale $299/mo.

Pricing — credits, not seats

One credit per operation type. Overages billed per 1k. White-label is flat per domain.

Starter API
$29/mo
2,000 credits • overage $15/1k
  • 2,000 merges or ~1k OCR pages
  • Email support
Growth API — Most popular
$99/mo
10,000 credits • overage $10/1k
  • Best for SaaS & automation
  • Priority support
Scale API
$299/mo
40,000 credits • overage $8/1k
  • High volume • SLA

White-label

$199/domain/mo

Your domain (CNAME), logo/colors, 20 seats + 5,000 credits. Extra seats $9/mo. Agencies & universities.

Credit costs

OperationCredits
Merge (any pages)1
Split2
Compress2
Render PDF→JPG per page2
OCR per page5
Chat per 1k tokens10

Quickstart — merge in 30 seconds

1. Create a key

Sign in at Account → API Keys (free users get 100 credits/mo, Pro 500). Click Create key — copy sk_live_... once.

2. Merge via API

curl -X POST https://pdflift.online/api/v1/merge \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "files": [
      "data:application/pdf;base64,JVBERi0xLjQK...",
      "data:application/pdf;base64,JVBERi0xLjQK..."
    ],
    "filename": "merged.pdf"
  }' | jq -r .dataUrl | cut -d, -f2 | base64 -d > merged.pdf

Send each PDF as base64 (raw or data:application/pdf;base64,). Min 2 files, max 10, 20 MB each, ~15 MB JSON total.

Response

{
  "file": "JVBERi0xLjQK...",
  "filename": "pdflift-merged.pdf",
  "pages": 4,
  "size": 18234,
  "contentType": "application/pdf",
  "dataUrl": "data:application/pdf;base64,JVBE...",
  "quota": { "used": 1, "limit": 100, "remaining": 99, "month": "2026-08", "cost": 1 }
}

Errors

CodeMeaning
401Missing/invalid API key
402Quota exceeded — upgrade
400Bad base64 or not a PDF (%PDF)
429Rate limit 120/min per key

Manage keys

# list
curl -H "Authorization: Bearer <supabase_jwt>" https://pdflift.online/api/keys-list
# revoke
curl -X POST https://pdflift.online/api/keys-revoke \
  -H "Authorization: Bearer <supabase_jwt>" -H "Content-Type: application/json" \
  -d '{"id":"uuid-of-key"}'

Roadmap — what's next

Shipped

  • supabase-migration-api.sql — teams, api_keys, api_usage + bump_api_usage RPC
  • api/_shared.mjs — PLAN_CREDITS, CREDIT_COST, generate/verify key, quota helpers
  • api/keys-create|list|revoke.js — Supabase JWT auth, 5 keys max
  • api/v1/merge.js — pdf-lib server merge, 1 credit, quota 402, rate 120/min
  • docs/api.html — this page

Next to profitability

  1. Apply migration in Supabase → test /api/keys-create + /api/v1/merge with 2 small PDFs
  2. Wire tools/account.html API Keys tab (list/create/copy-once/revoke + usage bar) — 1 day
  3. Add /api/v1/split, /compress, /render — copy merge pattern, costs 2 credits
  4. White-label: CNAME + branding json + team subdomains — $199/mo
  5. Paystack plan for API: extend payments with period='api_*' + credits_limit update

At 10 Starter + 5 Growth + 2 White-label = ~$1,180 MRR, ~$1k net after fees/infra.

How to verify locally

npm install (adds pdf-lib), set SUPABASE_URL etc from Vercel env, run vercel dev, create user at localhost:3000/tools/account.html, curl POST /api/keys-create with Supabase JWT, then curl POST /api/v1/merge with sk_live_.

Ready to build?

Create a key in 10 seconds. Free 100 credits/mo — no card required. Upgrade when you ship.

Get API key →