---
description: "Supported category question types, option formats, attendee answer payloads and historical registration data."
group: "Resources"
order: 17
---

# Question types and answers

Match each registration question to its definition and answer format.

Create definitions with `CategoryField` through [category questions](/en-us/docs/ticket-questions.md). Submit answers under their question UUID inside `OrderLine` through [attendee management](/en-us/docs/attendee-management.md). Definition options and attendee answers have different shapes.

## Supported types {#supported-types}

| Definition type | Definition options | Attendee answer |
| --- | --- | --- |
| `text`, `organization`, `branche`, `job_description`, `textarea` | Omit options. | String. The named types are text presets. |
| `numeric` | Omit options. | Numeric text, such as `"12"`. |
| `email` | Omit options. | Email string. |
| `date` | Omit options. | `"2027-06-20"` in the organizer editor. |
| `time` | Omit options. | `"09:30"`. |
| `dateTime` | Omit options. | `"2027-06-20T09:30"`. Saved as a server-local SQL timestamp; detail converts it back to the editor format. |
| `checkbox` | Omit options. | `"1"` checked, `"0"` unchecked. |
| `select` | Scalar option labels. | One option label as a string. |
| `singlechoice` | Scalar option labels. | Array containing one selected label, or an object for an Other answer. |
| `multiplechoice` | Scalar option labels. | Array of selected labels, or an object for an Other answer. `[]` clears a selection. |
| `workshop` | Option rows containing `question` and optional `amount`. | The option key as a string, such as `"0"`; preserve returned keys. |
| `paid` | `{"price":"5.00"}`; the signed amount represents a charge or discount. | Purchased value/name/options snapshot. The attendee save action preserves it and does not change the charge. |
| `donation` | Omit options. | Amount collected by checkout. The organizer editor displays it as read-only; use checkout for financial changes. |
| `label` | Omit options. | Display content; no editable answer is needed. |
| `file` | Omit options. | Attachment context. Attendee JSON save skips file answers; it is not a file-upload endpoint. |
| `day_choice`, `day_indicator` | Event day choices; `day_indicator` can retain scalar options. | A key from the definition's `dayChoices`. Empty day-choice value means not attending that day. |

Type names are case-sensitive, including `dateTime`. Company day-choice support and the event's configured days must be enabled for day questions; each category has an event-dependent day-question limit. Historical snapshots can contain `day_choice_hidden`, `radio` or `datetime`; these are not accepted new definition types. Preserve historical data rather than recreating its definition with an unsupported type.

## Definition options {#definition-options}

```
{"CategoryField":{"name":"Dietary preference","type":"multiplechoice","options":["Vegetarian","Gluten free"],"other":1}}
{"CategoryField":{"name":"Session","type":"workshop","options":{"0":{"question":"Morning workshop","amount":20},"1":{"question":"Afternoon workshop","amount":15}}}}
{"CategoryField":{"name":"Printed programme","type":"paid","options":{"price":"5.00"}}}
```

Choice labels must be scalar strings or numbers; nested choice objects are rejected. Workshop rows only accept `question` and `amount`. Paid options only accept `price`. Empty labels are removed; keys are retained, so a filtered array can return as an object. Re-read definitions after saving and use the returned labels or keys.

## Answer payloads {#answer-payloads}

Replace these synthetic UUIDs with question IDs from `order_lines/edit_data`. This example answers a multiple-choice question, a single-choice question and a date/time question.

```
{"OrderLine":{
  "77777777-7777-4777-8777-777777777777":["Vegetarian","Gluten free"],
  "88888888-8888-4888-8888-888888888888":["Morning"],
  "99999999-9999-4999-8999-999999999999":"2027-06-20T09:30"
}}
```

For a question with `other:1`, use the editor's object format. Numeric keys contain selected labels, `choose_other:"other"` selects Other, and `other_value` contains the entered text.

```
{"OrderLine":{"77777777-7777-4777-8777-777777777777":{"0":"Vegetarian","choose_other":"other","other_value":"No nuts"}}}
```

## Validation and history {#validation-and-history}

Definition names require 2–255 characters. `mandatory`, `on_ticket`, `selfservice_disabled` and `other` use 0/1; `answer_amount` configures the question's answer count. Mandatory flags belong to checkout validation. The organizer save path deliberately skips extra-question validation, so validate choices and formats against the returned definition in your integration.

Omitting an answer keeps its stored value; submitting an empty value changes it. Existing attendees can retain different labels/options from the live category. Use their current or historical definitions from detail, preserve paid snapshots, and re-read the saved answers. Updating live definitions and refreshing purchased ticket snapshots are separate operations.
