> ## 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 Automation Readiness

> What still has to be set up before an automation can run on real work. Call this first for a readiness question ("what do I still need to set up", "is it ready to run", "why isn't it running") and before checking an automation's Connections, Logins or Secrets one by one. Each of `items` is `{ key, label, status: ok | missing | broken, detail, link, link_tab }` and covers one of: required Policy questions still open, Connections with no working account pinned or that need reconnecting, Logins and Secrets (present or missing, never their values), Queue slots with no Queue linked, Queues with routing off, no Agent or an Agent with no live version, what starts it (a Trigger, a Schedule, or Cases added to a routed Queue), the live revision and a pending draft, and whether it is still a demo. While a Module is being set up and its proposal has not been approved, `items` covers only its setup: required Policy questions, the current process map (`setup:process_map`) and the automation proposal (`setup:automation_proposal`), or, when its setup progress is unavailable, one `setup` item linked to the setup's Get started page, whose approval builds the automation; Connections, Queues and what starts it are checked again once the approved proposal is being built. Lead with what is `missing` or `broken`, each with its own `link` (named by `link_tab`); never build a link. Quote counts from `summary`, including `connections_to_fix`, rather than counting items. `ready` is null when the caller can't read the Policy; `note` then says what to tell the user. A Connection only the caller can see counts for the caller. When `links_note` is present, give no link to the automation at all. Each `link` is a path in the Duvo web app; give the user the full URL beside it (`url`, and `urls` for `links`).



## OpenAPI

