Requesting answers

Custom answer fields

Define the fields each expert fills in. Every completed request returns a JSON Schema for them.

answer_fields is your output schema. Define as many fields as you need. Each expert fills them in, plus a free comment. A preset fills in defaults, which you can add to or replace.

Each entry has a name, a type and a description, plus options for choice fields, unit where it helps, and min / max for scales.

Types

TypeValue an expert returnsExample
textstring"Last two weeks of the quarter"
numbernumber42
range{"low": n, "high": n}{"low": 25, "high": 30}
percentnumber, 0–10025 (never 0.25)
currency{"amount": n, "currency": "USD"}{"amount": 1200000, "currency": "USD"}
dateISO 8601 date"2026-03" or "2026-03-15"
booleantrue / falsetrue
choiceone of options"increase"
multi_choicearray of options["price", "fit"]
scaleinteger within min–max4
listarray of strings["Patient demand"]

Unanswered fields

Any field an expert can't answer is null, and responses[].unanswered lists its name.

Validation and schema

Known fields are typed and validated. An unknown key outside custom returns 400 invalid_request naming the key, so a typo is never silently ignored. Each completed request returns answer_schema, a JSON Schema for responses[].fields in which every property is nullable. For the OpenAPI spec, contact us.

Answer field definition

namestringRequired#
Field name returned in responses[].fields and summary.
typestringRequired#
One of the types on this page.
descriptionstringRequired#
What the expert should answer. Shown to experts.
optionsarrayDepends#
Required for choice and multi_choice.
unitstringOptional#
e.g. %, USD or weeks.
min / maxintegerDepends#
Required for scale.

Next

Reusing past answers →

answer_fieldsjson
{
  "answer_fields": [
    {"name": "robotic_share", "type": "range", "unit": "%", "description": "Share of total knee replacements done with robotic assistance"},
    {"name": "adoption_drivers", "type": "list", "description": "What is driving adoption"},
    {"name": "barriers", "type": "list", "description": "What holds adoption back"},
    {"name": "outlook_3yr", "type": "choice", "options": ["increase", "flat", "decrease"], "description": "Direction over the next 3 years"}
  ]
}
Returned answer_schema (abbreviated)json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": ["robotic_share", "adoption_drivers", "barriers", "outlook_3yr"],
  "additionalProperties": false,
  "properties": {
    "robotic_share": {
      "type": ["object", "null"],
      "required": ["low", "high"],
      "properties": {"low": {"type": "number"}, "high": {"type": "number"}}
    },
    "outlook_3yr": {
      "type": ["string", "null"],
      "enum": ["increase", "flat", "decrease", null]
    }
  }
}