# 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 matching `^[A-Za-z0-9_-]+$` (letters, digits, `_`, `-`), unique within the task and not starting with `__`. 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 | `""` |

The HTML is inserted as a literal value in the output; Handlebars expressions
(`{{ ... }}`) in it are not evaluated.

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.