response_type that controls how the voice agent captures and stores the answer. There are six types. Each type also has common fields that every question can use.
Fields common to every question
string
required
The wording of the question as the agent will understand it. Also used as the key in
form_data if name is omitted.string
required
One of
string, number, date, boolean, single-select, or multi-select. Determines how the agent captures and stores the answer.string
A short, machine-friendly key used in
form_data and form_status. Auto-generated from the question wording if omitted. Set this explicitly when you want a stable key that won’t change if you rephrase the question.boolean
When
true, the call ends if no valid answer is obtained after all retries. The conversation status is set to failed.string
The exact words the agent speaks to ask this question. If omitted, the agent generates its own phrasing from the
question text.string
What the agent says when moving past an unanswered optional question. Useful for maintaining conversational flow.
string
Per-question extra prompt instructions. Applied in addition to the agent-level
ai_instructions.Validation object
Enforces a specific format on the answer. See Validation for the full rule reference.
RetryConfig object
Controls how many times the agent re-asks the question and what happens when retries run out. See Retries.
array of strings
A list of answer values that trigger the
screened_out conversation status and end the call immediately. Use this to implement eligibility screening.string
Places this question inside a conditional branch. The question is only asked when the branch condition evaluates to true. See Branching.
The six response types
string
Free-text response. The agent transcribes whatever the caller says and stores it as-is. Extra fields: None. Stored as: A plain string — e.g.,"I have had a headache for three days".
number
A numeric response. The agent extracts the number from the caller’s speech. Extra fields:"integer" | "decimal"
Controls whether the stored value is rounded to an integer or preserved as a decimal.
42 or 3.5.
date
A date response in DD-MM-YYYY format. Extra fields: None. Stored as: A string in"DD-MM-YYYY" format — e.g., "25-12-2024". The agent handles natural-language date expressions (“last Tuesday”, “the fifth of March”) and normalises them.
boolean
A yes/no response. Optionally, you can use custom labels instead oftrue/false.
Extra fields:
object
Custom display labels for the two states. Provide
{ "true": "Yes", "false": "No" } or any other pair of strings.true or false when no labels are set. When labels are set, stored as the matching label text — e.g., "Yes".
Patching: When you manually correct a boolean answer via the API, you can send true, false, or either label text (e.g., "Yes" or "No").
single-select
The caller chooses one option from a predefined list. Extra fields:array of strings
required
The list of options the caller can choose from — e.g.,
["Morning", "Afternoon", "Evening"]."Morning".
Patching: When correcting a single-select answer via the API, send the option text (case-insensitive) or the 0-based index of the option (e.g., 0 for the first option).
multi-select
The caller can choose one or more options from a predefined list. Extra fields:array of strings
required
The list of options the caller can choose from — e.g.,
["Headache", "Cough", "Fever"]."Headache, Cough". Not a JSON array.
Patching: When correcting a multi-select answer via the API, send a list of 0-based indices (e.g., [0, 2]) or a comma-separated string of option texts (e.g., "Headache, Fever").