Reference · Tools
APITemplate.io
Generate images (JPEG/PNG) and PDF documents from pre-defined templates using the APITemplate.io API.
The APITemplate.io node generates images (JPEG/PNG) or PDF documents from templates you've built in the APITemplate.io editor, driven by data in your workflow. Supply a template ID and the values to fill in, and the node returns the finished file — either as a URL or downloaded directly as binary data ready for a subsequent upload, email, or storage node. A typical use case is auto-generating personalised certificates or invoices at scale.
- Node type
- Action (binary)
- Parameters
- 15
- Outputs
- Output, Error
- Credentials
- APITemplate.io API
APITemplate.io
Generate images and PDFs from templates via APITemplate.io
Overview
APITemplate.io turns a template you designed in its editor into a finished image or PDF. This tool drives that from a workflow: supply a template ID plus the values that vary, and the node returns the generated file’s URLs — optionally downloading the file itself and attaching it to the item as binary data so a later node can upload, email or store it. Image templates take a list of overrides; PDF templates take a flat set of key/value properties. A third resource reads your account information, including usage and plan details.
Category: Marketing
Tool Name: api_template_io
Version: 1
Appearance: Icon: lucide-Image | Color: #1F8EFA
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires APITemplate.io API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Account | account |
| Image | image |
pdf |
Operations
Image
| Operation | Value | Description |
|---|---|---|
| Create | create | Create an image from a template |
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a PDF from a template |
Account
| Operation | Value | Description |
|---|---|---|
| Get | get | Get account information |
Parameters
Account: Get takes no parameters of its own — see All Operations.
Image: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Template ID (imageTemplateId) | string | Yes | — | ID of the image template (JPEG or PNG format). Obtain from the APITemplate.io dashboard or list-templates endpoint. Supports expressions like {{ $json.templateId }}. |
| JSON Parameters | boolean | No | false | Whether to provide overrides/properties as raw JSON instead of using the UI fields. |
| Overrides (JSON) | json | No | — | JSON array of override objects for the image template. Example: [{“name”: “text_1”, “text”: “hello world”}] (shown when JSON Parameters is true) |
| Overrides | fixedCollection | No | {} | The template elements to override, added one at a time. (shown when JSON Parameters is false) |
| — Override | One override entry. | |||
| — — Properties | fixedCollection | No | {} | The key/value pairs that make up this override. |
| — — — Key | string | No | — | Name of the property to override. |
| — — — Value | string | No | — | Value for the property. Supports expressions like {{ $json.headline }}. |
| Download | boolean | No | false | Whether to download the generated file and store it as binary data. |
| Put Output File in Field | string | Yes | data | The name of the output binary field to put the file in. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. (shown when Download is true) |
| Options | collection | No | {} | Extra download settings. (shown when Download is true) |
| — File Name | string | No | — | The name of the downloaded image/pdf. It must include the extension. For example: report.pdf |
PDF: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Template ID (pdfTemplateId) | string | Yes | — | ID of the PDF template. Obtain from the APITemplate.io dashboard or list-templates endpoint. Supports expressions like {{ $json.templateId }}. |
| JSON Parameters | boolean | No | false | Whether to provide overrides/properties as raw JSON instead of using the UI fields. |
| Properties (JSON) | json | No | — | JSON object of key-value properties for the PDF template. Example: {“name”: “John Doe”, “date”: “2024-01-15”} (shown when JSON Parameters is true) |
| Properties | fixedCollection | No | {} | The template properties to fill in, added one at a time. (shown when JSON Parameters is false) |
| — Property | One property entry. | |||
| — — Key | string | No | — | Name of the template property. |
| — — Value | string | No | — | Value for the template property. Supports expressions like {{ $json.customerName }}. |
| Download | boolean | No | false | Whether to download the generated file and store it as binary data. |
| Put Output File in Field | string | Yes | data | The name of the output binary field to put the file in. Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use. (shown when Download is true) |
| Options | collection | No | {} | Extra download settings. (shown when Download is true) |
| — File Name | string | No | — | The name of the downloaded image/pdf. It must include the extension. For example: report.pdf |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
One output item per input item — no operation on this node fans out. The API response is merged onto the input item JSON, so the returned fields sit alongside whatever the item already carried. Binary already on the item is preserved in every case.
| Resource / operation | Merged onto the item |
|---|---|
image / create | The generation response, including download_url for the rendered image |
pdf / create | The generation response, including download_url for the rendered PDF |
account / get | Your account information as APITemplate.io returns it — usage and plan details |
Binary. With Download on, the node fetches the file from the returned download_url and attaches it to the item under the property named in Put Output File in Field (default data), merged with any binary the item already had. The stored file name comes from Options → File Name when you set one, otherwise from the last path segment of the download URL. With Download off, no binary is created and the input item’s binary is forwarded unchanged.
Reference the result downstream by expression, e.g. {{ $json.download_url }}.
Usage Examples
- Generate a marketing banner image from a template
- Create a PDF invoice from a template with dynamic values
- Generate and download a social media image
- Check APITemplate.io account usage and quotas
Example Configuration
Render a banner image and keep only the URLs:
{
"type": "api_template_io",
"parameters": {
"resource": "image",
"operation": "create",
"imageTemplateId": "{{ $json.templateId }}",
"jsonParameters": true,
"overridesJson": "[{\"name\": \"headline\", \"text\": \"{{ $json.headline }}\"}]"
}
}
Render an image with the UI override fields and download the file into a named binary property:
{
"type": "api_template_io",
"parameters": {
"resource": "image",
"operation": "create",
"imageTemplateId": "1f3c9d0a2b4e5f67",
"jsonParameters": false,
"overridesUi": {
"overrideValues": [
{
"propertiesUi": {
"propertyValues": [
{ "key": "name", "value": "headline" },
{ "key": "text", "value": "{{ $json.title }}" }
]
}
}
]
},
"download": true,
"binaryProperty": "generatedImage",
"options": {
"fileName": "banner-{{ $index }}.png"
}
}
}
Build a PDF invoice from key/value properties and download it:
{
"type": "api_template_io",
"parameters": {
"resource": "pdf",
"operation": "create",
"pdfTemplateId": "9a8b7c6d5e4f3210",
"jsonParameters": false,
"propertiesUi": {
"propertyValues": [
{ "key": "customerName", "value": "{{ $json.customer.name }}" },
{ "key": "invoiceDate", "value": "{{ $datetime.now }}" },
{ "key": "totalAmount", "value": "{{ $json.total }}" }
]
},
"download": true,
"binaryProperty": "invoice",
"options": {
"fileName": "invoice-{{ $json.invoiceNumber }}.pdf"
}
}
}
Build the same PDF from a JSON object instead of UI fields:
{
"type": "api_template_io",
"parameters": {
"resource": "pdf",
"operation": "create",
"pdfTemplateId": "9a8b7c6d5e4f3210",
"jsonParameters": true,
"propertiesJson": "{\"customerName\": \"{{ $json.customer.name }}\", \"totalAmount\": \"{{ $json.total }}\"}"
}
}
Check remaining quota before a large render run:
{
"type": "api_template_io",
"parameters": {
"resource": "account",
"operation": "get"
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Generate images (JPEG/PNG) and PDF documents from APITemplate.io templates, with optional binary download of the result.
Notes
- Images and PDFs take different data shapes. An image template is filled with an array of overrides — each override names an element and sets its properties. A PDF template is filled with a flat set of key/value properties. The parameter panel already reflects this; do not carry a JSON payload from one across to the other.
- JSON Parameters swaps the input method, not the destination. With it off you build the payload in the UI collection; with it on you paste the equivalent JSON. Invalid JSON fails the item rather than being ignored.
- A PDF create with no properties fails. In UI mode, add at least one Property entry.
- Download is what produces a file. Left off, you get
download_urlin the JSON and nothing binary; a downstream node would have to fetch it itself. Turned on, the file is fetched for you and attached to the item. - Give File Name an extension. It becomes the stored file’s name; without an extension, downstream nodes and services may mis-handle the file type. Leave it empty to reuse the name APITemplate.io generated.
- Template IDs come from your APITemplate.io dashboard and are specific to an account, so a workflow exported to another account needs its IDs updated.
Frequently asked questions
What credentials do I need to connect this node?
You need an APITemplate.io API credential, configured in BusyBot as the 'APITemplate.io API' credential type. Your API key comes from your APITemplate.io account dashboard. Template IDs also come from that dashboard and are account-specific — if you share or export a workflow to another account, every template ID will need to be updated.
Why does my PDF generation fail with no output?
A PDF create operation requires at least one Property entry. If you're using the UI input mode and haven't added any properties, the request will fail. Go to the Properties section in the node parameters and add at least one key/value pair that matches a field in your PDF template.
What's the difference between how image and PDF templates accept data?
They use different data shapes. Image templates take an array of overrides — each entry names a specific element in the template and sets its properties. PDF templates take a flat set of key/value pairs. These formats are not interchangeable, so don't copy a payload built for one resource type and use it for the other.
Do I get an actual file back, or just a URL?
By default you get a download URL in the response JSON, but no file is attached to the workflow item. To receive the file as binary data — so a downstream node can upload, email, or store it without an extra HTTP step — enable the Download option in the node parameters. When enabled, the node fetches the file and attaches it directly to the item.
Does the File Name field matter if I'm just using the download URL?
File Name only applies when Download is enabled, since that's what determines the name of the binary attachment. If you leave it empty, the node reuses the filename APITemplate.io generated. If you set it yourself, include the correct extension (e.g. .pdf, .png) — without one, downstream nodes and external services may not handle the file type correctly.
Build with the APITemplate.io node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need APITemplate.io API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.