Changelog
What's new in PDFPipe
Features, fixes, and API changes. Most recent first. Questions or issues: hello@pdfpipe.xyz.
API key expiry, Zapier integration, batch docs, usage CSV export, auto-retry, render presets, and annual pricing
Nine platform updates: new key management controls, a Zapier integration, documented batch endpoint, usage data export, automatic retry on transient failures, render quality presets, named key labels, lifecycle email nudges, and annual billing with a 20% saving.
- feature
API key expiry dates (Growth and above): set an optional expiration date on any API key from the dashboard. Keys return 401 after the expiry timestamp. Useful for rotating credentials on a fixed schedule or granting time-limited access to contractors.
- feature
Zapier integration: generate PDFs directly from Zapier workflows. Pass HTML or a URL as input and connect the PDF output to any downstream Zapier action. Available in the Zapier app directory.
- improvement
Batch rendering docs: the batch endpoint (POST /v1/batch) is now fully documented in the API reference with request and response examples. Available on Growth and above.
- feature
Usage CSV export (Growth and above): download your render history as a CSV from the dashboard. Covers up to 90 days of data. Useful for cost allocation, auditing, or loading into a spreadsheet.
- feature
Auto-retry on transient failure (Growth and above): renders that encounter a transient infrastructure error are automatically retried once. Retried renders do not consume extra quota.
- feature
Render quality presets: pass preset: "invoice", "report", or "screenshot" on any render request to apply a curated set of margin, scale, and print defaults. Removes the need to manually tune options for common document types.
- feature
Named API key labels: give each API key a descriptive label from the dashboard. Labels appear in the key list and in audit log events, making it easier to track which integration a key belongs to.
- improvement
PostHog lifecycle emails: automated activation and conversion nudge emails now fire based on actual usage behavior. New signups receive a targeted sequence rather than a fixed drip. No change to the API.
- feature
Annual pricing: annual billing is now shown by default on the pricing page with a 20% saving over monthly rates. Monthly billing remains available.
New rendering options, PDF merge, compare page improvements + platform fixes
Six new API options, a PDF merge endpoint, overhauled competitor compare pages, real-time status page, and SEO improvements across use-case pages.
- feature
New option: header_html and footer_html. Pass any HTML string to render a running header or footer on every page. Class names .pageNumber, .totalPages, .date, .title, and .url are substituted automatically by the renderer. Margins widen from 1cm to 2cm when using defaults to prevent overlap.
- api
New endpoint: POST /v1/pdf/merge. Merge 2 to 20 PDFs into one document. Sources can be document IDs from your archive, public URLs, or base64-encoded bytes. Requires Starter plan or above. Returns PDF bytes or a stored document link when store: true.
- feature
New option: tabular_nums. When true, injects font-variant-numeric: tabular-nums globally before capture. Fixes inconsistent digit widths in tables and invoices (addresses the class of bug reported in Gotenberg issue #921).
- feature
New option: deduplicate_images. When true, post-processes the rendered PDF with pdf-lib to merge identical image XObjects. A logo appearing on 50 pages is stored once instead of 50 times. Addresses Gotenberg issue #1077.
- feature
New option: pdf_a. When true, adds PDF/A-1b XMP metadata to the document catalog. Best-effort: passes basic validators for simple documents. Response includes a warning noting that full conformance requires tagged document structure and an embedded ICC profile.
- improvement
New option: inject_css extended (existing option, now documented alongside the new options in the API reference).
- improvement
Status page now fetches GET /health on load and reflects real API status. Previously all components were hardcoded as operational regardless of actual system state.
- improvement
Compare pages for Gotenberg and PrinceXML substantially expanded. Gotenberg page now covers five specific named open issues (memory leaks, blank PDF regressions, duplicate image bloat #1077, digit rendering #921, -32000 large file errors) and maps each to the PDFPipe fix. PrinceXML page now covers serverless incompatibility, React/Vue/Angular blank output, and running headers parity.
- improvement
Docs: POST /v1/pdf/merge added to the endpoints table. Five new options (header_html, footer_html, tabular_nums, deduplicate_images, pdf_a) added to the options reference.
- fix
SEO: four use-case pages missing the 2026 year keyword in their title tag corrected (procurement, rental agreements, white-label reports, media kit). Use-cases index page now has an openGraph block.
- improvement
Changelog moved from top navbar to footer only.
- fix
Welcome page now silently retries the API key provisioning call for up to 30 seconds. Previously, if the payment webhook arrived slightly after the redirect, customers saw an error and had to manually refresh.
- fix
Worker: org API CORS headers corrected. Cross-origin requests to the org endpoints now return the right Access-Control-Allow-Origin header.
- fix
Worker: auth audit log events now correctly set resource_id on login and token-verify events.
- improvement
SDK and integration updates: pdfpipe-node@0.2.0 (npm), pdfpipe-python@0.2.0 (PyPI), pdfpipe-mcp-server@0.3.0 (npm), and n8n-nodes-pdfpipe@1.1.0 (npm) all updated with the five new rendering options. The n8n node also fixes a latent bug where format, landscape, margin, and print_background were being sent outside the options object and silently ignored.
Enterprise org and invite system
- feature
Organizations: create an org, invite members by email, and manage roles from the dashboard. Business plan includes up to 5 seats.
- feature
Invite-accept flow: invited users land on /invite/[token], verify their email, and set a password in one step.
- feature
Dashboard: team owners see a sharable invite link and a member list with role badges.
- api
Audit log: org_create, member_add, and member_remove events now recorded with actor and target IDs.
- fix
Worker: orgCreateError now surfaces a user-readable message instead of a raw 500 when org name is already taken.
Comprehensive bug sweep
A sweep across worker and landing that fixed 14 issues found during internal testing.
- fix
Fixed silent failure when html field was an empty string. The endpoint now returns a clear 422 with a descriptive message.
- api
X-PDFPipe-Request-ID is now included on all error responses, not just successful renders. Makes tracing failures easier.
- fix
Demo endpoint rate-limit response was returning 500 on some edge cases. Now always 429 with a Retry-After header.
- fix
Analytics playground_render event was firing before the PDF blob was confirmed, causing a mismatch in render counts.
- fix
Accessibility: added sr-only labels to icon-only buttons in the dashboard, fixed form reset label, and corrected tab order on modals.
- improvement
Migrated all analytics calls from hardcoded URLs to the API_URL constant, so staging and production environments use separate analytics.
n8n community node + MCP server
- feature
n8n-nodes-pdfpipe published to npm. Drop PDFPipe into any n8n workflow: generate invoices on order, certificates on signup, reports on a schedule.
- feature
pdfpipe-mcp-server published. Gives Claude, Cursor, or any MCP-compatible agent the ability to render real PDFs. npx pdfpipe-mcp-server to start.
- improvement
MCP server listed on pdfpipe.xyz/mcp with a full capability reference and agent prompt examples.
Document archive + batch rendering
- api
Add store: true to any render request to persist the PDF to our CDN. Returns document_id and a pre-signed download URL.
- api
GET /v1/documents/:id returns document metadata (filename, size, created_at, expires_at) without downloading the full file.
- api
Batch endpoint: POST /v1/pdf/batch accepts an array of up to 250 render requests (limit depends on plan) and returns an array of PDFs or download URLs.
- feature
Dashboard document list: browse and download stored PDFs, see expiry dates, delete early.
- feature
Retention windows: 1 day (Hobby), 30 days (Starter), 1 year (Growth), 2 years (Scale and Business).
Launch
PDFPipe is live.
- api
POST /v1/pdf: send HTML or a URL, get a production-ready PDF back. A4, Letter, or custom page sizes. Headers, footers, page numbers, embedded fonts.
- api
GET /v1/demo: free live render endpoint, no API key needed. 10 renders per IP per day. Powers the playground on the home page.
- feature
Node.js SDK: npm install pdfpipe-node. Typed, two methods (render and renderToFile), works in Node 18+, Bun, and edge runtimes.
- feature
Python SDK: pip install pdfpipe-python. Works with Django, FastAPI, and plain scripts.
- feature
Hobby plan: 500 documents a month, free, no card, no expiry.
- feature
Dashboard: usage meter, API key management, render history, plan and billing.
What's coming
The roadmap is prioritized by what paying customers ask for. Current focus:
- Make (Integromat) integration
- SSO / SAML for Enterprise
- Template library: store and version your HTML templates via the API
- Usage alerts: email when you hit 80% of your monthly limit
Want something added? Email the founder directly. If three customers ask for the same thing, it ships.