> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://support.pdfgeneratorapi.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# How to integrate with Make.com

Make is a powerful, no-code automation platform that lets anyone automate routine work with a visual builder and drag-and-drop. Use Make to connect PDF Generator API with over 3,500 apps, or with almost any API, and generate PDF documents from your software, your data, or any other application.

PDF Generator API lets you design document templates and generate PDFs by merging those templates with your data. Put the two together and you can pull data out of one platform, create a document, then save it, email it, or do anything else with it. For example, you can email a certificate the moment somebody completes a Typeform questionnaire.

Already using this integration? The PDF Generator API app on Make was rebuilt and now offers 20 actions instead of two. Your existing scenarios keep working, but the module they use is now marked deprecated and no longer gets new features. The new module also configures differently, so read "Moving off the deprecated module" below before you swap anything.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/1/e/0/11e0e518fc48ce00/image_16e9795.png)


### Setup

To use PDF Generator API with Make you need a PDF Generator API account. You can create a free Sandbox account and use it for 14 days to evaluate and integrate the API, with up to 50 credits during the trial.

For how credit usage is calculated, see this article.

Then log in to Make, or create a free Make account, and click "Create a new scenario".

### Adding a module

To add a PDF Generator API module to your scenario, select "Add module" and search for "PDF Generator API", then pick the action you want.

One thing to know before you start building: the PDF Generator API app provides actions only, no triggers and no search modules. That means a scenario never starts with PDF Generator API. It starts with whatever holds your data, a new Google Sheets row, a Stripe payment, a form submission, and PDF Generator API is the step that turns that data into a document.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/1/e/0/11e0e518fc48ce00/image_wbxk38.png)


### Creating a new connection

To create a connection you need three values: API Key, API Secret, and Workspace identifier.

Your API Key and Secret are in the Settings page of your PDF Generator API account. The Workspace identifier sets the context for the request, and your default workspace identifier is the email address you signed up with.

One connection works for every module in the app. When you add a second PDF Generator API module to a scenario, pick the connection you already made instead of creating another one.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/1/e/0/11e0e518fc48ce00/image_f893iy.png)

### What you can do

These are the 20 actions available in the app, grouped by what they are for.

Generate a document from a template
* Generate document. Merges a template with your data and returns the finished document in the same run.
* Generate document (Async). Merges a template with your data as a background job and posts the result to a callback URL.

Convert something into a PDF
* HTML to PDF. Converts HTML content into a PDF.
* URL to PDF. Converts a public web page into a PDF.
* PDF to Image. Converts a PDF into images, from a base64 string or a public URL.

Create an e-invoice
* Create eInvoice. Turns a JSON payload into an XML e-invoice.
* Create Factur-X eInvoice. Turns a JSON payload into a Factur-X e-invoice, the French format.
* Create XRechnung eInvoice. Turns a JSON payload into an XRechnung e-invoice, the German format.

Work on a PDF you already have
* Add watermark. Adds a text or image watermark to a PDF, from a base64 string or a public URL.
* Encrypt document. Password-protects a PDF.
* Decrypt document. Removes protection from an encrypted PDF.
* Optimize document. Reduces the file size of a PDF.
* Make accessible. Tags a PDF for accessibility.

Work with PDF forms
* Extract form fields. Reads the form fields and their metadata out of a PDF.
* Fill form fields. Writes your data into the form fields of a PDF.

Everything else
* Generate QR Code. Creates a QR code from a configuration.
* Store document. Uploads a PDF to Document Storage from a public URL or a base64 string.
* Get document. Returns a document already held in Document Storage, by its Public ID.

Do not use these two
* Generate Document (deprecated)
* Make an API call (deprecated)

Both still run so that existing scenarios do not break, but they receive no further work. If you are building something new, use "Generate document" instead of "Generate Document (deprecated)".

### Generate document

This action merges a template you built in PDF Generator API with data from earlier steps of your scenario and returns the finished document in the same run.

__Properties__

**Connection (required)**
The connection you created above.

**Template (required)**
A collection with three fields.
* Template. Pick a template from the drop-down, or map in a template ID.
* Template version ID (optional). Leave it empty to use the production version of the template. Set it only when you want to pin a scenario to one specific version.
* Template data (JSON) (required). The data used to fill the placeholders in your template. This is a structured field, not a text box: you build the JSON out of items and map values from earlier modules into them. It is the biggest difference from the deprecated module, which took a JSON string.

**Format (optional)**
PDF or HTML. Leave it empty for PDF.

