One endpoint, two output formats
POST your HTML to a single endpoint and the response body is the PDF — no polling, no job IDs, no signed download URLs to clean up afterwards. Swap /render/pdf for /render/image and the same payload comes back as a PNG or JPEG instead.
curl -X POST https://api.filecook.com/render/pdf \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>Hello World</h1>",
"options": { "format": "A4", "margin": "10mm" }
}' -o document.pdf
Why teams move off in-house rendering
Running Puppeteer yourself starts easy and gets expensive. Chromium leaks memory under sustained load, fonts render differently on the container than on your laptop, and every dependency bump risks a subtle layout shift in documents your customers actually receive.
- No browser fleet to operate. We patch Chromium, you call an endpoint.
- No cold starts. Warm workers are pooled and ready, so the first render is as fast as the thousandth.
- Deterministic output. The same HTML produces the same bytes across every environment.
- Queue-backed. Traffic spikes queue rather than drop, with automatic retries on transient failures.
Layout control that survives real documents
Multi-page documents are where most converters fall apart. Filecook exposes the print controls you actually need: page format and orientation, per-side margins, custom header and footer templates, and an auto page height for long single-page exports like receipts and statements.
- A4, Letter, Legal, or explicit dimensions in mm, in, or px
- Portrait and landscape, per request
page-break-inside: avoidand the rest of the CSS fragmentation properties- Background graphics on or off, print or screen media emulation
Frequently asked questions
Do you support modern CSS like Grid and Flexbox?
Can I use Google Fonts or my own web fonts?
@import in your stylesheet, a <link> tag, or a self-hosted @font-face rule. The renderer waits for fonts to load before it captures the page.