# Template task input_data


> Configure the template job_type with exact element types, fields, values, and defaults.


Canonical URL: https://www.copyhero.app/help/technical-reference/task-input-data/template

## Purpose [#purpose]

A Template task builds ordered product-description content from configured
elements. Set `job_type` to `template`. The public type is `template`, not
`copy`.

## Valid JSON example [#valid-json-example]

```json
{
  "elements": [
    {
      "id": "headline-1",
      "type": "headline",
      "config": {
        "headlineType": "h2",
        "headlineStyle": "style2",
        "alignment": "left",
        "instructions": "Introduce the product's primary customer benefit.",
        "paddingTop": 0,
        "paddingBottom": 0,
        "bold": false
      }
    }
  ]
}
```

## Top-level fields [#top-level-fields]

| Field               | Type         | Required | Values and meaning                                                                                    |
| ------------------- | ------------ | -------- | ----------------------------------------------------------------------------------------------------- |
| `elements`          | object array | Yes      | One or more content elements in output order.                                                         |
| `elements[].id`     | string       | Yes      | A non-empty identifier. Keep it unique within the task because generated content keys derive from it. |
| `elements[].type`   | string       | Yes      | One exact public element type from the sections below.                                                |
| `elements[].config` | object       | Yes      | The configuration for that element type.                                                              |

Use the exact public element types `headline`, `paragraph`, `image`,
`benefits`, `custom-html`, `faq-section`, `specifications`, and
`comparison-table`. Do not use worker-normalized underscore aliases such as
`custom_html`, `faq_section`, or `comparison_table` when authoring a task.

## Shared generated-content fields [#shared-generated-content-fields]

Every element except `custom-html` uses these fields. Include them when the
assistant authors `input_data`; the defaults below are the run-time defaults
when a field is omitted.

| Config field    | Type    | Values                                                                   | Default |
| --------------- | ------- | ------------------------------------------------------------------------ | ------- |
| `alignment`     | string  | `left`, `center`, or `right`                                             | `left`  |
| `instructions`  | string  | Additional writing guidance; `""` means no additional guidance.          | `""`    |
| `paddingTop`    | integer | 0 through 200 pixels                                                     | `0`     |
| `paddingBottom` | integer | 0 through 200 pixels                                                     | `0`     |
| `bold`          | boolean | Wrap the rendered element in bold styling. Images ignore bold rendering. | `false` |

The editor starts new Headline, Paragraph, Image, and Benefits elements with
`alignment: "center"`; the other generated-content elements start with
`alignment: "left"`. Use the explicit value the user wants instead of relying
on that editor-only difference.

## Headline [#headline]

Set `type` to `headline`.

| Config field    | Type   | Required | Values                                                                     | New-element default                          |
| --------------- | ------ | -------- | -------------------------------------------------------------------------- | -------------------------------------------- |
| `headlineType`  | string | Yes      | `h1`, `h2`, `h3`, `h4`, `h5`, or `h6`                                      | `h1`                                         |
| `headlineStyle` | string | Yes      | `style1` (Emotional), `style2` (Informative), or `style3` (Benefit-Driven) | `style1`                                     |
| Shared fields   | mixed  | Include  | See shared fields above.                                                   | `alignment: "center"`; other shared defaults |

`headlineStyle` guides generated wording. It is not an HTML or CSS style
value.

## Paragraph [#paragraph]

Set `type` to `paragraph`.

| Config field     | Type   | Required | Values                                        | New-element default                          |
| ---------------- | ------ | -------- | --------------------------------------------- | -------------------------------------------- |
| `paragraphStyle` | string | Yes      | `informative`, `persuasive`, or `descriptive` | `informative`                                |
| Shared fields    | mixed  | Include  | See shared fields above.                      | `alignment: "center"`; other shared defaults |

## Image [#image]

Set `type` to `image`.

| Config field          | Type                       | Required | Values                                                                    | New-element default                          |
| --------------------- | -------------------------- | -------- | ------------------------------------------------------------------------- | -------------------------------------------- |
| `imageSource`         | string                     | Yes      | `slideshow`, `productPage`, or `aiGenerated`                              | `slideshow`                                  |
| `imageTemplateId`     | positive integer or `null` | Yes      | Existing accessible image-template ID for `aiGenerated`; otherwise `null` | `null`                                       |
| `sizeMode`            | string                     | Include  | `normal`, `custom`, or `fixed`                                            | `normal`                                     |
| `width`               | positive integer or `null` | Include  | Pixel width                                                               | `null`                                       |
| `height`              | positive integer or `null` | Include  | Pixel height                                                              | `null`                                       |
| `skipUnrelatedImages` | boolean                    | Include  | Filter guarantee badges, scarcity graphics, and unrelated review images   | `false`                                      |
| `preferMotionGraphic` | boolean                    | Include  | Prefer an animated source image first                                     | `false`                                      |
| Shared fields         | mixed                      | Include  | See shared fields above. Keep `instructions` empty and `bold` false.      | `alignment: "center"`; other shared defaults |

Sizing behavior:

* `normal` uses the original responsive size; keep `width` and `height` null.
* `custom` sets one dimension and keeps the other automatic. If both are set,
  width takes precedence.
