JSON-first document generation

PDF generation API for JSON — without HTML or headless browsers

Create invoices, contracts, reports and certificates with reusable JSON blueprints and programmable Jay logic. Send structured data to the API and receive finished PDFs through signed async webhooks.

Free plan includes 50 credits every month.

50 free credits/month

Create an account, use public blueprints, and start generating documents on the free plan.

No Chromium stack

Generate PDFs without maintaining Puppeteer, Chrome workers or HTML/CSS rendering pipelines.

~20ms invoice render

A Stripe-style single-page invoice renders in about 20ms in benchmark conditions, without a browser runtime.

Generate PDFs from reusable document blueprints

Start with a public blueprint or create and store your own private ones. A JayCode blueprint is a JSON document definition enhanced with Jay expressions that compute content dynamically while keeping layout, styling and document logic together.

Public and private blueprints

Use ready-made public examples or create private blueprints for your own document workflows.

Send data, not HTML

Your backend sends structured business data while the blueprint handles layout, formatting and document structure.

Keep document logic reusable

Use Jay expressions for conditions, loops, formatting, computed values and decimal calculations instead of scattering document logic across application code.

How JSON-to-PDF generation works

1. Choose a blueprint

Use a public document blueprint or create your own reusable JSON template.

2. Define document logic

Add layout, styles and Jay expressions for conditions, loops, formatting and decimal calculations.

3. Send JSON

Submit structured business data to the render API as a job.

4. Receive the result

JayCode renders asynchronously and sends a signed webhook with a signed PDF download URL.

Production PDF API features

Jay-powered dynamic content

Use conditions, loops, nested data, formatting, computed values and decimal calculations inside reusable blueprints.

Multi-page document layout

Handle automatic page breaks, multi-page tables, repeating table headers, document headers and footers, and page numbers.

Fonts and graphics

Reuse custom fonts plus raster and vector graphics across branded documents.

Barcodes, QR codes and links

Build business documents with generated codes, links and other structured document elements.

Signed async delivery

Submit render jobs asynchronously and receive completion details through signed webhooks with signed PDF URLs.

Element-level diagnostics

Render-time errors identify the blueprint element that failed and explain why, with diagnostics delivered through the webhook flow.

PDF generation for document-heavy products

JayCode is built for software teams generating recurring or logic-heavy business documents from structured data.

Billing documents

Generate invoices, receipts, statements and payout summaries from order, subscription or marketplace data.

Contracts and customer documents

Create agreements, employment documents, policy files and other customer-facing records with dynamic content and consistent formatting.

Operational documents

Produce reports, certificates, delivery notes and business forms from operational data through one API.

Pricing

Start with 50 free credits every month. Paid-plan pricing and included usage are being finalized and will be published here before paid subscriptions are enabled.

Free plan

50 credits / month

Create and store private blueprints, use available public blueprints, and generate PDFs through the JayCode API.

Paid plans

Pricing to be published

Paid plans will provide higher usage allowances and rate limits. Final prices and plan details will appear here before checkout is enabled.

Need more control?

JayCode also supports a self-hosted compiler option for organizations with stricter deployment and document-processing requirements.

Fast PDF rendering without browser overhead

The renderer does the hard part in milliseconds. In benchmark conditions, a Stripe-style single-page invoice rendered in about 20ms, while multi-page documents reached as low as about 5ms of rendering time per page. We also measured the complete async service across 36,000 jobs, from API request to stored PDF and webhook delivery.

~20ms

Rendering time for the benchmark's Stripe-style single-page invoice.

As low as ~5ms/page

Observed rendering time per page for multi-page documents, depending on document complexity.

268ms p99.9

End-to-end completion time across the full async request, storage and webhook pipeline.

Most latency is delivery

Roughly 90% of total completion time in the benchmark deployment was spent outside the renderer, primarily moving and storing the finished file before webhook delivery.

36,000 jobs, 0 failures

The full async benchmark completed every submitted job. End-to-end latency measured 174ms p50, 227ms p99 and 268ms p99.9.

26.73 jobs/s

Sustained throughput through rendering, file storage and webhook delivery with 2 workers on a 4-core AMD EPYC KVM.

The benchmark reflects the complete production-style workflow, not just an isolated renderer test. The current deployment stores completed PDFs in Amazon S3 in Frankfurt before notifying the caller, so file delivery and storage dominate the measured end-to-end time.

Python client integration for Django, Flask and standalone apps

The official client is currently Python-based and supports Django, Flask and standalone applications. Follow the lifecycle from configuration and startup to render submission, webhook handling and shutdown.

# Django settings
JAYCODE_CLIENT_DOWNLOAD_DIR = os.environ.get("JAYCODE_CLIENT_DOWNLOAD_DIR", "downloads")
JAYCODE_CLIENT_DOWNLOAD_WORKERS = int(os.environ.get("JAYCODE_CLIENT_DOWNLOAD_WORKERS", "2"))
JAYCODE_CLIENT_REQUEST_TIMEOUT = int(os.environ.get("JAYCODE_CLIENT_REQUEST_TIMEOUT", "30"))

For complete implementations, see the GitHub repository with the available client examples.

Security, delivery and deployment

Signed webhooks and downloads

Job completion is delivered through signed webhooks, and generated PDFs are retrieved through signed download URLs.

Frankfurt-region file storage

Generated PDFs are stored in Amazon S3 in the Frankfurt region and retained for 7 days. Private download URLs expire after 1 hour. Retention and data handling are described in the Terms of Service.

Self-hosted compiler option

The JayCode compiler can be deployed in your own environment for workloads that require local document compilation and stricter control over document processing.

Frequently asked questions

Is JayCode an HTML-to-PDF API?

No. JayCode renders JSON blueprints with a purpose-built document runtime instead of converting HTML with Chromium or another browser engine.

What is a JayCode blueprint?

A blueprint is a reusable JSON document definition enhanced with Jay expressions for dynamic content, conditions, loops, formatting and calculations.

Is PDF generation synchronous or asynchronous?

JayCode is asynchronous. Your application submits a render job, then receives completion details through a signed webhook with a signed PDF download URL.

What document features are supported?

Blueprints support automatic page breaks, repeating table headers, multi-page tables, headers and footers, page numbers, barcodes, QR codes, links, SVG and raster graphics, conditions, loops, nested data, formatting and decimal computations.

How are render errors reported?

Render-time errors are returned through the webhook flow and identify which blueprint element failed and why.

How long are generated PDFs retained?

Generated PDFs are stored in Amazon S3 in the Frankfurt region and retained for 7 days. Private download URLs expire after 1 hour; related job data and logs may be retained for up to 3 weeks as described in the Terms of Service.

Which client libraries are available?

The official client is currently Python-based, with integration examples for Django, Flask and standalone Python applications.

Is there a no-code blueprint editor?

No. JayCode blueprints are currently authored as text, which is intended for developers and teams that want versionable, programmable document definitions.

Create a free account and generate your first PDF

Start with a public blueprint, send structured data, and receive the generated PDF through the signed async delivery flow. The free plan includes 50 credits every month.

Related PDF generation solutions

Explore focused guides for common PDF generation workflows and migration paths.

Invoice PDF API

For direct invoice generation from API calls and reusable templates.