ProdaDoc API

URL → PDF · v2.4

ProdaDoc converts any URL or HTML template into a pixel-perfect PDF. It uses a full Chromium rendering engine with complete JavaScript execution — supporting React, Chart.js, D3, and any other JS-powered content.

Base URL
api.scaleapis.com
Version
v2.4
Protocol
HTTPS only
Format
JSON

Authentication

All API requests require a Bearer token. Generate keys from your API Keys dashboard.

Authorization header
Authorization: Bearer sk_live_••••••••

Endpoints

POST/v1/pdfRender a URL or HTML string to PDF
GET/v1/jobs/{id}Retrieve async job status and result
POST/v1/pdf/batchSubmit multiple render jobs at once

Parameters

Request body must be JSON with Content-Type: application/json.

Parameter
Type
Required
Description
url
string
Required
The URL to render. Use html param for HTML string input.
html
string
Optional
Raw HTML string. Mutually exclusive with url.
format
string
Optional
Paper size: A4 | Letter | Legal | A3. Default: A4.
margin
object
Optional
{ top, right, bottom, left } in mm. Default: 0.
print_background
boolean
Optional
Include CSS background colors and images. Default: false.
wait_for
string
Optional
CSS selector to wait for before rendering.
block_ads
boolean
Optional
Block ads and trackers. Default: false.
timeout
integer
Optional
Max render time in ms. Default: 30000.
async
boolean
Optional
If true, returns job_id immediately.
webhook_url
string
Optional
URL to POST result to when async job completes.
s3_bucket
string
Optional
Auto-upload output to this S3 bucket.
s3_key
string
Optional
S3 object key. Defaults to a UUID.

Async & Webhooks

For bulk operations, pass async: true and a webhook_url. The API immediately returns a job ID. When rendering completes, we POST the result to your webhook.

// Async request
POST /v1/pdf
{ "url": "https://...", "async": true, "webhook_url": "https://yourapp.com/hooks/pdf" }

// Immediate response
{ "job_id": "job_abc123", "status": "queued" }

// Webhook payload (when complete)
POST https://yourapp.com/hooks/pdf
{ "job_id": "job_abc123", "status": "complete", "pdf_url": "https://cdn.scaleapis.com/docs/abc123.pdf" }

Error Codes

400
Bad Request

Missing url or html, or invalid parameter value.

401
Unauthorized

Missing or invalid Bearer token.

403
Forbidden

URL blocked by content policy or plan limit reached.

422
Unprocessable Entity

Page loaded but PDF generation failed.

429
Too Many Requests

Rate limit exceeded. See Retry-After header.

500
Internal Server Error

Rendering engine error. Retry with exponential backoff.

Rate Limits

Free
50 req/day
Pro
2,000 req/day
Enterprise
Custom

Rate limits apply per API key. Exceeding limits returns a 429 response with a Retry-After header.Upgrade your plan →