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

# Get Clarity Process

> Get the v2 read model for a clarity process: the process row (with operational fields like generation_error, generation_progress, generation_started_at, generation_last_activity_at, 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.



## OpenAPI

````yaml https://api.duvo.ai/v2/documentation/mintlify.json get /v2/clarity-v2/processes/{process_id}
openapi: 3.0.3
info:
  title: Duvo Public API
  description: >-
    Public API for programmatic access to Duvo. Authenticate with API keys
    created in the Duvo dashboard.


    ## Rate limits


    Requests are counted per API key. Every response advertises the quota with
    the IETF RateLimit fields, so a client can self-throttle without waiting for
    a rejection:


    - `RateLimit-Policy: "default";q=<quota>;w=<window seconds>` — the policy in
    force: `q` requests per `w` seconds.

    - `RateLimit: "default";r=<remaining>;t=<seconds>` — the live state: `r`
    requests left, quota resetting in `t` seconds.

    - Read the quota from the headers rather than hard-coding it; it differs per
    environment.

    - The same numbers are also sent as `ratelimit-limit`, `ratelimit-remaining`
    and `ratelimit-reset`.


    Once the quota is exhausted the API answers `429 Too Many Requests` with
    `Retry-After` set to the seconds to wait; honor it instead of retrying
    immediately.
  version: 1.0.0
servers:
  - url: https://api.duvo.ai
    description: Production server
security: []
tags:
  - name: Runs
    description: Start, monitor, and manage agent runs (Runs in the Duvo UI)
  - name: Sandboxes
    description: Create sandboxes and upload files for agent runs
  - name: Queues
    description: Manage queues and their agent bindings
  - name: Cases
    description: Create, list, and manage cases and their labels within queues
  - name: Case Approvals
    description: Submit decisions on pending case approval requests issued by an agent run
  - name: Case Attachments
    description: Upload, list, download, and remove the files attached to a case
  - name: Automations
    description: >-
      List and manage automations — the workspace container that groups the
      agents and queues making up one end-to-end process
  - name: Agents
    description: Create and manage agents for automation workloads
  - name: Revisions
    description: Create and manage agent revisions — the underlying Setup for an Agent
  - name: Agent Folders
    description: Organize agents into folders
  - name: Agent Memory
    description: Read an agent's memory files (the Memory feature in the Duvo UI)
  - name: Suggestions
    description: >-
      List, apply, and dismiss an Agent's improvement suggestions (the
      suggestions inbox in the Duvo UI)
  - name: Notifications
    description: >-
      List, read, dismiss, and clear the authenticated user's team notifications
      (the Notification Center in the Duvo UI)
  - name: Schedules
    description: List schedules configured for an agent
  - name: Duvo Pulse
    description: >-
      Create, list, iterate on, and delete Duvo Pulse dashboards — live,
      agent-generated visualizations of your Duvo data
  - name: Case Triggers
    description: >-
      Configure case triggers that automatically dispatch agent runs (Runs in
      the Duvo UI) for cases added to a queue
  - name: Triggers
    description: >-
      Configure event triggers that start a Run automatically when an external
      event fires (e.g. an email arrives, a Linear issue is created, or a file
      changes in Google Drive)
  - name: Skills
    description: Manage team and system skills (reusable knowledge packs).
  - name: Files
    description: Manage team files.
  - name: Plugins
    description: Discover plugins that can be referenced from a revision.
  - name: Organizations
    description: Inspect organizations you belong to and the teams within them
  - name: Team
    description: Inspect the team and members associated with the API key
  - name: Invites
    description: >-
      Invite people to a team — one at a time or in bulk, scoped to a Clarity
      process or the whole team — and manage the team's shareable invite link
  - name: Integrations
    description: Browse the team's catalog of available integration types
  - name: Connections
    description: Manage your connected integrations
  - name: Credentials
    description: >-
      Manage logins (domain + username + password + TOTP) used by agents to sign
      in to websites and desktop applications, and attach them to assignment
      revisions
  - name: Secrets
    description: >-
      Manage env-var secrets injected into runs, and attach them to assignment
      revisions. Only metadata is exposed; values are never returned
  - name: Revision Integrations
    description: >-
      Attach integrations to assignment revisions, pin specific connections, and
      link queues
  - name: ClarityV2
    description: >-
      Manage Clarity v2 process snapshots, automation proposals, and the
      extra-capture-request follow-up loop
