AxiomCode
Verifiable intelligence for AI software engineering. Everything starts with a formally grounded code graph.
PDF template engine with API. Define templates, pass JSON data, render pixel-perfect PDFs in milliseconds. Design templates using AI chat.
PluginsTypeScript · JavaScriptGitHub @pdfs-buildOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
n8n community node for pdfs.build: render PDFs from templates and JSON data
Loading the full README. The saved excerpt is shown below.
This is an n8n community node for pdfs.build. It lets you render PDFs from your pdfs.build templates inside n8n workflows.
pdfs.build is a PDF template engine: you design a template once, and it comes with a JSON schema that describes the data it needs. Your workflows then send JSON data to the pdfs.build API and get a finished PDF back.
n8n is a fair-code licensed workflow automation platform.
Follow the installation guide in the n8n community nodes documentation. In short, on a self-hosted instance (owner or admin account):Read the full README ↗This is an n8n community node for pdfs.build. It lets you render PDFs from your pdfs.build templates inside n8n workflows.
pdfs.build is a PDF template engine: you design a template once, and it comes with a JSON schema that describes the data it needs. Your workflows then send JSON data to the pdfs.build API and get a finished PDF back.
n8n is a fair-code licensed workflow automation platform.
Follow the installation guide in the n8n community nodes documentation. In short, on a self-hosted instance (owner or admin account):
n8n-nodes-pdfsbuild as the npm package name.The pdfs.build node then appears in the nodes panel. For queue mode or Docker images without GUI installs, use manual installation with npm install n8n-nodes-pdfsbuild.
The node authenticates with an organization-scoped pdfs.build API key. You need:
To set up the credential:
prs_ and is shown only once.n8n tests the credential by listing your templates. If the organization ID does not belong to the key's organization, the test fails with organization_scope_mismatch.
| Resource | Operation | What it does |
|---|---|---|
| Render | Fill a published template with JSON data and return the PDF as binary data, or queue it as a background job | |
| Render Job | Get | Get the status of a background render |
| Render Job | Download PDF | Download the PDF of a background render that has succeeded |
| Template | Get | Get a template's metadata, JSON schema and sample data |
| Template | Get Many | List the published templates in your organization |
Wherever the node asks for a template you can pick it from a searchable list or enter its template ID (the external ID you see in the app, for example invoice-primary). Both accept expressions.
Renders a published template with your data.
{{ $json }} to pass the incoming item.data.4), draft for the working copy, or a channel name such as staging. Empty uses the latest channel.whe_...) to notify about this render. Without this option every enabled endpoint is notified.Example: with Data set to
{
"company": "Acme Corp",
"items": [{ "name": "Consulting", "qty": 3, "price": 150 }],
"due_date": "2026-06-01"
}
the node outputs one item with the PDF in the data binary field and this JSON:
{ "fileName": "invoice.pdf", "fileSize": 48213 }
With Run in Background on, the output is the job handle instead:
{
"id": "job_7a1b9c2d",
"status": "queued",
"statusUrl": "https://api.pdfs.build/v2/organizations/<org>/renders/job_7a1b9c2d"
}
If the data does not match the schema, the node fails with Validation failed and lists each invalid field. If the template does not compile with that data, it fails with Compilation failed and the Typst diagnostics. Set Settings > On Error to Continue (using error output) to route these to an error branch instead.
Returns the status of a background render. Set Job ID to the id from a background render, for example {{ $json.id }}.
{
"id": "job_7a1b9c2d",
"status": "success",
"templateExternalId": "invoice-primary",
"durationMs": 812,
"downloadUrl": "https://api.pdfs.build/v2/organizations/<org>/renders/job_7a1b9c2d/pdf",
"createdAt": "2026-09-18T12:00:00.123456",
"completedAt": "2026-09-18T12:00:01.020000"
}
status is one of queued, processing, success or error. When it is error, the error field says why.
Downloads the PDF of a succeeded background render into a binary field (default data). Set Job ID as above. The download must use the same API key that queued the job. While the job is still running the node fails with a 409 error saying the PDF is not available yet.
Returns one template, including its schema (the JSON Schema your render data must satisfy) and sampleData. This is the quickest way to see which keys to send in Data.
{
"externalId": "invoice-primary",
"name": "Invoice",
"status": "published",
"schema": { "type": "object", "properties": { "company": { "type": "string" } } },
"sampleData": { "company": "Acme Corp" },
"schemaLocked": false
}
Returns one item per published template (externalId, name, status, timestamps). Turn on Return All or set a Limit (default 50).
Invoice by email. A trigger (for example a Stripe or form trigger) feeds a pdfs.build node (PDF > Render, Data set to {{ $json }}), followed by a Send Email or Gmail node that attaches the binary field data.
Large batches in the background. pdfs.build (PDF > Render, Run in Background on) then Wait (a few seconds) then pdfs.build (Render Job > Get, Job ID {{ $json.id }}) then an If node on {{ $json.status }} equal to success then pdfs.build (Render Job > Download PDF). Loop the false branch back to the Wait node, or use the render.completed webhook with an n8n Webhook trigger instead of polling.
@n8n/node-cli in strict mode, with no runtime dependencies.npm install
npm run build
npm run lint
npm run dev # starts n8n at http://localhost:5678 with this node loaded
Use Node.js 24, which npm run dev needs to run n8n. Node.js 22 can install, build and lint. On Node.js 25 npm install fails because isolated-vm, a dependency of @n8n/node-cli, does not compile.
Initial release: PDF > Render (with background mode), Render Job > Get and Download PDF, Template > Get and Get Many.