HTML in.
PDF out.

One HTTPS call turns your HTML into a PDF, rendered with Chromium or Forme.

import { readFile, writeFile } from "node:fs/promises";const res = await fetch("https://api.eu.revecto.dev/v1/convert", {  method: "POST",  headers: {    Authorization: `Bearer ${process.env.REVECTO_API_KEY}`,    "Content-Type": "application/json",  },  body: JSON.stringify({    engine: "chromium",    html: await readFile("packing.html", "utf8"),    options: { paper_size: "A4" },  }),});if (!res.ok) throw new Error(await res.text());// res.headers.get("content-type") === "application/pdf"await writeFile("packing.pdf", Buffer.from(await res.arrayBuffer()));
packing.pdf200 · application/pdf · 86 KB
First page of packing.pdf: an A4 packing slip with ship-from and ship-to addresses, a shipment barcode, a six-line item table and signature boxes

Plain HTTPS + JSON.No SDK to install.Works from any language with an HTTP client.

Templates

Save the layout once. Send only the data.

Store an invoice, a contract, a report as a versioned template. Then call /v1/render with a JSON object and get the filled document back. Same quota, same limits. Every version is kept and can be restored, placeholders are filled from your JSON, and the dashboard previews changes live.

app.revecto.dev/templates/ticket-v2
Templateticket-v2
<!doctype html><html lang="en"><head><meta charset="utf-8"><style>  body { font: 11pt sans-serif; }  .ticket { display: flex; overflow: hidden;            border: 2pt solid #4e42d9;            border-radius: 12pt; }  .art { width: 120pt; object-fit: cover; }  .main { flex: 1; padding: 0 18pt; }  .stub { border-left: 2pt dashed #4e42d9;          padding: 18pt; text-align: center; }  small, code { display: block; color: #6b6a73; }</style></head><body><div class="ticket">  <img class="art" src="asset:art.svg" alt="">  <div class="main">    <h1>{{event}}</h1>    <p><small>DATE</small>{{date}}</p>    <p><small>VENUE</small>{{venue}}</p>    <p><small>ATTENDEE</small>{{name}}</p>  </div>  <div class="stub">    <small>{{#vip}}VIP · {{/vip}}ADMIT ONE</small>    <img src="asset:barcode.svg" alt="">    <code>{{ticket}}</code>  </div></div></body></html>
ticket-v2.pdf
1 / 1
100%
First page of ticket-v2.pdf: an event ticket with abstract artwork, the event name, date, venue and attendee, and a VIP admission stub with a barcode and the ticket number
Engines
Set engine on each request. chromium renders everything a browser prints. forme returns simpler documents several times faster.
Templates
Store the layout once and post only the JSON to /v1/render. Change the layout without redeploying your code.
Custom fonts
Link a Google Font or declare @font-face, and the PDF is set in your typeface.
Images and stylesheets
Reference images, stylesheets and fonts by URL. Read X-Skipped-Resources to know when one could not be fetched.
Headers and footers
Declare @page margin boxes with counter(page) and counter(pages) to print a header, a footer and the page number on every page.
Page setup
Send paper_size, landscape and margins with the request to print on A3, A4, A5, Letter, Legal or Tabloid.
Tagged PDF
Every PDF is tagged for screen readers without any setup. Send tagged: false when you want a smaller file.
Regions
Create the project in eu, us or apac, then call api.eu, api.us or api.apac from servers nearby.

Pricing

Plans and limits.

  • Free
    $0
    Get an API key
    • 100 PDFs a month
    • 1 API key
    • 2 templates
  • Pro
    Coming soon
    $19 / month
    • 5 000 PDFs a month
    • 10 API keys
    • 50 templates
  • Enterprise
    Coming soon
    Custom
    • Unlimited PDFs a month
    • Unlimited API keys
    • Unlimited templates

Every plan includes HTML to PDF (/v1/convert), templates with data (/v1/render), the usage dashboard and call log, and version history with restore.

Credits
Coming soon

On Pro, a credit pays for one PDF once the monthly PDFs are used up. Credits never expire.

  • 1 000 credits · $5
  • 5 000 credits · $22
  • 20 000 credits · $80
Compare all limits
FeatureFreeProComing soonEnterpriseComing soon
Limits
PDFs per month1005 000Unlimited
Requests per second · burst1 · 24 · 10Unlimited
Concurrent renders210Unlimited
Request body5 MiB20 MiB20 MiB
PDF size25 MiB25 MiB25 MiB
Projects13Unlimited
API keys110Unlimited
Templates · versions2 · 550 · 50Unlimited
Assets per template55Unlimited
Asset size1 MiB2 MiB8 MiB
Editor previews per day2001 000Unlimited
Failed renders per day50500Unlimited

PDFs per month are counted across all projects of an organization. Every other limit applies to each project.

100 PDFs a month, free. No card, no expiry.

Create a key in the dashboard and paste the request above.

Get an API key