# Make

> Create PDFs, images and e-invoices from your templates in Make scenarios, use the PDF tools, and start scenarios when renders finish, with the Dynamic Document API app for Make.

> Part of the Dynamic Document API documentation. Index of all pages for agents: [llms.txt](https://dynamicdocumentapi.com/llms.txt), every page in one file: [llms-full.txt](https://dynamicdocumentapi.com/llms-full.txt).



The Dynamic Document API app for [Make](https://www.make.com) fills your templates with data from any earlier module and hands the finished file to the next one: attach the invoice to an email, upload the certificate to a drive, post the social image to a channel. Instant triggers start a scenario when a render succeeds or fails, a batch completes or a template gets a new version.

The app is in Make's review and not yet listed in Make's app directory. Until it is, write to [support@dynamicdocumentapi.com](mailto:support@dynamicdocumentapi.com) for an invite link, which adds the app to your Make organization.

## Connect your account [#connect-your-account]

When you add a Dynamic Document API module to a scenario, Make asks you to create a connection. You sign in with your Dynamic Document API account ([free plan, no card needed](https://app.dynamicdocumentapi.com/signup)) and the consent screen shows:

* **The workspace** the connection may use. Make shows its name with the connection, so you can connect several workspaces and pick one per module.
* **The permissions:** read templates, create renders, read and delete renders and their files, read the account's plan and usage, manage the webhook endpoints of its instant triggers, and read signed links and create signed URLs. The connection can't change templates, API keys, members or settings.

The connection lasts until you remove it under **Settings** → **Integrations** in the dashboard. Make renews its access in the background; if the connection isn't used for 90 days, reauthorize it in Make.

## Triggers [#triggers]

| Trigger                       | Starts the scenario when                                                                    |
| ----------------------------- | ------------------------------------------------------------------------------------------- |
| **Watch renders**             | A render succeeded or failed, with its files or its error                                   |
| **Watch completed batches**   | A [batch](https://dynamicdocumentapi.com/docs/batches) finished, with its counts and the ZIP or merged PDF if it made one |
| **Watch published templates** | A template got a new live version, published or rolled back                                 |

All three are instant: Dynamic Document API sends the event to Make as a [webhook](https://dynamicdocumentapi.com/docs/webhooks) the moment it happens (see [webhook endpoints](#webhook-endpoints) below). The trigger then loads the render, batch or template again through your connection, so the scenario gets current data and working file links.

When you add a trigger, Make asks you to create a webhook, with these options:

* **Events** (renders only): render succeeded, render failed, or both.
* **Templates:** only events of these templates. Leave it empty for all. With a template selected, renders without a template (HTML, URLs, PDF tools) don't trigger.
* **Test renders** (renders only): include them, skip them or only use them. Skip them once the scenario sends real documents.
* **Renders made in Make** (renders only): skipped by default, so a scenario that renders in its own modules can't start itself again and again. Include them only with a template filter that leaves out the templates the scenario renders.

Batches don't record where they came from, so **Watch completed batches** has no such option: a scenario that starts with it shouldn't create a batch of a template its trigger listens to.

## Modules [#modules]

| Group                      | Modules                                                                                                                                                                                                                                                                                     |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Documents and images       | **Create a PDF from a template**, **Create an image from a template**, **Create a PDF from HTML**, **Create a PDF from a URL**, **Create a PDF from Markdown**, **Create an image from HTML**, **Create a screenshot of a URL**, **Create an e-invoice** ([e-invoicing](https://dynamicdocumentapi.com/docs/e-invoicing)) |
| PDF tools                  | **Get PDF metadata**, **Merge PDFs**, **Split a PDF**, **Rotate PDF pages**, **Protect a PDF**, **Unlock a PDF**, **Update PDF metadata**, **Convert a PDF to PDF/A**, **Upload a file** ([PDF tools](https://dynamicdocumentapi.com/docs/pdf-tools))                                                                     |
| Renders                    | **Search renders**, **Get a render**, **Wait for a render**, **Download a render file**, **Delete render files**                                                                                                                                                                            |
| Batches                    | **List batch items**, **Get a batch**, **Create a batch** ([batches](https://dynamicdocumentapi.com/docs/batches))                                                                                                                                                                                                        |
| Templates and signed links | **Search templates**, **Get a template**, **Create a signed URL** ([signed links](https://dynamicdocumentapi.com/docs/signed-links))                                                                                                                                                                                      |
| Account                    | **Get account details**, **Get usage**                                                                                                                                                                                                                                                      |
| Other                      | **Make an API call**: any request to the [API](https://dynamicdocumentapi.com/docs/api-reference) with your connection; enter the path after `https://api-eu.dynamicdocumentapi.com`, for example `/v1/templates`                                                                                                         |

**Search renders** filters by status, template, source, reference, test mode and creation time, newest first. The searches and lists return up to the **Limit** you set and page through the API's results for you.

Renders from Make show the source **Make** in the dashboard's render list and usage breakdown.

## Fill a template [#fill-a-template]

The template list shows published templates only, so publish a template in the dashboard before you use it in a scenario. **Template data** then offers two ways to send its data:

* **Map each field** lists the template's data fields from its schema, with the labels and descriptions set in the template editor. Objects become nested groups, and line items such as invoice lines become arrays: map an array from an earlier module, for example an iterator's or aggregator's output, or add the rows by hand. Fields inside an optional object aren't required in Make; the template's schema still checks them when you fill that object.
* **JSON** sends the whole `data` object, for example from **JSON** › **Create JSON** or mapped from an earlier module.

**Create a PDF from a template** can also embed an e-invoice. Keep **Use the template's setting**, choose **Embed an e-invoice** with a profile and the invoice from the data or as JSON, or choose **Off** for a plain PDF.

## Files and waiting [#files-and-waiting]

With **Download file** on (the default), a render module outputs the file as **Data** and **File name**, which the Email, Google Drive, Dropbox and other modules take as an attachment or upload. A render with several files, such as the parts of a split, outputs the first; **Files** lists every file with a signed **URL** that stays valid for 24 hours.

The API answers a render within 25 seconds. A render that takes longer keeps running, and the module asks for it again every three seconds until it is done or **Max wait** (default 120 seconds, at most 240) has passed. Then it outputs the render with the status `processing` and no file yet: add **Wait for a render** later in the scenario, or start a second scenario with **Watch renders**, filtered to the template, with **Renders made in Make** included.

A failed render stops the module with the API's error message, the fields it names and the render ID, so Make's error handlers (**Ignore**, **Resume**, **Break** and so on) apply. Invalid data and unknown renders or templates are data errors; an expired or revoked connection asks you to reauthorize it.

The **PDF tools** take each input PDF as a **File from an earlier module** (uploaded for 24 hours in the same step), a public **URL**, an earlier **Render**, or an **Upload ID** from **Upload a file**. **Merge PDFs** takes a list of URLs, render IDs and upload IDs: upload files from earlier modules with **Upload a file** first.

Make's plan limits the size of the files a scenario can handle, so large PDFs may need a Make plan with a higher file size limit.

## Test renders [#test-renders]

Each render module has a **Test render** option under the advanced settings, off by default. While you build a scenario, turn it on: [test renders](https://dynamicdocumentapi.com/docs/authentication#test-mode) carry a TEST watermark and aren't billed. Turn it off for the final documents, which count like API renders.

## Webhook endpoints [#webhook-endpoints]

Each webhook of an instant trigger adds one webhook endpoint to the workspace, named after its trigger, such as "Make: Watch renders". You see them under **Webhooks** in the dashboard, marked **Managed by Make**. You can't edit or delete them there:

* Deleting the webhook in Make (**Webhooks** in Make's left menu) removes its endpoint. A scenario that is turned off keeps its webhook, and Make queues the events until the scenario runs again.
* Disconnecting Make under **Settings** → **Integrations** removes the endpoints once no Make connection to the workspace is left.
* If Make answers a delivery with `410 Gone`, Dynamic Document API removes the endpoint.

Managed endpoints never become the workspace's default endpoint, and they count towards the limit of 20 webhook endpoints per workspace.

## Plans [#plans]

Every plan, Free included, can render PDFs and images, use the PDF tools and run the triggers. Some modules need a plan with the feature:

| Module                                                                                             | Plan              |
| -------------------------------------------------------------------------------------------------- | ----------------- |
| **Create a signed URL**                                                                            | Starter or higher |
| **Create a batch**                                                                                 | Starter or higher |
| **Create an e-invoice**, e-invoices embedded by **Create a PDF from a template**, PDF/A and PDF/UA | Growth or higher  |

The usual [limits](https://dynamicdocumentapi.com/docs/plans-and-limits) apply, such as the rate limit, pages per PDF and batch items.

A workspace with an **API IP allowlist** (**Settings** → **Security**) refuses Make's requests, because they come from Make's servers.
