canonical: https://jentic.com/apis/pdfbolt.com/pdfbolt

# PDFBolt API

The PDFBolt API generates PDFs from Base64-encoded HTML, HTTPS URLs, or published templates filled with JSON data. Conversions run in three modes: direct returns the PDF in the response, sync returns a temporary download URL, and async accepts a background job and delivers the result to your webhook, with optional upload to your own S3-compatible bucket through a pre-signed URL. A separate Template API lets you validate, preview, diff, save as drafts, and publish reusable Handlebars templates, and a usage endpoint reports your plan and remaining conversions.

## For AI agents

Render PDFs from HTML, a URL, or a published template with JSON data, choosing an inline, download-URL, or webhook delivery mode, and author reusable templates through validate, preview, and publish steps.

## Scope

Does not handle e-signatures, PDF editing or merging, or document storage beyond temporary download URLs. Use for generating PDFs from HTML, URLs, and templates only.

## Capabilities

- Render a PDF from a web page url, Base64 html, or a templateId with templateData and get the file back in the response body
- Generate a PDF and receive a temporary download URL instead of the binary through the sync mode
- Queue a background conversion that posts its result to your webhook, with optional retryDelays and additionalWebhookHeaders
- Upload a generated PDF straight to your own S3-compatible bucket with a customS3PresignedUrl
- Validate and preview a Handlebars template payload against sample data before saving it
- Save a template draft, diff proposed changes against the published version, and publish it with a comment
- Check the current plan and remaining conversions on the account

## Use cases

### Agent-generated documents through Jentic

An agent that drafts invoices, reports, or certificates as HTML finds the PDFBolt sync conversion operation through Jentic, sends the Base64 html, and returns the temporary download URL to the user. Jentic injects the API-KEY header at call time, so the agent produces finished PDFs without handling the key.

Example prompt: Base64-encode the invoice HTML, call POST `/v1/sync` with it in the html field, and return the documentUrl from the response

### Template-driven invoices and statements

Teams keep layout in a published PDFBolt template and send only the data. A conversion request passes templateId and templateData, such as an invoice_number and total, and PDFBolt fills the Handlebars placeholders. Layout changes go through the Template API, so the code that sends data stays unchanged.

Example prompt: Call POST `/v1/direct` with templateId '00000000-0000-0000-0000-000000000000' and templateData containing invoice_number 'INV-2026-0112' and total '$250.00', then save the returned PDF

### Background conversion with webhook delivery

For long pages or batch jobs, POST `/v1/async` accepts the source and a required webhook URL, then delivers the result there with fields such as documentUrl, status, and documentSizeMb. Optional retryDelays retry failed conversions, and a customS3PresignedUrl sends the PDF straight to your own bucket.

Example prompt: Call POST `/v1/async` with url 'https://example.com/report' and webhook 'https://example.com/hooks/pdf', then wait for the webhook payload and read documentUrl

### Safe template changes

Before a template change ships, POST `/v1/templates/validate` checks the payload, POST `/v1/templates/preview` renders it against sampleData, and POST `/v1/templates/{templateId}/diff` compares it with the published version. A draft saved with POST `/v1/templates/drafts` goes live only when POST `/v1/templates/{templateId}/publish` is called.

Example prompt: Call POST `/v1/templates/{templateId}/diff` with the proposed content, sampleData, and parameters, review the result, then POST `/v1/templates/drafts` and POST `/v1/templates/{templateId}/publish` with a comment

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v1/direct` | Generate a PDF and return it in the response |
| POST | `/v1/sync` | Generate a PDF and return a download URL |
| POST | `/v1/async` | Generate a PDF and deliver it by webhook |
| GET | `/v1/usage` | Get plan and remaining conversions |
| GET | `/v1/templates` | List templates |
| POST | `/v1/templates/preview` | Preview a template payload |
| POST | `/v1/templates/{templateId}/publish` | Publish a template draft |

## Key resources

- **Conversions** — Generate PDFs in direct, sync, or async mode from HTML, a URL, or a template
- **Templates** — List, read, validate, preview, diff, save drafts, publish, and delete reusable templates
- **Usage** — Read the current plan and remaining conversions

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 72 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 80 / 100
  - Developer Experience & Jentic Compatibility: 70 / 100
  - AI-Readiness & Agent Experience: 67 / 100
  - Agent Usability: 94 / 100
  - Security: 50 / 100
  - AI Discoverability: 84 / 100
- **View full report:** https://jentic.com/apis/pdfbolt.com/pdfbolt/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring PDFBolt by hand means keeping two header credentials apart (API-KEY for conversions, PERSONAL-ACCESS-TOKEN for templates), Base64-encoding HTML, and picking the right delivery mode. Through Jentic you install once, import PDFBolt from the API Directory, store both credentials once, and your agent calls it.
- **Permission scoping:** PDFBolt puts the template id in the URL path (`/v1/templates/{templateId}`), so a rule can pin your agent to one template for reads, diffs, and publishing. Conversions carry their source in the request body, so for rendering you limit the agent to the operations it needs, and destructive ones like template deletion are not included unless you add them.
- **Credential handling:** Your PDFBolt API key and Personal Access Token are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'convert HTML to PDF' or 'generate a PDF from a template', and Jentic returns the matching PDFBolt operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Html2PDF API** — Converts HTML or a URL to PDF in a single call
- **PDFMonkey API** — Template-based document generation from JSON payloads
- **CraftMyPDF API** — Generates PDFs and images from visually designed templates
- **BoldSign API** — Sends documents for e-signature and tracks signing status

## FAQ

### What authentication does the PDFBolt API use?

Per its OpenAPI spec, PDFBolt uses two header credentials. The conversion and usage operations take an API key in the `API-KEY` header, while the Template API operations take a Personal Access Token in the `PERSONAL-ACCESS-TOKEN` header; both are created on the API Credentials page in the PDFBolt Dashboard. The Template Contract operation is declared with no security requirement. Through Jentic both credentials are stored encrypted by your own Jentic One instance and injected at call time.

### What is the difference between direct, sync, and async conversion?

POST `/v1/direct` returns the generated PDF in the HTTP response body. POST `/v1/sync` returns a temporary download URL instead. POST `/v1/async` accepts a background job and delivers the result to the webhook URL you supply, which suits long renders and batch work.

### How do I convert HTML to a PDF through Jentic?

Search Jentic for 'convert HTML to PDF', load the schema for POST `/v1/sync`, and send your HTML Base64-encoded in the html field. The response carries a temporary download URL for the PDF. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### What are the rate limits for the PDFBolt API?

The OpenAPI spec defines a Too Many Requests error but does not state numeric limits. Check https://pdfbolt.com/docs for current limits, and use GET `/v1/usage` to see your plan and remaining conversions.

### Is there a PDFBolt MCP server?

You don't need an MCP server to give your agent the PDFBolt API. Jentic connects it directly from the API Directory: import it, store your credentials once, and your agent calls it. Operations are discovered on demand, so no extra tool definitions sit in the agent's context.

### Can I limit what my agent is allowed to do with the PDFBolt API?

Yes. For example, write a rule that allows only POST `/v1/sync` and GET `/v1/usage`, so the agent can render PDFs and check remaining conversions but cannot publish or delete templates. Every call it makes is logged by your Jentic One instance.
