---
title: "Where a draft's review stands: pending, ready, skipped or failed."
method: GET
path: "/v1/question-reviews/{hash}"
tags: ["drafts"]
---

# Where a draft's review stands: pending, ready, skipped or failed.

`GET /v1/question-reviews/{hash}`

## Request

- Base URL: `https://api.50heads.com`
- URL: `https://api.50heads.com/v1/question-reviews/{hash}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.50heads.com/authorize`, token URL `https://auth.50heads.com/token`; client credentials, token URL `https://auth.50heads.com/token`, scopes: `questions:write`)

## Path parameters

- `hash` string, required

## Response `200`

OK

- QuestionReviewStartResponse
  - `inputHash` string, required
  - `status` 'pending' | 'ready' | 'skipped' | 'failed', required
  - `review` object
    - `status` 'ok' | 'skipped' | 'unavailable', required
    - `rubricVersion` string, required
    - `model` string
    - `inputHash` string
    - `overall` 'pass' | 'suggest'
    - `scores` object
      - `clarity` integer, required
      - `singleIdea` integer, required
      - `neutral` integer, required
      - `options` integer, required
      - `answerable` integer, required
      - `length` integer, required
    - `suggestions` object[]
      - `id` string, required
      - `code` 'tidy' | 'spelling' | 'clarity' | 'single_idea' | 'leading' | 'overlap' | 'neither' | 'length' | 'jargon' | 'not_a_preference' | 'show_the_thing' | 'parallel' | 'policy', required
      - `severity` 'info' | 'suggest' | 'strong', required
      - `field` string, required
      - `reason` string, required
      - `op` union
        - object
          - `type` 'replace_text', required
          - `text` string, required
        - object
          - `type` 'replace_context', required
          - `context` string, required
        - object
          - `type` 'replace_stimulus_text', required
          - `text` string, required
        - object
          - `type` 'replace_option', required
          - `index` integer, required
          - `label` string, required
        - object
          - `type` 'add_option', required
          - `label` string, required
          - `index` integer
        - object
          - `type` 'remove_option', required
          - `index` integer, required
        - object
          - `type` 'reorder_options', required
          - `order` integer[], required
        - object
          - `type` 'set_neither', required
          - `neither` boolean, required
        - object
          - `type` 'set_type', required
          - `questionType` 'single_choice' | 'multi_choice' | 'ab_image' | 'pairwise' | 'scale_1_5' | 'ranking' | 'yes_no' | 'yes_mostly_no' | 'free_text' | 'click_test' | 'reaction' | 'rate_each', required
        - object
          - `type` 'tidy', required
          - `text` string
          - `context` string
          - `stimulusText` string
          - `options` string[]
    - `skippedReason` 'flag_off' | 'incomplete' | 'no_text' | 'content_refused' | 'ai_off' | 'asks_killed'
  - `retryMs` integer

## Other responses

- `401`: No key or token, or it expired or was revoked.
- `403`: The key or token lacks the scope (`insufficient_scope`), or the action is not allowed.
- `404`: No such question, endpoint or delivery on this account.
- `429`: Too many requests; wait for Retry-After.

---

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