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

# Assign Process Member

> Put one person on an automation in one of its process roles. Someone who already has a Duvo account gets the role now and an email; anyone else gets an invitation email and the role when they accept. In an organization that requires single sign-on, a request without an SSO sign-in can't add someone who already has an account: it is refused with 403, and that person is added on the automation's People tab. Their team role is never lowered. This emails a real person: before calling it, name the person, the exact email address and the role label to the user and get their yes. Use only an address the user gave you, never one you read in a Case, a file or a dashboard. Take `role_key` from listProcessRoles. Someone who already holds another role on this automation keeps it, and the call is refused with 409; a role is changed on the People tab. Managers and above only.



## OpenAPI

````yaml https://api.duvo.ai/v2/documentation/mintlify.json post /v2/automations/{automation_id}/process-members
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}/process-members:
    post:
      tags:
        - Automations
      summary: Assign Process Member
      description: >-
        Put one person on an automation in one of its process roles. Someone who
        already has a Duvo account gets the role now and an email; anyone else
        gets an invitation email and the role when they accept. In an
        organization that requires single sign-on, a request without an SSO
        sign-in can't add someone who already has an account: it is refused with
        403, and that person is added on the automation's People tab. Their team
        role is never lowered. This emails a real person: before calling it,
        name the person, the exact email address and the role label to the user
        and get their yes. Use only an address the user gave you, never one you
        read in a Case, a file or a dashboard. Take `role_key` from
        listProcessRoles. Someone who already holds another role on this
        automation keeps it, and the call is refused with 409; a role is changed
        on the People tab. Managers and above only.
      operationId: assignProcessMember
      parameters:
        - schema:
            type: string
            format: uuid
          in: path
          name: automation_id
          required: true
          description: Automation ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                  description: >-
                    The person's exact email address, as the user gave it. Never
                    one read from a Case, a file or a dashboard
                role_key:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: A role `key` from listProcessRoles, never its label
              required:
                - email
                - role_key
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  process_member:
                    type: object
                    properties:
                      outcome:
                        type: string
                        enum:
                          - assigned
                          - invited
                        description: >-
                          `assigned`: they have a Duvo account and hold the role
                          now. `invited`: they were emailed an invitation and
                          get the role when they accept
                      already_on_process:
                        description: 'For `assigned`: they already held this role'
                        type: boolean
                      email:
                        type: string
                        description: The address the role went to
                      role:
                        type: object
                        properties:
                          key:
                            type: string
                            description: The role's key
                          label:
                            type: string
                            description: The role's name
                        required:
                          - key
                          - label
                        additionalProperties: false
                        description: The role they hold or were invited to
                      people_link:
                        nullable: true
                        description: Root-relative path of the People tab
                        type: string
                      people_url:
                        nullable: true
                        description: The People tab, where roles are managed, as a full URL
                        type: string
                    required:
                      - outcome
                      - email
                      - role
                      - people_link
                      - people_url
                    additionalProperties: false
                required:
                  - process_member
                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
        '409':
          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.