Skip to main content

API documentation

Integrate in minutes.

Use deterministic HTML-to-image and HTML-to-PDF rendering with clear request contracts, predictable waits, and operational visibility for production workflows.

Step 01

Authenticate

Send your API key as x-api-key or Authorization Bearer on every render request.

Step 02

Render

Submit HTML/CSS or URL payloads to /image or /pdf with deterministic wait controls.

Step 03

Observe

Track request IDs, latency, and payload sizes in dashboard logs for faster debugging.

Authentication

Every request (except health) requires an API key in either header format below.

x-api-key header

curl -X POST https://your-domain.com/api/v1/image \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{"html":"<h1>Hello</h1>","format":"png"}'

Bearer header

Authorization: Bearer YOUR_API_KEY

Endpoint reference

Core routes for sync and async rendering.

MethodPathSummary
POST/api/v1/imageRender PNG or JPEG from HTML/CSS or URL input.
POST/api/v1/pdfGenerate PDF documents with format and print controls.
POST/api/v1/jobs/imageQueue asynchronous image jobs and poll completion.
POST/api/v1/jobs/pdfQueue asynchronous PDF jobs and poll completion.
GET/api/v1/jobs/:jobIdRead async job status and download completed output.
GET/api/v1/usageReturn daily/monthly usage against current plan limits.

Render controls and limits

  • Image dimensions: 64 to 4000 px
  • waitUntil: load | domcontentloaded | networkidle
  • waitForSelector for deterministic “ready” states
  • Image options: fullPage, omitBackground
  • Max HTML size: 300,000 bytes
  • Max CSS size: 100,000 bytes
  • Plan quotas apply to sync and async requests
  • Rate limits depend on plan tier

Error model

Errors return JSON with a descriptive message. Common status codes:

  • 401 — Missing or invalid API key
  • 413 — HTML/CSS payload too large
  • 429 — Quota or rate limit exceeded
  • 500 — Render runtime failure
{
  "success": false,
  "error": "Plan monthly quota exceeded."
}