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.
Live: POST /api/v1/merge is deployed. Starter $29/mo • Growth $99/mo • Scale $299/mo.
One credit per operation type. Overages billed per 1k. White-label is flat per domain.
Your domain (CNAME), logo/colors, 20 seats + 5,000 credits. Extra seats $9/mo. Agencies & universities.
| Operation | Credits |
|---|---|
| Merge (any pages) | 1 |
| Split | 2 |
| Compress | 2 |
| Render PDF→JPG per page | 2 |
| OCR per page | 5 |
| Chat per 1k tokens | 10 |
Sign in at Account → API Keys (free users get 100 credits/mo, Pro 500). Click Create key — copy sk_live_... once.
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.
{
"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 }
}
| Code | Meaning |
|---|---|
| 401 | Missing/invalid API key |
| 402 | Quota exceeded — upgrade |
| 400 | Bad base64 or not a PDF (%PDF) |
| 429 | Rate limit 120/min per key |
# 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"}'
supabase-migration-api.sql — teams, api_keys, api_usage + bump_api_usage RPCapi/_shared.mjs — PLAN_CREDITS, CREDIT_COST, generate/verify key, quota helpersapi/keys-create|list|revoke.js — Supabase JWT auth, 5 keys maxapi/v1/merge.js — pdf-lib server merge, 1 credit, quota 402, rate 120/mindocs/api.html — this page/api/keys-create + /api/v1/merge with 2 small PDFstools/account.html API Keys tab (list/create/copy-once/revoke + usage bar) — 1 day/api/v1/split, /compress, /render — copy merge pattern, costs 2 creditspayments with period='api_*' + credits_limit updateAt 10 Starter + 5 Growth + 2 White-label = ~$1,180 MRR, ~$1k net after fees/infra.
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_.
Create a key in 10 seconds. Free 100 credits/mo — no card required. Upgrade when you ship.
Get API key →