---
title: "Start asking a question, a step at a time"
method: POST
path: "/workspaces/{id}/asking"
tags: ["questions"]
---

# Start asking a question, a step at a time

`POST /workspaces/{id}/asking`

## Request

- Base URL: `https://api.swingfactor.ai/v1`
- URL: `https://api.swingfactor.ai/v1/workspaces/{id}/asking`
- Auth: HTTP bearer

The wizard’s first step, left: the question is written, still being asked, and the month’s allowance spent. Its workspace’s alone, and not drafted, until it is asked.

## Path parameters

- `id` string, uuid, required

## Headers

- `Idempotency-Key` string

## Request body

- SaveAskingBody
  - `title` string
  - `framing` string
  - `visibility` 'public' | 'private': Defaults from the plan.
  - `depth` 'standard' | 'full': standard (the default) or full: what is shown up front and what a draft proposes.
  - `step` 'options' | 'scenarios' | 'dimensions' | 'sources' | 'view' | 'ask', required: The furthest step reached. It never goes back.
  - `options` object[]: The options, whole: with its id, one is changed in place; one left out is deleted.
    - `label` string, required
    - `description` string
    - `position` integer
    - `id` string, uuid
    - `suggested` boolean: SwingFactor suggested it while the question was asked, and the person accepted it.
  - `scenarios` object[]
    - `label` string, required
    - `description` string
    - `id` string, uuid
    - `suggested` boolean: SwingFactor suggested it while the question was asked, and the person accepted it.
  - `rejectedOptions` object[]
    - `label` string, required
    - `description` string
  - `rejectedScenarios` object[]
    - `label` string, required
    - `description` string
  - `dimensions` object[]: The factors, whole, in order: one left out is deleted.
    - `label` string, required
    - `description` string
    - `suggested` boolean: SwingFactor suggested it while the question was asked, and the person accepted it.
    - `id` string, uuid
  - `rejectedDimensions` object[]
    - `label` string, required
    - `description` string
  - `scenariosStated` 'none' | '': none: no scenarios apply, and any named are taken off; empty: not said.
  - `sourceIds` string[]: The library items put to it, whole: one left out is taken off.

## Response `201`

The question being asked, and what the wizard holds.

- Asking
  - `question` Question, required
    - `id` string, uuid, required
    - `workspaceId` string, uuid, required
    - `createdBy` string, uuid
    - `title` string, required
    - `framing` string
    - `visibility` 'public' | 'private', required: Public is readable by anybody signed in; private by the workspace alone.
    - `evidenceCutoff` string: The evidence cut-off, YYYY-MM-DD: what came after it is listed apart.
    - `constraintKind` 'time' | 'money' | 'people' | 'access' | 'deadline': What limits the investigation. Only with one may a person prioritise the open matters.
    - `constraintNote` string
    - `constraintDeadline` string: For a deadline: YYYY-MM-DD.
    - `availability` 'engaged' | 'not-material': engaged: whether each option could be had and kept is examined here; not-material: the question raises no material availability issue. Absent: not stated.
    - `scenariosStated` 'none': none: the question says no scenarios apply. Absent: not stated.
    - `depth` 'standard' | 'full', required: standard or full: what is shown up front and what a draft proposes.
    - `askingStep` 'options' | 'scenarios' | 'dimensions' | 'sources' | 'view' | 'ask': Still being asked: the furthest step the wizard reached. Its workspace’s alone, and not drafted, until it is asked. Absent once asked.
    - `createdAt` string, required
    - `updatedAt` string, required
    - `links` QuestionLinks, required: Relative /v1 URLs to follow.
      - `self` string, required
      - `options` string, required
      - `propositions` string, required
      - `evidence` string, required
      - `dependencies` string, required
      - `variables` string, required
      - `investigation` string, required
      - `challenges` string, required
      - `history` string, required
      - `bearings` string, required
      - `symmetry` string, required
      - `briefing` string, required
      - `snapshots` string, required
      - `sources` string, required
      - `workspace` string, required
  - `options` object[], required
    - `id` string, uuid, required
    - `label` string, required
    - `description` string
    - `suggested` boolean, required
    - `status` 'proposed' | 'accepted' | 'rejected', required
  - `scenarios` object[], required
    - `id` string, uuid, required
    - `label` string, required
    - `description` string
    - `suggested` boolean, required
    - `status` 'proposed' | 'accepted' | 'rejected', required
  - `dimensions` object[], required: The factors, in order.
    - `id` string, uuid, required
    - `label` string, required
    - `description` string
    - `suggested` boolean, required
    - `status` 'proposed' | 'accepted' | 'rejected', required
  - `sources` object[], required
    - `id` string, uuid, required
    - `origin` 'upload' | 'web', required
    - `name` string, required

## Other responses

- `400`: The plan does not allow it: `plan_limit`.
- `401`: No token, or not a valid one: `unauthorized`.
- `403`: Viewers cannot ask.

---

[API](https://skmtc.dev/swingfactor/apis/swingfactor-api.md) · [All operations](https://skmtc.dev/swingfactor/apis/swingfactor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/swingfactor/apis/swingfactor-api/revisions/c2fe881a39c3?raw)
