> ## 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.

# Create Automation

> Create a new automation. Its first agent is created alongside it so the caller lands on something editable; `first_agent` seeds that agent's name, configuration, and connections instead of the defaults. On a team on revision semantics the automation holds a single draft revision and no live revision, with the agent's first build bound into that draft, and the first activation makes the draft revision 1; on any other team the automation is a bare container and the build stands on its own.



## OpenAPI

````yaml https://api.duvo.ai/v2/documentation/mintlify.json post /v2/teams/{teamId}/automations
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/teams/{teamId}/automations:
    post:
      tags:
        - Automations
      summary: Create Automation
      description: >-
        Create a new automation. Its first agent is created alongside it so the
        caller lands on something editable; `first_agent` seeds that agent's
        name, configuration, and connections instead of the defaults. On a team
        on revision semantics the automation holds a single draft revision and
        no live revision, with the agent's first build bound into that draft,
        and the first activation makes the draft revision 1; on any other team
        the automation is a bare container and the build stands on its own.
      operationId: createAutomation
      parameters:
        - name: teamId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 100
                  description: Human-readable automation name.
                first_agent:
                  description: >-
                    Seeds the automation's first agent, for example from an
                    agent template. Anything left out takes the platform
                    default.
                  type: object
                  properties:
                    name:
                      description: >-
                        Name of the first agent. Defaults to the platform's
                        default agent name.
                      type: string
                      minLength: 1
                    config:
                      description: >-
                        Configuration of the first agent's build (latest schema
                        version only). Defaults to the platform's default agent
                        configuration.
                      type: object
                      properties:
                        version:
                          type: string
                          enum:
                            - v2
                          description: >-
                            Schema version discriminator — must be "v2" for the
                            current schema
                        data:
                          type: object
                          properties:
                            models:
                              type: object
                              properties:
                                agent:
                                  type: object
                                  properties:
                                    model:
                                      type: string
                                      x-extensible-enum:
                                        - claude-haiku-4-5-20251001
                                        - claude-sonnet-5
                                        - claude-sonnet-5[1m]
                                        - claude-sonnet-5-5
                                        - claude-sonnet-5-5[1m]
                                        - claude-opus-5
                                        - claude-opus-5[1m]
                                        - claude-opus-5-5
                                        - claude-opus-5-5[1m]
                                        - kimi-k3
                                        - kimi-k3-duvo
                                        - glm-5.3-flash
                                        - deepseek-v4-flash
                                        - minimax-m3
                                        - d1-max
                                        - duvo-1-max
                                        - duvo-1-max-sonnet-1m
                                        - duvo-1-max-sonnet-4.5
                                        - duvo-1-max-sonnet-4.5-1m
                                        - duvo-1-max-opus
                                        - duvo-1-max-opus-4.5
                                        - gpt-4.1
                                        - gpt-4o
                                        - gpt-4o-mini
                                        - gpt-5
                                        - gpt-5.1
                                        - claude-sonnet-4-20250514
                                        - claude-sonnet-4-20250514[1m]
                                        - claude-sonnet-4-5-20250929
                                        - claude-sonnet-4-5-20250929[1m]
                                        - claude-sonnet-4-6
                                        - claude-sonnet-4-6[1m]
                                        - claude-opus-4-1-20250805
                                        - claude-opus-4-5-20251101
                                        - claude-opus-4-6
                                        - claude-opus-4-6[1m]
                                        - claude-opus-4-7
                                        - claude-opus-4-7[1m]
                                        - claude-opus-4-8
                                        - claude-opus-4-8[1m]
                                        - glm-5.2
                                        - qwen3.6-27b
                                        - qwen3.8-max
                                      description: >-
                                        Model identifier used for the primary
                                        agent loop (Claude, or an OSS model when
                                        the team's oss_models flag — or
                                        oss_models_public for the public subset
                                        — is enabled)
                                  required:
                                    - model
                                  description: Primary agent model configuration
                                browsing:
                                  type: object
                                  properties:
                                    provider:
                                      type: string
                                      enum:
                                        - google
                                        - anthropic
                                      description: >-
                                        Provider backing the
                                        browsing/computer-use model
                                    model:
                                      type: string
                                      enum:
                                        - gemini-2.5-pro
                                        - gemini-2.5-flash
                                        - gemini-3-pro-preview
                                        - claude-haiku-4-5
                                        - claude-sonnet-4-5
                                        - claude-opus-4-1
                                      description: >-
                                        Model identifier for the browsing
                                        provider
                                  required:
                                    - provider
                                    - model
                                  description: Browsing/computer-use model configuration
                              required:
                                - agent
                                - browsing
                              description: >-
                                Model configuration for each capability the
                                agent uses
                            input:
                              anyOf:
                                - type: string
                                - type: array
                                  items:
                                    type: object
                                    properties:
                                      role:
                                        type: string
                                        enum:
                                          - system
                                          - user
                                          - assistant
                                      content:
                                        anyOf:
                                          - type: string
                                          - type: array
                                            items:
                                              anyOf:
                                                - type: object
                                                  properties:
                                                    type:
                                                      type: string
                                                      enum:
                                                        - input_text
                                                    text:
                                                      type: string
                                                  required:
                                                    - type
                                                    - text
                                                - type: object
                                                  properties:
                                                    type:
                                                      type: string
                                                      enum:
                                                        - input_image
                                                    detail:
                                                      nullable: true
                                                      type: string
                                                      enum:
                                                        - low
                                                        - high
                                                        - auto
                                                    file_id:
                                                      type: string
                                                      nullable: true
                                                    url:
                                                      type: string
                                                      nullable: true
                                                  required:
                                                    - type
                                                - type: object
                                                  properties:
                                                    type:
                                                      type: string
                                                      enum:
                                                        - input_file
                                                    file_id:
                                                      type: string
                                                  required:
                                                    - type
                                                    - file_id
                                      type:
                                        nullable: true
                                        type: string
                                        enum:
                                          - message
                                    required:
                                      - role
                                      - content
                              description: >-
                                Initial agent instructions — either a single
                                system prompt string or a list of structured
                                messages
                            files:
                              default: []
                              description: >-
                                Team files that should be available to the
                                agent, each given as the relative file path
                                returned in the `path` field of `GET
                                /v2/teams/{teamId}/files` (for example
                                `report.md` or `folder/doc.md`) — not the `id`
                                field, which is a GCS object identifier.
                              nullable: true
                              type: array
                              items:
                                type: string
                            skills:
                              default: []
                              description: >-
                                IDs of skills (team or system) that should be
                                available to the agent
                              nullable: true
                              type: array
                              items:
                                type: string
                            plugins:
                              default: []
                              description: >-
                                Plugins to load — either a built-in plugin name
                                (e.g. "code-review") or a GitHub URL (e.g.
                                "https://github.com/owner/repo")
                              nullable: true
                              type: array
                              items:
                                type: string
                            subAgents:
                              default: []
                              description: >-
                                Retired — Sub-Assignments was removed. Accepted
                                for backwards compatibility and ignored.
                              nullable: true
                              type: array
                              items:
                                type: string
                                format: uuid
                            options:
                              description: >-
                                Optional runtime options controlling how the
                                agent executes
                              type: object
                              properties:
                                browserProvider:
                                  description: Browser infrastructure provider
                                  type: string
                                  enum:
                                    - browserbase
                                    - browser-use
                                evaluationSchemaId:
                                  description: >-
                                    ID of the evaluation schema to apply to runs
                                    of this agent
                                  type: string
                                benchmarkExpectedOutcomes:
                                  description: >-
                                    Expected outcomes used when running
                                    benchmark scenarios
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      description:
                                        type: string
                                        description: >-
                                          Human-readable description of the
                                          expected outcome
                                      criteria:
                                        type: string
                                        description: >-
                                          Pass/fail criteria used to evaluate the
                                          outcome
                                    required:
                                      - description
                                      - criteria
                                supervisedMode:
                                  description: >-
                                    Run the agent under Duvo's permission
                                    classifier: every tool call is classified as
                                    allow/deny/ask, with 'ask' routed to
                                    human-in-the-loop approval. Mutually
                                    exclusive with browsing and computer-use
                                    connections.
                                  type: boolean
                              additionalProperties: {}
                          required:
                            - models
                            - input
                          description: Agent configuration payload
                      required:
                        - version
                        - data
                    integration_slugs:
                      description: >-
                        Connection types to attach to the first agent's build,
                        in place of the platform's default connections. A type
                        the team has no connection for is skipped.
                      type: array
                      items:
                        type: string
                        enum:
                          - googlecalendar
                          - google-calendar
                          - gmail
                          - slack
                          - googledocs
                          - googlesheets
                          - googledrive
                          - firecrawl
                          - exa
                          - exa-search
                          - exa-company-search
                          - exa-people-search
                          - deep-research
                          - system
                          - browser-agent
                          - browser-agent-devtools
                          - notion
                          - linear
                          - confluence
                          - custom_mcp
                          - user_mcp
                          - snowflake
                          - sharepoint
                          - teams
                          - onedrive
                          - bigquery
                          - databricks
                          - netsuite
                          - outlook
                          - microsoft-calendar
                          - excel
                          - word
                          - saps4hana
                          - md365
                          - businesscentral
                          - oraclefusion
                          - workday
                          - coupa
                          - signavio
                          - sap-ecc
                          - msteams
                          - human-in-the-loop
                          - email-attachments-reader
                          - document-processor
                          - google-docs
                          - google-sheets
                          - google-drive
                          - outbound-call
                          - case-queue-producer
                          - case-queue-consumer
                          - handover
                          - shopify
                          - hubspot
                          - zendesk
                          - intercom
                          - powerbi
                          - salesforce
                          - pipedrive
                          - tableau
                          - image-generation
                          - forecasting
                          - supabase
                          - attio
                          - amplitude
                          - websets
                          - firecrawl-platform
                          - duvo-computer-use
                          - duvo-computer-use-rdp
                          - eu-commodity-prices
                          - asana
                          - jira
                          - ssh
                          - scheduling
                          - github
                          - linear-native
                          - notion-native
                          - granola
                          - apify
                          - bamboohr
                          - edi
                          - maersk
                          - infor-nexus
                          - dhl
                          - fedex
                          - ups
                          - dsv
                          - trinity-logistics
                          - ontrac
                          - dachser
                          - hellmann
                          - omni-logistics
                          - ceva-logistics
                          - dpd
                          - canada-post
                          - o9
                          - manhattan
                          - blue-yonder
              required:
                - name
      responses:
        '201':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  automation:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      name:
                        type: string
                      agent_count:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      queue_count:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      created_at:
                        type: string
                      updated_at:
                        type: string
                      folder_id:
                        default: null
                        description: >-
                          The agent folder this automation sits in, or null when
                          it sits at the root. Automations reuse the team's
                          existing agent_folder tree rather than a parallel one,
                          so a converted team keeps the grouping it already had.
                          Defaulted rather than required for the same reason
                          is_setting_up is: the client parses this response, and
                          a backend that predates the column must not throw and
                          take the automation's name down with it.
                        nullable: true
                        type: string
                      pinned_at:
                        default: null
                        description: >-
                          When the calling user pinned this automation to the
                          top of their Automations list, or null when they have
                          not. A pin is per user, like an Agent pin: teammates
                          each keep their own. Defaulted rather than required
                          for the same reason folder_id is.
                        nullable: true
                        type: string
                      is_setting_up:
                        default: false
                        description: >-
                          True while this Module automation's setup is under
                          way. setup_started_at is stamped when the team starts
                          setting up (and again by reopen-setup) and cleared
                          when setup finishes, so this reads as currently in
                          setup, not as a record of a past one. Read together
                          with is_demo, which lives on the detail response: both
                          true is a demo with a build under way; is_demo alone
                          is a demo nobody has begun. On the summary rather than
                          the detail so that a client holding only a list,
                          create or patch response knows the state too, and so
                          every write onto the shared automation collection
                          carries it. Defaulted rather than required: the client
                          parses this response, so a backend that predates the
                          column must not throw and take the automation's name
                          down with it, and nothing on the wire has always meant
                          an automation nobody has set up.
                        type: boolean
                      setup_step:
                        default: null
                        description: >-
                          The key of the latest confirmed setup step, null until
                          Start Setup is pressed. The server only ever advances
                          it forward, so reopening a setup can resume where the
                          team got to. Cleared with the rest of the setup state
                          when setup finishes.
                        nullable: true
                        type: string
                      setup_build_chat_id:
                        default: null
                        description: >-
                          The Ask Duvo chat building the automation from the
                          approved proposal, or null while setup has not reached
                          the build. Not a hard reference: the chat can be
                          deleted while this still names it, which the client
                          reads as no build yet.
                        nullable: true
                        type: string
                        format: uuid
                      setup_progress:
                        default: null
                        description: >-
                          The setup facts behind the tile's Setup badge —
                          captures uploaded, the team's own process map
                          generated, a proposal written — or null while the
                          automation is not being set up (and whenever it has no
                          module process for the facts to hang off).
                        nullable: true
                        type: object
                        properties:
                          has_captures:
                            type: boolean
                          has_process_map:
                            type: boolean
                          has_proposal:
                            type: boolean
                        required:
                          - has_captures
                          - has_process_map
                          - has_proposal
                        additionalProperties: false
                      viewer_can_edit:
                        description: >-
                          Whether the caller may change this automation. An
                          automation takes its agents' ownership rule: a Builder
                          may edit one whose every agent they created, and Lead
                          Builder or above may edit any. Sent by the list and
                          detail endpoints; absent from create and update
                          responses, where the client falls back to the caller's
                          role.
                        type: boolean
                    required:
                      - id
                      - name
                      - agent_count
                      - queue_count
                      - created_at
                      - updated_at
                      - folder_id
                      - pinned_at
                      - is_setting_up
                      - setup_step
                      - setup_build_chat_id
                      - setup_progress
                    additionalProperties: false
                  draft_revision_id:
                    nullable: true
                    description: >-
                      The draft revision the new automation was created with, or
                      null when the team isn't on revision semantics and the
                      automation is a bare container. A manually created
                      automation has no live revision until it is first
                      activated, so this is where its first agent build belongs.
                    type: string
                    format: uuid
                  first_agent_id:
                    type: string
                    format: uuid
                    description: >-
                      The automation's first agent, created alongside it with
                      its first build bound into the draft revision, so the
                      caller can open it directly.
                required:
                  - automation
                  - draft_revision_id
                  - first_agent_id
                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
        '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.