Turn live dashboards into scheduled PDF reports
Capture any dashboard — including auth-gated, JS-rendered SPAs — as a print-perfect PDF. Schedule weekly, archive monthly, deliver via webhook.
- Hosted in Frankfurt & Paris
- GDPR-compliant
Why capture dashboards as PDFs?
Compliance archives that don't drift
Dashboards change. PDFs are immutable. Capture month-end snapshots for audits, regulatory submissions, board materials.
Distribute to non-tool users
Executives and customers don't always have logins to your BI tool. Email them a PDF report — same data, no friction.
Authenticated URLs work too
Pass cookies or auth headers to render gated content. Internal Grafana, Looker, Metabase, or your own dashboards — all renderable.
How dashboard capture works
1. Schedule a render or call sync
POST a render job with the URL, optional cookies/headers, and viewport size. Or schedule it via cron-style trigger.
2. We load + wait for ready
Headless Chromium loads the page, applies your auth, waits for network-idle or your custom selector to appear.
3. Receive PDF on completion
Sync mode for fast pages, async with webhook for slow-loading dashboards. Pipe directly to S3 or email.
Built for ops, BI, and customer-success teams
Whether it's a weekly partner report, a monthly compliance archive, or an on-demand customer dashboard — same endpoint, same response. Built on URL-to-PDF for live dashboards and HTML-to-PDF for templated reports. Capture once, archive forever.
Try it in your stack
Same endpoint. Copy as cURL, call from any language.
POST a URL with auth headers, get back a PDF capture of the rendered dashboard.
curl -X POST https://api.pdf.xhub.io/v1/render \
-H "Authorization: Bearer $PDFXHUB_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "url",
"url": "https://dashboard.acme.io/q4-report",
"auth": { "header": "Cookie: session=xyz" },
"viewport": "1280x900"
}' --output report.pdfcurl -X POST https://api.pdf.xhub.io/v1/render \
-H "Authorization: Bearer $PDFXHUB_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "url",
"url": "https://dashboard.acme.io/q4-report",
"auth": { "header": "Cookie: session=xyz" },
"viewport": "1280x900"
}' --output report.pdfFeatures at a glance
Capture & Auth
- Headless Chromium with EU-only render workers
- Cookie + custom HTTP headers + basic-auth + bearer-token
- JS-rendered SPAs (React, Vue, Angular, Svelte)
- Wait-for-selector or wait-for-network-idle
- Configurable viewport (mobile, tablet, desktop, custom)
Scheduling & Delivery
- Cron-style scheduled jobs (daily, weekly, monthly)
- Webhook on completion with download URL
- Direct-pipe to S3 / GCS / Azure Blob
- Email delivery with attachment (optional)
- Per-job retry policy on transient failures
Platform
- EU-only Chromium fleet
- Cron-style scheduled jobs (daily, weekly, monthly)
- Wait-for-selector or wait-for-network-idle hooks
- Webhook on completion with download URL
- Direct-pipe to S3 / GCS / Azure Blob
- Per-tenant API-key scoping for shared dashboards
Powered by these APIs
The product endpoints behind this solution.
Related solutions
Same API, different workflows.
Snapshot your first dashboard
25 captures/month free forever. Authenticated URLs included.