**Output (optional)**
How the document comes back.
* Base64. The PDF content as a base64 string. This is what you get if you leave the field empty. Convert it to a binary file with toBinary([content];base64) when the next module needs a file, Google Drive being the common case.
* URL. A public link to the document.
* Viewer. A link that opens the document in the PDF Generator API viewer.
With URL and Viewer the document is stored for 30 days and then deleted automatically.

**Document name (optional)**
The file name. It can be static text or a dynamic value from another module, such as a database record or a form input.

**Testing (optional)**
When this is on, the run is not counted against your monthly usage, but the document comes out with a large PREVIEW stamp across it. Use it while you are building the scenario, then turn it off.

**Make accessible (optional)**
Adds semantic tagging to the document for accessibility. This runs a separate Make Accessible action behind the scenes and consumes additional credits.

**Metadata (optional)**
Document author and Document language, written into the PDF metadata. Language defaults to en.

What the module returns

* Response. The document content or the URL, depending on the Output you chose.
* Document meta data. Document name, Document display name, Response encoding, Document content type, and Document public ID. The public ID is only present when you chose URL or Viewer, and it is the value you feed into "Get document" later.

![](https://storage.crisp.chat/users/helpdesk/website/-/1/1/e/0/11e0e518fc48ce00/image_8l5vn0.png)


### Generate document (Async)

Use this when a document may take a while to build, for example a long report, and you do not want the scenario waiting on it.

It takes the same properties as "Generate document" plus one more, and it behaves differently in a way that matters:

Callback (required)
* Callback url. A public URL that PDF Generator API calls with a POST request once the document is ready.
* Callback headers (optional). Key-value pairs sent with that POST request.

The module itself returns only an Async job ID. The finished document does not come back into the same scenario run. It arrives at the callback URL, together with the job ID in a PDF-API-Job-Id header.

So in Make you build this as two scenarios. The first one generates the document asynchronously. The second one starts with a Custom webhook module, and you paste that webhook's address into the Callback url field of the first scenario. Everything you want to do with the document, saving it, emailing it, goes in the second scenario.

If your documents come back in a few seconds anyway, use "Generate document" instead. The async module is worth the extra scenario only for work that is genuinely slow.

### Moving off the deprecated module

If your scenario uses "Generate Document (deprecated)", nothing is broken and nothing will stop working. Make does not remove modules from a published app, precisely so that existing scenarios keep running. But the deprecated module is frozen, so anything new lands only in "Generate document".

The two modules do not configure identically, so this is a rebuild of one module rather than a copy and paste. Here is how the old fields map across:

* Template ID becomes Template, inside the Template collection. Same template, same drop-down.
* Document name stays Document name.
* Data format is gone. The old module asked you to choose between a JSON string and a URL to a JSON file. The new module has neither. It has Template data (JSON), a structured field you map values into.
* JSON string becomes Template data (JSON). You cannot paste your old JSON string into it. Rebuild the structure in the field and map the same values in.
* URL to JSON file has no equivalent. If your scenario pointed at a hosted JSON file, add an HTTP module to fetch it first, parse it, and map the result into Template data.
* Output keeps Base64 and URL, and adds Viewer.
* Format, Testing, Make accessible, Metadata and Template version ID are new. All optional, all safe to leave empty.

To move a scenario across:

1. Open the scenario and add a new "Generate document" module next to the old one.
2. Pick the same connection. You do not need to create a new one.
3. Select the same template, set the same Document name and the same Output.
4. Rebuild the data mapping in Template data (JSON). This is the part that takes the time.
5. Turn Testing on and run the scenario once. Compare the output with what the old module produced.
6. Turn Testing off, reconnect the following module to the new one, then delete the old module.

If your scenario maps the old module's output into later steps, check those mappings after the swap. Response still holds the content or the URL, so most mappings carry over untouched.

### If you need something that has no module

The app covers the common operations, but not every endpoint in the API. "Make an API call", which used to be the escape hatch for the rest, is now deprecated.

The batch generation endpoints, which merge several templates into one document, and the job status endpoint for async generation have no module in the app today.

The PDF Generator API uses JWT bearer authentication, and tokens have to be signed server-side, so Make's generic HTTP module is not a straight substitute for the deprecated API call module. If you need an endpoint that the app does not cover, contact us at support@pdfgeneratorapi.com and tell us what you are trying to build. It is useful for us to know which endpoints people are missing.

---
### Related articles you may find helpful

* [How to connect my template with data?](/en/article/how-to-connect-my-template-with-data-r8vfc6/)
* [How to use the editor?](/en/article/how-to-use-the-editor-1a194yy/)
* [Supported operators](/en/article/supported-operators-1g0y3zu/)