* `fixed` uses both dimensions only when both are positive integers; otherwise
  rendering falls back to normal responsive sizing.

The image filtering controls apply to `slideshow` and `productPage`. An
`aiGenerated` image requires a template selected through the editor. Never
guess `imageTemplateId`.

## Benefits [#benefits]

Set `type` to `benefits`.

| Config field  | Type    | Required | Values                                                                       | New-element default                          |
| ------------- | ------- | -------- | ---------------------------------------------------------------------------- | -------------------------------------------- |
| `count`       | integer | Yes      | 1 through 10                                                                 | `3`                                          |
| `symbol`      | string  | Yes      | `check-bold`, `check-box`, `check`, `check-circle`, `star`, `arrow`, or `li` | `check-bold`                                 |
| `style`       | string  | Yes      | `highlight`, `minimal`, or `bold`                                            | `highlight`                                  |
| `layout`      | string  | Include  | `bullet` or `plain`                                                          | `bullet`                                     |
| `customEmoji` | string  | Include  | `""` for none, or an emoji that overrides `symbol`                           | `""`                                         |
| `spacing`     | integer | Include  | 0 through 100 pixels between items                                           | `0`                                          |
| Shared fields | mixed   | Include  | See shared fields above.                                                     | `alignment: "center"`; other shared defaults |

`highlight` generates a short highlighted label plus a longer description for
each benefit. `minimal` and `bold` generate one description per benefit.
`layout: "plain"` omits list symbols, but `symbol` must still contain a valid
value.

## Custom HTML [#custom-html]

Set `type` to `custom-html`. Its `config` contains only:

| Config field | Type   | Required | Values                                           | New-element default |
| ------------ | ------ | -------- | ------------------------------------------------ | ------------------- |
| `html`       | string | Yes      | Reviewed HTML inserted into the generated output | `""`                |

Do not add the shared fields to this element. Review the markup and never
include scripts, credentials, or untrusted copied code.

## FAQ section [#faq-section]

Set `type` to `faq-section`.

| Config field         | Type    | Required | Values                                                  | New-element default |
| -------------------- | ------- | -------- | ------------------------------------------------------- | ------------------- |
| `questions`          | integer | Yes      | 1 through 10                                            | `3`                 |
| `questionHeadingTag` | string  | Include  | `h1` through `h6`, or `p`                               | `h4`                |
| `answerHeadingTag`   | string  | Include  | `h1` through `h6`, or `p`                               | `p`                 |
| `boldQuestions`      | boolean | Include  | Bold each generated question                            | `true`              |
| `boldAnswers`        | boolean | Include  | Bold each generated answer                              | `false`             |
| `spacing`            | integer | Include  | 0 through 100 pixels between question-and-answer groups | `16`                |
| Shared fields        | mixed   | Include  | See shared fields above.                                | Shared defaults     |

`boldQuestions` and `boldAnswers` control the two generated parts separately.
The shared `bold` field wraps the whole FAQ block, so normally leave it false.

## Specifications [#specifications]

Set `type` to `specifications`.

| Config field   | Type    | Required | Values                                              | New-element default |
| -------------- | ------- | -------- | --------------------------------------------------- | ------------------- |
| `amount`       | integer | Yes      | 1 through 20                                        | `5`                 |
| `includeEmpty` | boolean | Yes      | Include rows whose generated name or value is empty | `true`              |
| `style`        | string  | Yes      | `bold-keyword` or `plain`                           | `bold-keyword`      |
| `layout`       | string  | Include  | `bullet` or `plain`                                 | `bullet`            |
| `spacing`      | integer | Include  | 0 through 100 pixels between specifications         | `8`                 |
| Shared fields  | mixed   | Include  | See shared fields above.                            | Shared defaults     |

`bold-keyword` bolds the generated specification name. `plain` does not.
When `includeEmpty` is false, incomplete name/value pairs are omitted from the
rendered output.

## Comparison table [#comparison-table]

Set `type` to `comparison-table`.

| Config field  | Type    | Required | Values                   | New-element default |
| ------------- | ------- | -------- | ------------------------ | ------------------- |
| `rows`        | integer | Yes      | 1 through 20             | `3`                 |
| Shared fields | mixed   | Include  | See shared fields above. | Shared defaults     |

The generated table always has three columns. Only the row count is
configurable.

## Defaults and omission behavior [#defaults-and-omission-behavior]

* For assistant-authored JSON, use the complete public configuration described
  above. Do not depend on the editor to repair a partial payload.
* When the editor opens an older element with missing fields, it fills those
  fields from the new-element defaults. Invalid configuration can cause that
  element to reset to its complete default configuration in the editor.
* The run-time schema supplies the shared defaults and these type-specific
  defaults when omitted: Image sizing/filter fields; Benefits `layout`,
  `customEmoji`, and `spacing`; FAQ heading tags, bold controls, and `spacing`;
  Specifications `layout` and `spacing`.
* All other type-specific fields marked **Yes** are required for execution.
* Element order in the array is output order. Following workflow steps receive
  the resulting product state.

## UI guides [#ui-guides]

Use [Create a Template task](/help/tasks/template-task) and
[Use image templates in content blocks](/help/media/template-content-blocks)
for the corresponding editor controls.