````yaml https://api.duvo.ai/v2/documentation/mintlify.json get /v2/automations/{automation_id}/readiness
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/automations/{automation_id}/readiness:
    get:
      tags:
        - Automations
      summary: Get Automation Readiness
      description: >-
        What still has to be set up before an automation can run on real work.
        Call this first for a readiness question ("what do I still need to set
        up", "is it ready to run", "why isn't it running") and before checking
        an automation's Connections, Logins or Secrets one by one. Each of
        `items` is `{ key, label, status: ok | missing | broken, detail, link,
        link_tab }` and covers one of: required Policy questions still open,
        Connections with no working account pinned or that need reconnecting,
        Logins and Secrets (present or missing, never their values), Queue slots
        with no Queue linked, Queues with routing off, no Agent or an Agent with
        no live version, what starts it (a Trigger, a Schedule, or Cases added
        to a routed Queue), the live revision and a pending draft, and whether
        it is still a demo. While a Module is being set up and its proposal has
        not been approved, `items` covers only its setup: required Policy
        questions, the current process map (`setup:process_map`) and the
        automation proposal (`setup:automation_proposal`), or, when its setup
        progress is unavailable, one `setup` item linked to the setup's Get
        started page, whose approval builds the automation; Connections, Queues
        and what starts it are checked again once the approved proposal is being
        built. Lead with what is `missing` or `broken`, each with its own `link`
        (named by `link_tab`); never build a link. Quote counts from `summary`,
        including `connections_to_fix`, rather than counting items. `ready` is
        null when the caller can't read the Policy; `note` then says what to
        tell the user. A Connection only the caller can see counts for the
        caller. When `links_note` is present, give no link to the automation at
        all. Each `link` is a path in the Duvo web app; give the user the full
        URL beside it (`url`, and `urls` for `links`).
      operationId: getAutomationReadiness
      parameters:
        - schema:
            type: string
            format: uuid
          in: path
          name: automation_id
          required: true
          description: Automation ID
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  readiness:
                    type: object
                    properties:
                      automation:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          name:
                            type: string
                        required:
                          - id
                          - name
                        additionalProperties: false
                      ready:
                        nullable: true
                        description: >-
                          True when every item is ok. Null when the caller can't
                          read the Policy, so readiness can't be judged; `note`
                          then says so
                        type: boolean
                      note:
                        description: >-
                          Present when `ready` is null: what to tell the person
                          asking
                        type: string
                      summary:
                        type: object
                        properties:
                          ok:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          missing:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          broken:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          connections_to_fix:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                            description: How many Connection items are missing or broken
                        required:
                          - ok
                          - missing
                          - broken
                          - connections_to_fix
                        additionalProperties: false
                        description: >-
                          Counts over `items`; quote these rather than
                          recounting
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            key:
                              type: string
                              description: >-
                                Stable id of the check, such as `policy`,
                                `connection:<agent>:<integration>` or `trigger`
                            label:
                              type: string
                              description: What the check covers, in the product's words
                            status:
                              type: string
                              enum:
                                - ok
                                - missing
                                - broken
                              description: >-
                                `ok`, `missing` (not set up yet) or `broken`
                                (set up, failing)
                            detail:
                              type: string
                              description: What was found, written for the person asking
                            link:
                              nullable: true
                              description: >-
                                Root-relative path of the tab where this item is
                                fixed; null when there is none for this viewer
                              type: string
                            link_tab:
                              nullable: true
                              description: >-
                                The name of the tab `link` opens, as the tab bar
                                shows it
                              type: string
                            url:
                              nullable: true
                              type: string
                              description: >-
                                The same page as `link`, as a full web-app URL
                                to give the user
                          required:
                            - key
                            - label
                            - status
                            - detail
                            - link
                            - link_tab
                            - url
                          additionalProperties: false
                      links:
                        type: object
                        properties:
                          overview:
                            type: string
                            description: Root-relative path that opens this tab
                          process:
                            type: string
                            description: Root-relative path that opens this tab
                          past_runs:
                            description: >-
                              The Past Runs tab. A Module automation has none:
                              its Runs are on each Agent, opened from
                              agents_queues
                            type: string
                          requests:
                            description: >-
                              The Requests tab: the questions and approvals this
                              automation's runs raised, and answering them
                            type: string
                          policy:
                            type: string
                            description: Root-relative path that opens this tab
                          people:
                            description: >-
                              The People tab: the process roles, meaning who
                              runs, reviews and manages the work. Its own tab,
                              not part of Policy
                            type: string
                          agents_queues:
                            description: >-
                              The Automation tab: its Agents, Queues and the
                              flow between them
                            type: string
                          revisions:
                            description: >-
                              The Revisions tab. A Module automation has none:
                              say so, and do not point to another tab or to the
                              Agents for revision history
                            type: string
                          setup:
                            type: string
                            description: Root-relative path that opens this tab
                          setup_start:
                            type: string
                            description: Root-relative path that opens this tab
                          upload_files:
                            type: string
                            description: Root-relative path that opens this tab
                          interview:
                            type: string
                            description: Root-relative path that opens this tab
                          automation_proposal:
                            type: string
                            description: Root-relative path that opens this tab
                          dashboards:
                            type: array
                            items:
                              type: object
                              properties:
                                artifact_id:
                                  type: string
                                  format: uuid
                                  description: The dashboard
                                name:
                                  type: string
                                  description: The dashboard's tab label
                                link:
                                  type: string
                                  description: Root-relative path that opens this tab
                              required:
                                - artifact_id
                                - name
                                - link
                              additionalProperties: false
                            description: >-
                              One link per dashboard on this automation's tab
                              bar
                        required:
                          - dashboards
                        additionalProperties: false
                        description: >-
                          Links to the automation's tabs that exist right now,
                          for this viewer. When the user asks where something on
                          the automation is, answer with one of these. A tab the
                          automation does not have is absent: say it has none.
                          Copy these into a reply; never build an automation URL
                          by hand.
                      links_note:
                        description: >-
                          Present when no link to the automation is available
                          for this caller: give no link to it or any of its tabs
                        type: string
                      urls:
                        type: object
                        properties:
                          overview:
                            type: string
                            description: Root-relative path that opens this tab
                          process:
                            type: string
                            description: Root-relative path that opens this tab
                          past_runs:
                            description: >-
                              The Past Runs tab. A Module automation has none:
                              its Runs are on each Agent, opened from
                              agents_queues
                            type: string
                          requests:
                            description: >-
                              The Requests tab: the questions and approvals this
                              automation's runs raised, and answering them
                            type: string
                          policy:
                            type: string
                            description: Root-relative path that opens this tab
                          people:
                            description: >-
                              The People tab: the process roles, meaning who
                              runs, reviews and manages the work. Its own tab,
                              not part of Policy
                            type: string
                          agents_queues:
                            description: >-
                              The Automation tab: its Agents, Queues and the
                              flow between them
                            type: string
                          revisions:
                            description: >-
                              The Revisions tab. A Module automation has none:
                              say so, and do not point to another tab or to the
                              Agents for revision history
                            type: string
                          setup:
                            type: string
                            description: Root-relative path that opens this tab
                          setup_start:
                            type: string
                            description: Root-relative path that opens this tab
                          upload_files:
                            type: string
                            description: Root-relative path that opens this tab
                          interview:
                            type: string
                            description: Root-relative path that opens this tab
                          automation_proposal:
                            type: string
                            description: Root-relative path that opens this tab
                          dashboards:
                            type: array
                            items:
                              type: object
                              properties:
                                artifact_id:
                                  type: string
                                  format: uuid
                                  description: The dashboard
                                name:
                                  type: string
                                  description: The dashboard's tab label
                                link:
                                  type: string
                                  description: Root-relative path that opens this tab
                              required:
                                - artifact_id
                                - name
                                - link
                              additionalProperties: false
                            description: >-
                              One link per dashboard on this automation's tab
                              bar
                        required:
                          - dashboards
                        additionalProperties: false
                        description: '`links` as full web-app URLs; give these to the user'
                    required:
                      - automation
                      - ready
                      - summary
                      - items
                      - links
                      - urls
                    additionalProperties: false
                required:
                  - readiness
                additionalProperties: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '403':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    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.