# Instructions
# Instructions
Instructions define what participants are asked to do in AI Task Builder. The same instruction types are available for both Batches and Collections.
For usage details, see [Working with Batches](/api-reference/ai-task-builder/batches) or [Working with Collections](/api-reference/ai-task-builder/collections).
## Common fields
All instructions share these fields:
| Field | Type | Required | Description |
| ------------------------ | ------- | -------- | ----------------------------------------------------- |
| `type` | string | Yes | The instruction type |
| `description` | string | Yes | The prompt or question displayed to participants |
| `order` | integer | Yes | Position of this instruction relative to others |
| `helper_text` | string | No | Additional guidance text displayed below the question |
| `placeholder_text_input` | string | No | Placeholder text displayed in the input field |
## Instruction types
### multiple\_choice
A selection from a list of options. Use `answer_limit` to control single or multi-select behavior.
| Field | Type | Required | Description |
| ------------------ | -------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `type` | string | Yes | `"multiple_choice"` |
| `description` | string | Yes | The question or prompt |
| `order` | integer | Yes | Position in the sequence |
| `answer_limit` | integer | Yes | Number of options that can be selected. Use `1` for single-select, `-1` for unlimited, or any number up to the total options. |
| `disable_dropdown` | boolean | No | When `true`, always renders checkbox/radio elements instead of a dropdown. Default: `false` |
| `options` | array | Yes | List of options (minimum 1) |
| `options[].label` | string | Yes | Display text shown to participants |
| `options[].value` | string, number, or boolean | Yes | Value returned in responses |
By default, when there are 5 or more options, a dropdown select element is rendered instead of checkboxes or radio buttons. Set `disable_dropdown: true` to always use checkboxes (for multi-select) or radio buttons (for single-select) regardless of option count.
#### Example
```json
{
"type": "multiple_choice",
"description": "What is the sentiment of this text?",
"order": 1,
"answer_limit": 1,
"options": [
{ "label": "Positive", "value": "positive" },
{ "label": "Neutral", "value": "neutral" },
{ "label": "Negative", "value": "negative" }
]
}
```
#### Multi-select example
```json
{
"type": "multiple_choice",
"description": "Select all topics that apply:",
"order": 1,
"answer_limit": -1,
"options": [
{ "label": "Product quality", "value": "quality" },
{ "label": "Customer service", "value": "service" },
{ "label": "Pricing", "value": "pricing" },
{ "label": "Shipping", "value": "shipping" }
]
}
```
***
### free\_text
An open-ended text input field.
| Field | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------ |
| `type` | string | Yes | `"free_text"` |
| `description` | string | Yes | The question or prompt |
| `order` | integer | Yes | Position in the sequence |
#### Example
```json
{
"type": "free_text",
"description": "Explain your reasoning for the rating above",
"order": 2,
"helper_text": "Be specific about what influenced your decision",
"placeholder_text_input": "e.g. The text contains positive language such as..."
}
```
***
### multiple\_choice\_with\_free\_text
A selection from options, where each option has a heading and an associated free text field. Use this when you need participants to both select an option and provide additional context.
| Field | Type | Required | Description |
| ------------------- | -------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `type` | string | Yes | `"multiple_choice_with_free_text"` |
| `description` | string | Yes | The question or prompt |
| `order` | integer | Yes | Position in the sequence |
| `answer_limit` | integer | Yes | Number of options that can be selected. Use `1` for single-select, `-1` for unlimited, or any number up to the total options. |
| `disable_dropdown` | boolean | No | When `true`, always renders checkbox/radio elements instead of a dropdown. Default: `false` |
| `options` | array | Yes | List of options (minimum 1) |
| `options[].label` | string | Yes | Display text shown to participants |
| `options[].value` | string, number, or boolean | Yes | Value returned in responses |
| `options[].heading` | string | Yes | Section heading that groups this option |
By default, when there are 5 or more options, a dropdown select element is rendered instead of checkboxes or radio buttons. Set `disable_dropdown: true` to always use checkboxes (for multi-select) or radio buttons (for single-select) regardless of option count.
#### Example
```json
{
"type": "multiple_choice_with_free_text",
"description": "Rate the following aspects and provide comments:",
"order": 1,
"answer_limit": -1,
"options": [
{ "label": "Good", "value": "accuracy_good", "heading": "Accuracy" },
{ "label": "Needs improvement", "value": "accuracy_poor", "heading": "Accuracy" },
{ "label": "Good", "value": "clarity_good", "heading": "Clarity" },
{ "label": "Needs improvement", "value": "clarity_poor", "heading": "Clarity" }
]
}
```
In this example, options are grouped under "Accuracy" and "Clarity" headings. Each selection includes an associated free text field for the participant to elaborate.
***
### file\_upload
A file submission field for participants to upload images, documents, or other files.
| Field | Type | Required | Description |
| ------------- | ------- | -------- | ------------------------------------ |
| `type` | string | Yes | `"file_upload"` |
| `description` | string | Yes | The prompt describing what to upload |
| `order` | integer | Yes | Position in the sequence |
#### Example
```json
{
"type": "file_upload",
"description": "Upload a photo of the item",
"order": 3
}
```