# Blink PDF ## Docs - [Blink PDF: Markdown to PDF API 😘](https://docs.blinkpdf.io/introduction.md): Two verbs: render Markdown to PDF, or fill an AcroForm by name. Same REST API, same bp_ key. No Chromium; input is never persisted. - [Quickstart: Your first Blink PDF call](https://docs.blinkpdf.io/quickstart.md): Get an API key, then render Markdown or inspect and fill a form in under five minutes — curl, Python, or Node.js. Same bp_ key for both verbs. - [Blink PDF API Authentication: Keys, Headers & Errors](https://docs.blinkpdf.io/authentication.md): Learn how to obtain your Blink PDF API key, pass it securely in request headers, and handle common errors like 401 and 402. - [Fill a PDF form by name](https://docs.blinkpdf.io/fill/overview.md): Inspect an AcroForm, send { name: value }, and get a filled PDF. Same bp_ key as render. Fill spends 1 unit. Inspect and validate-fill do not. - [Inspect an AcroForm](https://docs.blinkpdf.io/fill/inspect.md): POST /v1/inspect lists fillable field names and kinds. Same bp_ key as render. No unit. Not a second verb on POST /v1/render. - [Fill an AcroForm](https://docs.blinkpdf.io/fill/fill.md): POST /v1/fill writes appearances and returns a PDF. POST /v1/validate-fill dry-runs the same body. Fill spends 1 unit. Never /NeedAppearances. - [Stored AcroForm templates](https://docs.blinkpdf.io/fill/templates.md): POST /v1/templates stores a blank AcroForm. Fill, inspect, and validate-fill accept templateId XOR pdf. Account-owned. No unit. - [Markdown Rendering — How Blink PDF Converts Docs](https://docs.blinkpdf.io/concepts/markdown-rendering.md): Blink PDF converts full CommonMark Markdown to professional PDFs without HTML, CSS, or LaTeX. Learn how the pipeline works. - [Zero Retention — Blink PDF's Data Privacy Guarantee](https://docs.blinkpdf.io/concepts/zero-retention.md): Blink PDF processes Markdown and fill values in memory and never persists them. Templates stay only if you store them. Default outputs last 24 hours. MCP can opt in to keep a PDF until you delete it. Render and fill are never used to train models. - [Accessibility — PDF/UA-1 & Unicode Support in Blink PDF](https://docs.blinkpdf.io/concepts/accessibility.md): Every Blink PDF output is PDF/UA-1 compliant by default — screen reader ready, full Unicode, color emoji, and font subsetting included on every plan. - [Convert AI and LLM Output to PDF with Blink PDF API](https://docs.blinkpdf.io/guides/ai-llm-workflows.md): Turn OpenAI and Claude Markdown output into professional PDFs in ~100ms. Pass LLM responses directly to Blink PDF — no reformatting needed. - [Generate Invoices and Financial Reports as PDFs Fast](https://docs.blinkpdf.io/guides/invoices-reports.md): Create pixel-perfect invoices and financial reports from Markdown templates. Fill variables, call /v1/render, and receive a professional PDF in ~100ms. - [Use Blink PDF in n8n, Make, and Zapier Automation Flows](https://docs.blinkpdf.io/guides/automation-tools.md): Connect Blink PDF to n8n, Make (Integromat), and Zapier using a standard HTTP node. No custom integration needed — just configure and go. - [Batch PDF Generation at Scale with Blink PDF REST API](https://docs.blinkpdf.io/guides/batch-processing.md): Generate thousands of PDFs concurrently using async Python or Node.js. Learn concurrency limits by plan, exponential backoff, and throughput optimization. - [Blink PDF MCP Server — Render PDFs from AI Agents](https://docs.blinkpdf.io/mcp/overview.md): Connect Cursor, Claude Code, Codex, and other MCP clients to Blink PDF. Your agent renders Markdown or fills an AcroForm — signed download links, no glue code. Same bp_ key for both verbs. - [Connect an MCP Client to Blink PDF](https://docs.blinkpdf.io/mcp/setup.md): Add the Blink PDF MCP server to Cursor, Claude Code, Codex, or any MCP client in three steps — create a key, paste mcp.json, render or fill with the same bp_ key. - [Fill a form from an MCP client](https://docs.blinkpdf.io/mcp/fill.md): inspect_form, validate_fill, and fill_form on the Blink PDF MCP server. Same bp_ key as render_pdf. fill_form spends 1 unit. - [Themes: Curated Design Presets for Every Document](https://docs.blinkpdf.io/configuration/themes.md): Pick a curated design theme with a single field. Blink PDF ships 15 presets for reports, blogs, academic papers, docs, and corporate documents — each a bundle of typography, page geometry, furniture, numbering, and styling rules. - [Document Options: Page Size, Margins & Metadata](https://docs.blinkpdf.io/configuration/document-options.md): Configure page size, orientation, margins, optional full-sheet background, and PDF metadata for every document you render with Blink PDF — all through a single JSON request. - [Fonts & Typography: Font Stacks, Google Fonts & Roles](https://docs.blinkpdf.io/configuration/fonts-layouts.md): Pick a hosted font cascade with fontStack, pull any Google Fonts family by URL, and bind body, heading, and custom roles with the typography object — all in one JSON render request. - [Styling Rules: Select Markdown Nodes and Set Presentation](https://docs.blinkpdf.io/configuration/styling-rules.md): Style any Markdown node with the rules array — select by type, depth, language, position, and more, then set color, fonts, borders, images, tables, and lists. Plus heading numbering and the PDF outline. - [Headers, Footers & Page Numbers in PDF Renders](https://docs.blinkpdf.io/configuration/headers-footers.md): Add running headers, footers, page numbers, section-driven fragments, divider rules, per-page overrides, and optional decorative watermarks using the furniture field on POST /v1/render. - [Blink PDF Pricing Plans — Units, Tiers & Overage](https://docs.blinkpdf.io/plans/pricing.md): From a free tier to dedicated enterprise capacity — find the Blink PDF plan that fits your volume, throughput, and compliance requirements. Billing is metered in units. Fill and render share one allowance. - [Blink PDF API Rate Limits, Concurrency & Monthly Quotas](https://docs.blinkpdf.io/plans/rate-limits.md): Understand Blink PDF's per-plan rate limits, concurrency caps, fill and template body sizes, and how to handle 429 and 413 responses gracefully in your integration. - [Blink PDF Enterprise — Dedicated Capacity & Custom Terms](https://docs.blinkpdf.io/plans/enterprise.md): Dedicated infrastructure, unlimited render volume with no per-render metering, custom branding, on-premise deployment, and custom rate and uptime commitments — scoped to your workload. - [Blink PDF FAQ — Plans, Billing, Fill & API Integration Help](https://docs.blinkpdf.io/help/faq.md): Answers to the most common questions about Blink PDF — from how it works and who it's for, to fill errors, billing, privacy, and practical integration tips. - [Blink PDF Troubleshooting: Fix API Errors, Fill & Render Issues](https://docs.blinkpdf.io/help/troubleshooting.md): Fix common Blink PDF integration issues — from 401 auth errors and fill named errors to 429 rate limits, watermarks, slow renders, and payload size problems. - [Blink PDF API Reference: Base URL, Auth, and Errors](https://docs.blinkpdf.io/api-reference/overview.md): Render Markdown or fill an AcroForm. Base URL, endpoints, request format, response headers, and error codes. Same bp_ key for both verbs. - [Blink PDF API Authentication: Keys and Headers](https://docs.blinkpdf.io/api-reference/authentication.md): Authenticate Blink PDF render and template requests with an API key in the x-api-key header. Learn where to get your API key, how to send it, and what 401 and 402 errors mean. - [Render Markdown to PDF](https://docs.blinkpdf.io/api-reference/render/render-markdown-to-pdf.md): Renders Markdown source into a PDF. The caller may select a font cascade via the `fontStack` field (an ordered list of hosted family keys — every family is available on every plan) or bring Google Fonts families by passing `googleFontsUrl` (legacy alias of the first entry) or `googleFontsUrls` (one… - [Validate a render request body](https://docs.blinkpdf.io/api-reference/render/validate-a-render-request-body.md): Checks the same TypeBox schema and cross-field semantic rules as `POST /v1/render` — including `googleFontsUrl` / `googleFontsUrls` (mutually exclusive), the merged family pool, and rule `set.family`/`set.font` references to declared families — without generating a PDF, metering usage, or recording… - [List fillable AcroForm fields](https://docs.blinkpdf.io/api-reference/fill/list-fillable-acroform-fields.md): Accepts template bytes as JSON Base64 (`pdf`) or multipart field `pdf`, or `templateId` XOR `pdf` for a stored blank template (same store as `GET /v1/templates/:id`). Same `x-api-key` as render. Does not apply plan `bodyBytes` to live `pdf` bytes. Stays request/response and unmetered. Sits on plan `… - [Dry-run a fill by name](https://docs.blinkpdf.io/api-reference/fill/dry-run-a-fill-by-name.md): Same JSON Base64 `pdf` XOR `templateId` and `values` as fill, or the same multipart field `pdf` or `templateId` plus a `values` JSON object. Does not accept `flatten`. Same `x-api-key` as render. Does not apply plan `bodyBytes` to live `pdf` bytes. Stays request/response and unmetered. Sits on plan… - [Fill an AcroForm by name](https://docs.blinkpdf.io/api-reference/fill/fill-an-acroform-by-name.md): JSON Base64 `pdf` plus a `values` map and optional `flatten`, or multipart field `pdf` plus a `values` JSON object (same shape). Or `templateId` XOR `pdf` for a stored blank template (same store as `GET /v1/templates/:id`). Inspect and validate-fill accept the same XOR. Same `x-api-key` as render. R… - [Store an AcroForm template](https://docs.blinkpdf.io/api-reference/templates/store-an-acroform-template.md): Stores an AcroForm PDF once and returns `{ id, title, fields, skipped }`. `title` is the body field, or the filename if omitted. The stored object is the blank template, not a filled output. Owned by the account, not the API key. Rejects a PDF with no `/AcroForm`, `/NeedAppearances`, a password, XFA… - [List stored templates](https://docs.blinkpdf.io/api-reference/templates/list-stored-templates.md): Lists stored AcroForm templates for this account, titled and paginated by title. Does not include filled outputs or Markdown sandwich renders. Default `limit` is 50; maximum is 100. Pass `cursor` from `nextCursor` for the next page. - [Get a stored template](https://docs.blinkpdf.io/api-reference/templates/get-a-stored-template.md): Returns one stored template by id for this account: title, `createdAt`, `byteSize`, the cached inspect `fields` and `skipped` from the last store or replace, and `downloadUrl` for the blank PDF (`GET /v1/templates/{id}/download` on this host, same `x-api-key`). Matches `POST /v1/inspect` on those by… - [Update a stored template](https://docs.blinkpdf.io/api-reference/templates/update-a-stored-template.md): Changes `title` and/or replaces `pdf` bytes on the same id. The cached inspect list refreshes when bytes change. Delete-then-store is not the update path. Rejects replacement bytes with no `/AcroForm`, `/NeedAppearances`, a password, XFA, or a document signature (`no_acroform`, `need_appearances` (`… - [Delete a stored template](https://docs.blinkpdf.io/api-reference/templates/delete-a-stored-template.md): Removes the stored template. A later get or fill by that id is not found. Delete is gone, not hidden. - [Download a stored template](https://docs.blinkpdf.io/api-reference/templates/download-a-stored-template.md): Streams the stored blank AcroForm PDF bytes for this account. Same store as `GET /v1/templates/{id}`. This is the template, not a filled output. Not a `list_pdfs` artifact. A foreign or unknown id is not found. - [Render a sandwich document](https://docs.blinkpdf.io/api-reference/sandwichdocument/render-a-sandwich-document.md): Renders a sandwich-style PDF where a header (logo, professional identity, subject/context data) appears only on the first page and a footer (signature, name) appears only on the last page. Header and footer assets are provided as inline `data:image/...;base64,...` strings. The Markdown body is rende… - [List available fonts](https://docs.blinkpdf.io/api-reference/fonts/list-available-fonts.md): Returns the hosted font catalog — every family is available on every plan — and the Google Fonts capability: any Google Fonts family can be used by passing a `googleFontsUrl` on `POST /v1/render` (up to `googleFonts.maxFamiliesPerUrl` families per URL). Use a hosted `key` as a `fontStack` entry; onl… - [Describe style targets](https://docs.blinkpdf.io/api-reference/render/describe-style-targets.md): Returns the style vocabulary for authoring `rules` on `POST /v1/render`: every selectable Markdown node type with its selector axes and valid `set` properties, the machine-readable value shape of each `set` property, selector axis shapes, enums, language aliases, typography roles, variant-map keys,… - [List available themes](https://docs.blinkpdf.io/api-reference/render/list-available-themes.md): Returns the theme catalog for `POST /v1/render`: every design preset with its `slug` (pass it in the `theme` field), `category`, a "use it when" tagline, and an `isDefault` flag for the base theme applied when `theme` is omitted or unknown. Theme fonts are bundled (hosted), so a theme renders identi… - [API entry point](https://docs.blinkpdf.io/api-reference/discovery/api-entry-point.md): Unauthenticated discovery document linking the render, validate, inspect, validate-fill, fill, templates, style-targets, fonts, OpenAPI, and health surfaces. The same links are advertised via an RFC 8288 `Link` response header. - [Liveness probe](https://docs.blinkpdf.io/api-reference/health/liveness-probe.md): Unauthenticated liveness check. Returns `{ "status": "ok" }` when the process is up. ## OpenAPI Specs - [openapi](https://docs.blinkpdf.io/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.