---
title: "Get Clarity Process"
method: GET
path: "/v2/clarity-v2/processes/{process_id}"
tags: ["ClarityV2"]
---

# Get Clarity Process

`GET /v2/clarity-v2/processes/{process_id}`

Get the v2 read model for a clarity process: the process row (with operational fields like generation_error, generation_progress, custom_prompt), its captures, and the lightweight version arrays for both snapshot tabs. The full payload of any specific snapshot is fetched lazily via the unified per-snapshot detail endpoint (`GET .../snapshots/:kind/:id`); this read model deliberately doesn't carry it so the response stays small.

## Path parameters

- `process_id` string, uuid, required

## Query parameters

- `captures` 'full' | 'lite'

## Response `200`

Default Response

- object
  - `process` object, required
    - `id` string, uuid, required — Clarity process id
    - `team_id` string, uuid, required — Owning team id
    - `user_id` string, uuid, required — Creator user id
    - `name` string, required — Process name
    - `status` 'draft' | 'collecting' | 'generating' | 'generating-current-process' | 'generating-transformation-proposal' | 'review' | 'complete' | 'generation_failed', required — Lifecycle status
    - `visibility` 'team' | 'restricted', required — Process visibility. 'team' is workspace-visible to full members; 'restricted' is visible to the creator, org admins, workspace managers/admins, and accepted grant holders.
    - `version` integer, required — Schema version (always 2 here)
    - `generation_error` string, nullable, required — Error message from the most recent failed generation, if any
    - `generation_progress` object, nullable, required — Live progress checklist while a generation is in flight; null otherwise. Field names inside the payload are camelCase, matching the legacy v1 generation-progress shape.
      - `steps` object[], required
        - `key` string, required
        - `label` string, required
        - `status` 'pending' | 'in_progress' | 'complete', required
        - `order` number, required
        - `count` number
    - `custom_prompt` string, nullable, required — User-supplied custom prompt that steers generation
    - `created_at` string, required — ISO 8601 creation timestamp
    - `updated_at` string, required — ISO 8601 last-update timestamp
  - `current_process_versions` object[], required — All non-deleted current-process snapshots, newest first. Lightweight rows (no `data`) for the version-picker UI. Clients lazy-fetch the live (or selected) snapshot via the per-snapshot detail endpoint.
    - `id` string, uuid, required — Snapshot id
    - `process_id` string, uuid, required — Parent clarity_process id
    - `parent_current_process_id` string, uuid, nullable, required — Parent current-process snapshot this draft forked from
    - `created_at` string, required — ISO 8601 creation timestamp
    - `status` 'live' | 'historic' | 'draft' | 'generating', required — Versioning state. Only one 'live' row per process at a time; drafts may be edited or generating before promotion.
    - `creator_type` 'human' | 'ai', required — Whether this row was created by a user edit ('human') or an AI pipeline run ('ai').
    - `user_id` string, uuid, nullable, required — Creator user id (the human who edited or triggered the run).
    - `sandbox_id` string, nullable, required — E2B sandbox id that produced AI rows; null for user edits.
    - `last_session_id` string, nullable, required — Claude SDK session id for artifact-chat follow-up reuse.
  - `transformation_proposal_versions` object[], required — All non-deleted transformation-proposal snapshots, newest first. Lightweight rows (no `data`) for the version-picker UI.
    - `id` string, uuid, required — Proposal id
    - `process_id` string, uuid, required — Parent clarity_process id
    - `clarity_current_process_id` string, uuid, required — The current-process snapshot this proposal was generated against (provenance only; the live proposal can target any current-process snapshot).
    - `parent_transformation_proposal_id` string, uuid, nullable, required — Parent transformation-proposal snapshot this draft forked from
    - `created_at` string, required — ISO 8601 creation timestamp
    - `status` 'live' | 'historic' | 'draft' | 'generating', required — Versioning state. Only one 'live' row per process at a time; drafts may be edited or generating before promotion.
    - `creator_type` 'human' | 'ai', required — Whether this row was created by a user edit ('human') or an AI pipeline run ('ai').
    - `user_id` string, uuid, nullable, required — Creator user id (the human who edited or triggered the run).
    - `sandbox_id` string, nullable, required — E2B sandbox id that produced AI rows; null for user edits.
    - `last_session_id` string, nullable, required — Claude SDK session id for artifact-chat follow-up reuse.
    - `extra_capture_requests` object[] — Active extra-capture requests for this proposal. Populated only on the live proposal version row in the read-model endpoint so the FE can render assignment UI without a second round-trip; historic versions return an empty array. Other endpoints (e.g. admin snapshot views) may omit it entirely, in which case it is `undefined`. The standalone list endpoint stays the source of truth for paginated/admin views.
      - `id` string, uuid, required — Extra-capture-request id
      - `proposal_id` string, uuid, required — The transformation proposal this request belongs to
      - `step_id` string, required — Step id within the proposal's BPMN graph
      - `capture_id` string, uuid, nullable, required — Capture that fulfilled this request, once one is created
      - `requested_user_id` string, uuid, nullable, required — Assigned team member, if any
      - `status` 'requested' | 'captured' | 'resolved', required — Lifecycle status of the request
      - `gap` string, required — Plain-language gap blocking automation
      - `suggested_prompt` string, nullable, required — LLM-produced suggested capture prompt
      - `priority` 'low' | 'medium' | 'high', required — Priority of fulfilling this request
      - `created_at` string, required — ISO 8601 creation timestamp
      - `updated_at` string, required — ISO 8601 last-update timestamp
  - `captures` object[], required — All captures (videos, interviews, documents) attached to this process. Field names follow the legacy v1 capture wire format (camelCase) so existing capture consumers keep working unchanged.
    - `id` string, uuid, required
    - `processId` string, uuid, required
    - `userId` string, uuid, required
    - `userName` string
    - `type` string, required
    - `videoUrl` string, nullable, required
    - `videoTranscript` string, nullable, required
    - `documentFileName` string, nullable
    - `documentTextMetadata` object, nullable
      - `pages` object[], required
        - `pageNumber` integer, required
        - `startOffset` integer, required
        - `endOffset` integer, required
        - `lines` object[], required
          - `pageNumber` integer, required
          - `lineNumber` integer, required
          - `startOffset` integer, required
          - `endOffset` integer, required
    - `transcript` object[], nullable, required
      - `source` 'ai' | 'user' | 'interviewer', required
      - `speakerName` string
      - `message` string, required
      - `timestamp` number
    - `hasTranscript` boolean
    - `hasVideoTranscript` boolean
    - `transcriptQuestionCount` integer
    - `status` 'pending' | 'recording' | 'processing' | 'complete' | 'failed', required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `401` — Default Response
- `403` — Default Response
- `404` — Default Response
- `500` — Default Response

---

[API](https://skmtc.net/duvo/apis/duvo-public-api.md) · [All operations](https://skmtc.net/duvo/apis/duvo-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/duvo/duvo-public-api/versions/dafcf3d868a9/schema)
