Rendlet PDF
Remote MCP server that renders HTML or ready templates (invoice, itinerary) to PDF, with full Chinese/CJK font support. Free keyless tools: list_capabilities, get_pricing, preview_pdf. Paid rendering via Stripe credit packs or USDC on Base.
Hosted MCP Server
npx add-mcp 'https://rendlet.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
Send HTML, or JSON plus a clean template, and get a PDF back in one HTTP call. Built for developers and AI agents.
or read the quick start · see a sample PDF
Short answer: Rendlet turns HTML, or JSON plus a built-in invoice or itinerary template, into a PDF with one POST /v1/pdf call. The free plan gives 100 documents a month (up to 10 pages each). Paid plans are $7 (1,000 docs), $19 (5,000) and $59 (25,000) per month. Rendering uses headless Chromium, and Simplified Chinese works out of the box. Docs: Markdown · OpenAPI 3.1 · Comparison with PDFShift, Api2Pdf and DocRaptor. Last checked 2026-10-18 · Changelog
Sample output
A real PDF rendered by this API: POST /v1/pdf in HTML mode with the free sandbox key (which is why it has the faint SANDBOX watermark). Page 1, top half:
Download the sample PDF (29 KB) · the exact request body
Quick start
Every request is a POST to /v1/pdf with your key in Authorization: Bearer <key>. Sign up with your email to get a free key instantly (100 documents/month).
To try the examples below without signing up, use the public sandbox key. It allows 5 renders per IP per day (with a shared global cap), 1 page, up to 50 KB of HTML, and adds a "SANDBOX" watermark.
HTML → PDF
curl -X POST https://rendlet.com/v1/pdf \
-H "Authorization: Bearer sandbox" -H "Content-Type: application/json" \
-d '{"html":"<h1>Hello</h1><p>Rendered by Rendlet.</p>","options":{"format":"A4","margin":"15mm"}}' \
-o hello.pdf
JSON + template → PDF
curl -X POST https://rendlet.com/v1/pdf \
-H "Authorization: Bearer sandbox" -H "Content-Type: application/json" \
-d '{"template":"invoice","data":{"number":"INV-1001","currency":"USD",
"seller":{"name":"Acme Studio"},"buyer":{"name":"Globex"},
"items":[{"description":"Design sprint","qty":1,"unit_price":1800}],"tax_rate":0.1}}' \
-o invoice.pdf
For agents and serverless code
Add "response":"base64" to get JSON instead of a binary stream:
{"template":"itinerary","data":{...},"response":"base64"}
→ {"filename":"document.pdf","pages":1,"bytes":1710,"content_type":"application/pdf","base64":"JVBERi0x..."}
The machine-readable spec is at /openapi.json (OpenAPI 3.1). There is a short summary for LLMs at /llms.txt.
Built-in JSON templates
Templates render without a browser, so they're fast and the layout doesn't change between calls. GET /v1/templates returns a full example payload for each one.
invoice
Seller and buyer blocks, line items, tax rate, totals, notes, and an accent colour.
Fields: number, date, due, currency, seller{name,address,email}, buyer{name,address}, items[{description,qty,unit_price}], tax_rate, notes, accent
itinerary
A day-by-day travel plan with traveller details, timed activities and notes.
Fields: title, traveler, dates, days[{date,city,items[{time,activity,notes}]}], notes, accent
Your own (HTML)
Send any HTML/CSS document. It's rendered in headless Chromium with print backgrounds, page size and margins you choose.
API reference
| Endpoint | Purpose |
|---|---|
POST /v1/pdf | Render a PDF. The body is {"html": "..."} or {"template": "invoice"|"itinerary", "data": {...}}. Optional: options.format (A4, Letter, Legal, A3, A5), options.landscape, options.margin, options.printBackground, filename, response (binary|base64). |
GET /v1/templates | Lists the templates with example requests. No key needed. |
GET /v1/usage | Your plan and month-to-date document count. |
POST /v1/signup | Get a free key: {"email","plan","use_case","volume"}. Returns api_key once. |
GET /openapi.json | OpenAPI 3.1 spec. |
Responses and limits
Successful renders return headers X-Pages, X-Plan, X-Quota-Limit and X-Quota-Remaining. Errors are JSON {"error": "...", "message"?: "..."}: 400 bad request, 401 missing key, 403 invalid key, 413 too large or too many pages, 429 quota exceeded, 500 render failed.
For HTML input, JavaScript is disabled and only data: URIs and public https:// assets are loaded.
Simplified Chinese is supported out of the box: both modes include Noto Sans SC, covering Latin and the 6,763 common GB2312 characters. For other scripts, embed a web font in your HTML.
| Limit | Sandbox | Free | Starter | Pro | Scale |
|---|---|---|---|---|---|
| Documents | 5 / IP / day | 100 / month | 1,000 / month | 5,000 / month | 25,000 / month |
| Requests per minute | 3 | 10 | 30 | 60 | 120 |
| Pages per document | 1 | 10 | 50 | 200 | 500 |
| HTML size | 50 KB | 1 MB | 2 MB | 2 MB | 2 MB |
| Watermark | Yes | No | No | No | No |
Keys are issued only through email signup: one free key per email, and at most 3 signups per network per day. Keys are stored hashed, so we can't show a key again, only rotate it.
Pricing
Every plan includes both HTML and template rendering. A document counts as one successful render.
Free
$0
100 documents/month
Up to 10 pages each
No watermark
Starter
$7 /mo
1,000 documents/month
Up to 50 pages each
Email support
Pro
$19 /mo
5,000 documents/month
Up to 200 pages each
Priority support
Scale
$59 /mo
25,000 documents/month
Up to 500 pages each
Custom template on request
Paid plans are live: click Subscribe and paste your free key to upgrade it.
Prepaid credit packs
1,000 credits
$9
One-time. Never expire.
Used only after your monthly cap.
5,000 credits
$35
One-time. Never expire.
Used only after your monthly cap.
One credit = one document past your plan's monthly cap. Pay by card (Stripe) or with USDC on Base. Details.
Monthly caps (no overage billing)
- Every plan has a hard monthly cap: 100 (Free), 1,000 (Starter), 5,000 (Pro) or 25,000 (Scale) documents. You are never billed for extra documents.
- At the cap, prepaid credits (if any) are used one per document. With no credits left, requests return
429 quota_exceededwith anupgrade_url, acredits_urland the next plan, until the 1st of next month (UTC) or until you upgrade. Upgrading takes effect as soon as payment completes. - Failed renders (4xx/5xx) never count toward the cap.
X-Quota-Remainingshows what's left.
Refunds and cancellation
- Cancel any time. Your plan stays active until the end of the paid period, with no further charges.
- 7-day money-back guarantee: if you're not happy within 7 days of your first payment and have used fewer than 20% of the included documents, email us for a full refund.
- Credit packs: an entirely unused pack is refundable within 14 days of purchase; used credits are not refundable; USDC payments are refunded manually to the sending address on Base. Full terms.
- Service credits: if monthly availability drops below 99.5%, we credit 10% of that month's fee on request. Credits can't be exchanged for cash.
Changelog
Docs last checked 2026-10-18.
- 2026-10-18: Overage billing removed. Every plan now has a hard monthly cap: at the cap the API returns 429 with an upgrade URL, and you are never charged for extra documents.
- 2026-10-18: Moved to rendlet.com. Paid plans are live through Stripe Checkout. Added the Markdown docs, the comparison page and llms.txt updates.
- 2026-10-18: Renamed from the working name PageForge to Rendlet.
- 2026-10-17: Usage metering and rate limits, email-issued hashed keys, the sandbox key, Simplified Chinese fonts (Noto Sans SC), and refund terms.
- 2026-10-17: First release:
POST /v1/pdf(HTML and JSON templates), invoice and itinerary templates, OpenAPI spec.
