<!-- BusyBot node reference — https://busybot.net/tools/api-template-io/ -->

> Node: APITemplate.io (`api_template_io`) · Action (binary) · v1
> Category: Marketing · Credentials: APITemplate.io API (`apiTemplateIoApi`)
> Updated: 2026-08-16

# 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](https://busybot.net/credentials/api-template-io-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Account | `account` |
| Image | `image` |
| PDF | `pdf` |

### Operations

**Image**

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Create an image from a template |

**PDF**

| 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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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_url` in 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.