---
title: "Challenge part of a question’s model"
method: POST
path: "/workspaces/{id}/questions/{questionId}/challenges"
tags: ["challenges"]
---

# Challenge part of a question’s model

`POST /workspaces/{id}/questions/{questionId}/challenges`

## Request

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

Anybody who can read the question may: on a public question, anybody signed in.

## Path parameters

- `id` string, uuid, required
- `questionId` string, uuid, required

## Headers

- `Idempotency-Key` string

## Request body

- ChallengeBody
  - `targetKind` 'proposition' | 'evidence' | 'dependency' | 'estimate' | 'break-even', required
  - `targetId` string, uuid, required
  - `objection` string, required

## Response `201`

The challenge, open.

- Challenge
  - `id` string, uuid, required
  - `workspaceId` string, uuid, required
  - `questionId` string, uuid, required
  - `targetKind` 'proposition' | 'evidence' | 'dependency' | 'estimate' | 'break-even', required
  - `targetId` string, uuid, required
  - `objection` string, required
  - `plain` string: SwingFactor’s doubt said plainly: what is wrong, then what would put it right.
  - `suggests` 'fix' | 'tell' | 'fine': The answer SwingFactor recommends: fix (public sources could put it right), tell (only your own knowledge could) or fine.
  - `raisedBy` string, uuid
  - `raisedByName` string
  - `outcome` 'no-change' | 'qualified' | 'material-change' | 'new-uncertainty': Absent while it is open.
  - `validity` 'genuine' | 'partly' | 'not-genuine': Whether it was right, apart from what it did. Absent while open, or not said.
  - `response` string
  - `resolvedBy` string, uuid
  - `resolvedByName` string
  - `resolvedAt` string
  - `requestedChange` string: The change an editor asked for: right, and the model should change. It stays open until a person resolves it, and is kept beside the resolution after.
  - `requestedBy` string, uuid
  - `requestedByName` string
  - `requestedAt` string
  - `changeCount` integer: On the list: changes since it was raised to what it was raised against. A resolution saying the model changed is refused while this is 0.
  - `yours` boolean, required: Whether the caller raised it — and so may withdraw it while it is open and unanswered.
  - `createdAt` string, required
  - `draftId` string, uuid: Set where SwingFactor drafted it.
  - `updatedAt` string, required
  - `links` ChallengeLinks, required: Relative /v1 URLs to follow.
    - `self` string, required
    - `resolution` string, required
    - `changes` string, required
    - `question` string, required

## Other responses

- `401`: No token, or not a valid one: `unauthorized`.
- `404`: Nothing like that in this question.

---

[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)
