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

# Upsert Agent Trigger

> Create or update the authenticated user's trigger for an integration on an agent. The integration must already be connected to the agent (its OAuth connection set up in the Duvo dashboard). Set `enabled: false` to pause a trigger without deleting it.



## OpenAPI

````yaml /api-reference/openapi.json put /v2/triggers/{agentId}
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.
  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: 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: 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: 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, transformation proposals, and the
      extra-capture-request follow-up loop
paths:
  /v2/triggers/{agentId}:
    put:
      tags:
        - Triggers
      summary: Upsert Agent Trigger
      description: >-
        Create or update the authenticated user's trigger for an integration on
        an agent. The integration must already be connected to the agent (its
        OAuth connection set up in the Duvo dashboard). Set `enabled: false` to
        pause a trigger without deleting it.
      operationId: upsertAgentTrigger
      parameters:
        - schema:
            type: string
            format: uuid
          in: path
          name: agentId
          required: true
          description: The agent's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                integration_slug:
                  type: string
                  description: >-
                    Integration slug the trigger fires for (e.g. `gmail`,
                    `outlook`, `linear-native`, `google-drive`).
                trigger_type:
                  type: string
                  description: >-
                    Trigger type within the integration (e.g. `email_received`).
                    Discover valid values via the trigger types endpoint.
                filter_config:
                  description: >-
                    Integration-specific filter config (e.g. sender/subject
                    filters). Shape comes from the integration's filter schema.
                  default: {}
                  type: object
                  additionalProperties: {}
                enabled:
                  default: true
                  description: Whether the trigger is active. Defaults to true.
                  type: boolean
              required:
                - integration_slug
                - trigger_type
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  agent_id:
                    type: string
                  user_id:
                    type: string
                  integration_slug:
                    type: string
                  trigger_type:
                    type: string
                  filter_config:
                    type: object
                    additionalProperties: {}
                  integration_instance_id:
                    type: string
                  enabled:
                    type: boolean
                  auto_disabled_at:
                    nullable: true
                    type: string
                  auto_disabled_reason:
                    nullable: true
                    type: string
                  consecutive_missing_connection_failures:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  first_missing_connection_failure_at:
                    nullable: true
                    type: string
                  last_missing_connection_failure_at:
                    nullable: true
                    type: string
                  created_at:
                    type: string
                  updated_at:
                    type: string
                required:
                  - id
                  - agent_id
                  - user_id
                  - integration_slug
                  - trigger_type
                  - filter_config
                  - integration_instance_id
                  - enabled
                  - auto_disabled_at
                  - auto_disabled_reason
                  - consecutive_missing_connection_failures
                  - first_missing_connection_failure_at
                  - last_missing_connection_failure_at
                  - created_at
                  - updated_at
                additionalProperties: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
                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
        '409':
          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.

````