paths:
  /v2/clarity-v2/processes/{process_id}:
    get:
      tags:
        - ClarityV2
      summary: Get Clarity Process
      description: >-
        Get the v2 read model for a clarity process: the process row (with
        operational fields like generation_error, generation_progress,
        generation_started_at, generation_last_activity_at, 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.
      operationId: getClarityProcess
      parameters:
        - schema:
            default: full
            type: string
            enum:
              - full
              - lite
          in: query
          name: captures
          required: false
          description: >-
            Capture payload mode. `full` (default) embeds each capture's
            transcript content. `lite` omits `transcript`/`videoTranscript`
            (returned as null) and relies on the
            `hasTranscript`/`hasVideoTranscript` flags; fetch content on demand
            via `GET .../captures/:capture_id`.
        - schema:
            type: string
            format: uuid
          in: path
          name: process_id
          required: true
          description: The clarity process id
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  process:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        description: Clarity process id
                      team_id:
                        type: string
                        format: uuid
                        description: Owning team id
                      user_id:
                        type: string
                        format: uuid
                        description: Creator user id
                      name:
                        type: string
                        description: Process name
                      status:
                        type: string
                        enum:
                          - draft
                          - collecting
                          - generating
                          - generating-current-process
                          - generating-transformation-proposal
                          - review
                          - complete
                          - generation_failed
                        description: Lifecycle status
                      visibility:
                        type: string
                        enum:
                          - team
                          - restricted
                        description: >-
                          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:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                        description: Schema version (always 2 here)
                      generation_error:
                        nullable: true
                        description: >-
                          Error message from the most recent failed generation,
                          if any
                        type: string
                      generation_progress:
                        nullable: true
                        description: >-
                          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.
                        type: object
                        properties:
                          steps:
                            type: array
                            items:
                              type: object
                              properties:
                                key:
                                  type: string
                                label:
                                  type: string
                                status:
                                  type: string
                                  enum:
                                    - pending
                                    - in_progress
                                    - complete
                                order:
                                  type: number
                                count:
                                  type: number
                              required:
                                - key
                                - label
                                - status
                                - order
                              additionalProperties: false
                        required:
                          - steps
                        additionalProperties: false
                      generation_started_at:
                        default: null
                        description: >-
                          ISO 8601 timestamp for the most recent generation
                          kickoff; useful for generation-duration reporting
                        nullable: true
                        type: string
                        format: date-time
                      generation_last_activity_at:
                        default: null
                        description: >-
                          ISO 8601 timestamp of the latest process or message
                          activity while generation is in flight; use it for
                          stale-generation detection
                        nullable: true
                        type: string
                        format: date-time
                      custom_prompt:
                        nullable: true
                        description: User-supplied custom prompt that steers generation
                        type: string
                      independent_interviews:
                        default: false
                        description: >-
                          When true, each interview starts fresh: no briefing
                          from earlier interviews and no context from other
                          people's captures
                        type: boolean
                      created_at:
                        type: string
                        description: ISO 8601 creation timestamp
                      updated_at:
                        type: string
                        description: ISO 8601 last-update timestamp
                    required:
                      - id
                      - team_id
                      - user_id
                      - name
                      - status
                      - visibility
                      - version
                      - generation_error
                      - generation_progress
                      - generation_started_at
                      - generation_last_activity_at
                      - custom_prompt
                      - independent_interviews
                      - created_at
                      - updated_at
                    additionalProperties: false
                  current_process_versions:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Snapshot id
                        process_id:
                          type: string
                          format: uuid
                          description: Parent clarity_process id
                        parent_current_process_id:
                          nullable: true
                          description: >-
                            Parent current-process snapshot this draft forked
                            from
                          type: string
                          format: uuid
                        created_at:
                          type: string
                          description: ISO 8601 creation timestamp
                        version_number:
                          type: integer
                          exclusiveMinimum: true
                          maximum: 9007199254740991
                          description: >-
                            1-based position of this snapshot in the process's
                            full chronological history for its kind, counted
                            over every non-deleted row — not the row's index in
                            the returned page.
                        status:
                          type: string
                          enum:
                            - live
                            - historic
                            - draft
                            - generating
                          description: >-
                            Versioning state. Only one 'live' row per process at
                            a time; drafts may be edited or generating before
                            promotion.
                        creator_type:
                          type: string
                          x-extensible-enum:
                            - human
                            - ai
                            - seed
                          description: >-
                            Whether this row was created by a user edit
                            ('human'), an AI pipeline run ('ai'), or a module
                            template's seeded document ('seed'). The value set
                            may grow; see x-extensible-enum.
                        user_id:
                          nullable: true
                          description: >-
                            Creator user id (the human who edited or triggered
                            the run).
                          type: string
                          format: uuid
                        sandbox_id:
                          nullable: true
                          description: >-
                            E2B sandbox id that produced AI rows; null for user
                            edits.
                          type: string
                        last_session_id:
                          nullable: true
                          description: >-
                            Claude SDK session id for artifact-chat follow-up
                            reuse.
                          type: string
                        user_email:
                          description: >-
                            Email of the creator user, resolved from `user_id`;
                            null when the user is unknown or was deleted.
                          nullable: true
                          type: string
                      required:
                        - id
                        - process_id
                        - parent_current_process_id
                        - created_at
                        - version_number
                        - status
                        - creator_type
                        - user_id
                        - sandbox_id
                        - last_session_id
                      additionalProperties: false
                    description: >-
                      The newest page of non-deleted current-process snapshots,
                      newest first (at most CLARITY_VERSIONS_PAGE_SIZE rows).
                      Lightweight rows (no `data`) for the version-picker UI.
                      Clients lazy-fetch the live (or selected) snapshot via the
                      per-snapshot detail endpoint, and page the older history
                      from the snapshots list endpoint.
                  current_process_versions_total:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                    description: >-
                      Total non-deleted current-process snapshots for this
                      process. Compare against the embedded array's length to
                      tell whether older versions remain to be paged in.
                  transformation_proposal_versions:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                          description: Proposal id
                        process_id:
                          type: string
                          format: uuid
                          description: Parent clarity_process id
                        clarity_current_process_id:
                          type: string
                          format: uuid
                          description: >-
                            The current-process snapshot this proposal was
                            generated against (provenance only; the live
                            proposal can target any current-process snapshot).
                        parent_transformation_proposal_id:
                          nullable: true
                          description: >-
                            Parent automation proposal snapshot this draft
                            forked from
                          type: string
                          format: uuid
                        created_at:
                          type: string
                          description: ISO 8601 creation timestamp
                        version_number:
                          type: integer
                          exclusiveMinimum: true
                          maximum: 9007199254740991
                          description: >-
                            1-based position of this snapshot in the process's
                            full chronological history for its kind, counted
                            over every non-deleted row — not the row's index in
                            the returned page.
                        status:
                          type: string
                          enum:
                            - live
                            - historic
                            - draft
                            - generating
                          description: >-
                            Versioning state. Only one 'live' row per process at
                            a time; drafts may be edited or generating before
                            promotion.
                        creator_type:
                          type: string
                          x-extensible-enum:
                            - human
                            - ai
                            - seed
                          description: >-
                            Whether this row was created by a user edit
                            ('human'), an AI pipeline run ('ai'), or a module
                            template's seeded document ('seed'). The value set
                            may grow; see x-extensible-enum.
                        user_id:
                          nullable: true
                          description: >-
                            Creator user id (the human who edited or triggered
                            the run).
                          type: string
                          format: uuid
                        sandbox_id:
                          nullable: true
                          description: >-
                            E2B sandbox id that produced AI rows; null for user
                            edits.
                          type: string
                        last_session_id:
                          nullable: true
                          description: >-
                            Claude SDK session id for artifact-chat follow-up
                            reuse.
                          type: string
                        user_email:
                          description: >-
                            Email of the creator user, resolved from `user_id`;
                            null when the user is unknown or was deleted.
                          nullable: true
                          type: string
                        extra_capture_requests:
                          description: >-
                            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.
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                format: uuid
                                description: Extra-capture-request id
                              proposal_id:
                                type: string
                                format: uuid
                                description: >-
                                  The automation proposal this request belongs
                                  to
                              step_id:
                                type: string
                                description: Step id within the proposal's BPMN graph
                              capture_id:
                                nullable: true
                                description: >-
                                  Capture that fulfilled this request, once one
                                  is created
                                type: string
                                format: uuid
                              requested_user_id:
                                nullable: true
                                description: Assigned team member, if any
                                type: string
                                format: uuid
                              status:
                                type: string
                                enum:
                                  - requested
                                  - captured
                                  - resolved
                                description: Lifecycle status of the request
                              gap:
                                type: string
                                description: Plain-language gap blocking automation
                              suggested_prompt:
                                nullable: true
                                description: LLM-produced suggested capture prompt
                                type: string
                              suggested_person:
                                nullable: true
                                description: >-
                                  Process person nominated to fill this gap in a
                                  follow-up interview, if the agent could
                                  identify one
                                type: object
                                properties:
                                  id:
                                    type: string
                                    format: uuid
                                    description: The suggested clarity_process_person id
                                  user_id:
                                    nullable: true
                                    description: >-
                                      The Duvo user this person maps to, if a
                                      team member
                                    type: string
                                    format: uuid
                                  name:
                                    nullable: true
                                    description: Display name of the suggested person
                                    type: string
                                  role:
                                    nullable: true
                                    description: >-
                                      Role of the suggested person within the
                                      process, if known
                                    type: string
                                  reason:
                                    nullable: true
                                    description: >-
                                      One-line rationale for why this person can
                                      fill the gap
                                    type: string
                                required:
                                  - id
                                  - user_id
                                  - name
                                  - role
                                  - reason
                                additionalProperties: false
                              priority:
                                type: string
                                enum:
                                  - low
                                  - medium
                                  - high
                                description: Priority of fulfilling this request
                              created_at:
                                type: string
                                description: ISO 8601 creation timestamp
                              updated_at:
                                type: string
                                description: ISO 8601 last-update timestamp
                            required:
                              - id
                              - proposal_id
                              - step_id
                              - capture_id
                              - requested_user_id
                              - status
                              - gap
                              - suggested_prompt
                              - suggested_person
                              - priority
                              - created_at
                              - updated_at
                            additionalProperties: false
                      required:
                        - id
                        - process_id
                        - clarity_current_process_id
                        - parent_transformation_proposal_id
                        - created_at
                        - version_number
                        - status
                        - creator_type
                        - user_id
                        - sandbox_id
                        - last_session_id
                      additionalProperties: false
                    description: >-
                      The newest page of non-deleted automation proposal
                      snapshots, newest first (at most
                      CLARITY_VERSIONS_PAGE_SIZE rows). Lightweight rows (no
                      `data`) for the version-picker UI.
                  transformation_proposal_versions_total:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                    description: >-
                      Total non-deleted automation proposal snapshots for this
                      process.
                  removed_captures:
                    description: >-
                      Usable captures removed since each live snapshot was
                      generated. Counts are scoped to base captures or the live
                      proposal's linked captures; deleted content is never
                      returned.
                    type: object
                    properties:
                      current_process:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      transformation_proposal:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                    required:
                      - current_process
                      - transformation_proposal
                    additionalProperties: false
                  captures:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          format: uuid
                        processId:
                          type: string
                          format: uuid
                        userId:
                          type: string
                          format: uuid
                        userName:
                          type: string
                        type:
                          type: string
                          x-extensible-enum:
                            - video
                            - interview
                            - document
                            - screenshare
                            - meeting
                            - image
                        videoUrl:
                          type: string
                          nullable: true
                        videoTranscript:
                          type: string
                          nullable: true
                        documentFileName:
                          type: string
                          nullable: true
                        documentTextMetadata:
                          nullable: true
                          type: object
                          properties:
                            pages:
                              type: array
                              items:
                                type: object
                                properties:
                                  pageNumber:
                                    type: integer
                                    exclusiveMinimum: true
                                    maximum: 9007199254740991
                                  startOffset:
                                    type: integer
                                    minimum: 0
                                    maximum: 9007199254740991
                                  endOffset:
                                    type: integer
                                    minimum: 0
                                    maximum: 9007199254740991
                                  lines:
                                    type: array
                                    items:
                                      type: object
                                      properties:
                                        pageNumber:
                                          type: integer
                                          exclusiveMinimum: true
                                          maximum: 9007199254740991
                                        lineNumber:
                                          type: integer
                                          exclusiveMinimum: true
                                          maximum: 9007199254740991
                                        startOffset:
                                          type: integer
                                          minimum: 0
                                          maximum: 9007199254740991
                                        endOffset:
                                          type: integer
                                          minimum: 0
                                          maximum: 9007199254740991
                                      required:
                                        - pageNumber
                                        - lineNumber
                                        - startOffset
                                        - endOffset
                                      additionalProperties: false
                                required:
                                  - pageNumber
                                  - startOffset
                                  - endOffset
                                  - lines
                                additionalProperties: false
                            sourceArtifactGeneration:
                              type: string
                          required:
                            - pages
                          additionalProperties: false
                        processingFailureReason:
                          nullable: true
                          type: string
                          maxLength: 500
                        transcript:
                          nullable: true
                          type: array
                          items:
                            type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - ai
                                  - user
                                  - interviewer
                              speakerName:
                                type: string
                              message:
                                type: string
                                minLength: 1
                              timestamp:
                                type: number
                            required:
                              - source
                              - message
                            additionalProperties: false
                        hasTranscript:
                          type: boolean
                        hasVideoTranscript:
                          type: boolean
                        transcriptQuestionCount:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        status:
                          type: string
                          enum:
                            - pending
                            - recording
                            - processing
                            - complete
                            - failed
                        isDistillingPolicy:
                          type: boolean
                        usabilityStatus:
                          default: usable
                          type: string
                          enum:
                            - usable
                            - excluded
                        usabilityReason:
                          default: null
                          nullable: true
                          type: string
                        usabilitySource:
                          default: null
                          nullable: true
                          type: string
                          enum:
                            - agent
                            - interviewee
                            - manager
                        usabilityConfidence:
                          default: null
                          nullable: true
                          type: string
                          enum:
                            - high
                            - medium
                            - low
                        createdAt:
                          type: string
                          format: date-time
                        updatedAt:
                          type: string
                          format: date-time
                      required:
                        - id
                        - processId
                        - userId
                        - type
                        - videoUrl
                        - videoTranscript
                        - transcript
                        - status
                        - usabilityStatus
                        - usabilityReason
                        - usabilitySource
                        - usabilityConfidence
                        - createdAt
                        - updatedAt
                      additionalProperties: false
                    description: >-
                      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.
                required:
                  - process
                  - current_process_versions
                  - current_process_versions_total
                  - transformation_proposal_versions
                  - transformation_proposal_versions_total
                  - captures
                additionalProperties: false
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
                additionalProperties: false
        '403':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
                additionalProperties: false
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
                additionalProperties: false
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key authentication. Get your API key from the Duvo dashboard.

````

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