> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getversive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Estimate study length

> How long a planned study will take, before you build it

Estimates how long a study will take from its interview mode and planned questions, before the study exists. Nothing is created. Requires the `studies:read` scope.

Timings come from Versive's per-question timing model, calibrated on production interviews. The estimate adds up every planned question in order, plus a one-time setup allowance for the mode. A plan has no logic yet, so participants who skip questions through branching finish sooner. Optional questions count at 60% of their time.

Once the study is built, its estimated length follows the longest path through its logic.

### Body

**mode** `string` *required*

The interview mode: `TEXT_ONLY`, `TEXT_AND_VOICE`, `VOICE_ONLY`, `VOICE_WITH_PREVIEW`, `VIDEO`, `VOICE_AND_VIDEO`, or `VOICE_TO_VOICE`.

**questions** `array` *required*

The planned questions in order, 1 to 200.

**properties**

**type** `string` *required*

The question type, e.g. `question`, `exploratory`, `multipleChoice`, `nps`, `websiteTest`.

**required** `boolean`

`false` for an optional question. Defaults to `true`.

**props** `object`

Timing inputs only: `turnBudget` (2–25) for an `exploratory` question, defaulting to 8 turns; `requireTimer` and `timer` (1–3600 seconds) for a `message` with a required wait.

### Response

**mode** `string`

The mode the estimate used.

**question\_count** `integer`

Number of planned questions.

**estimated\_minutes** `object`

`{ min_minutes, max_minutes }`: the estimated length range in minutes.

**mode\_overhead\_seconds** `integer`

The one-time setup allowance included for the mode.

**questions** `array`

One `{ index, type, required, min_seconds, max_seconds }` per planned question, in order.

**note** `string`

How to read the estimate.

An unknown question type or mode, an empty plan, or a timing value out of range returns `422`.

```bash cURL theme={null}
curl https://api.getversive.com/api/v1/studies/length-estimate \
  -H "Authorization: Bearer $VERSIVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "TEXT_ONLY",
    "questions": [
      { "type": "question" },
      { "type": "multipleChoice" },
      { "type": "exploratory", "props": { "turnBudget": 12 } },
      { "type": "message", "props": { "requireTimer": true, "timer": 30 } },
      { "type": "nps", "required": false }
    ]
  }'
```

```json 200 theme={null}
{
  "mode": "TEXT_ONLY",
  "question_count": 5,
  "estimated_minutes": { "min_minutes": 4.6, "max_minutes": 11.5 },
  "mode_overhead_seconds": 10,
  "questions": [
    { "index": 0, "type": "question", "required": true, "min_seconds": 55, "max_seconds": 150 },
    { "index": 1, "type": "multipleChoice", "required": true, "min_seconds": 10, "max_seconds": 25 },
    { "index": 2, "type": "exploratory", "required": true, "min_seconds": 165, "max_seconds": 450 },
    { "index": 3, "type": "message", "required": true, "min_seconds": 35, "max_seconds": 45 },
    { "index": 4, "type": "nps", "required": false, "min_seconds": 3, "max_seconds": 9 }
  ],
  "note": "A straight sum over every planned question: there is no branching at plan time, so participants who skip questions through logic finish sooner. Optional questions count at 60%. Once the study is built, review_study gives the estimate for its longest path."
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.