> ## 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 Slack Channel Trigger

> Create a Slack channel trigger on an agent (Agent in the Duvo UI): the agent starts a Run whenever a matching message is posted in the channel. An agent can carry one trigger per channel, so call this once per channel. The Slack workspace must be installed for the team AND bound to the agent's live build first (see the Slack bound-workspaces endpoint) — otherwise this returns 400.



## OpenAPI

````yaml /api-reference/openapi.json post /v2/agents/{agent_id}/slack-triggers
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: 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, transformation proposals, and the
      extra-capture-request follow-up loop
paths:
  /v2/agents/{agent_id}/slack-triggers:
    post:
      tags:
        - Triggers
      summary: Create Slack Channel Trigger
      description: >-
        Create a Slack channel trigger on an agent (Agent in the Duvo UI): the
        agent starts a Run whenever a matching message is posted in the channel.
        An agent can carry one trigger per channel, so call this once per
        channel. The Slack workspace must be installed for the team AND bound to
        the agent's live build first (see the Slack bound-workspaces endpoint) —
        otherwise this returns 400.
      operationId: createAgentSlackTrigger
      parameters:
        - schema:
            type: string
            format: uuid
          in: path
          name: agent_id
          required: true
          description: The agent's unique identifier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                trigger_type:
                  type: string
                  enum:
                    - slack_channel_message
                  description: >-
                    Trigger type. Only `slack_channel_message` (a message posted
                    in a Slack channel) is supported here.
                slack_team_id:
                  description: >-
                    Slack workspace (team) ID the channel belongs to, e.g.
                    `T0123ABCD`. Defaults to the team's default installed
                    workspace. Discover the workspaces an agent can use with the
                    bound-workspaces endpoint.
                  type: string
                  minLength: 1
                channel_id:
                  type: string
                  minLength: 1
                  description: Slack channel ID to watch, e.g. `C0123ABCD`.
                channel_name:
                  type: string
                  minLength: 1
                  description: >-
                    Slack channel name shown in Duvo, without the leading `#`,
                    e.g. `support-inbox`.
                match_rule:
                  oneOf:
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - all
                      required:
                        - kind
                      description: Fire on every message posted in the channel.
                    - type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - contains
                        values:
                          description: >-
                            Case-insensitive keywords; a message fires the
                            trigger when it contains any of them. Duplicates are
                            deduplicated.
                          minItems: 1
                          maxItems: 50
                          type: array
                          items:
                            type: string
                            minLength: 1
                            maxLength: 500
                      required:
                        - kind
                        - values
                      description: Fire only on messages containing one of the keywords.
                  description: >-
                    Which channel messages fire the trigger: `{"kind":"all"}`
                    for every message, or
                    `{"kind":"contains","values":["invoice"]}` to match
                    keywords.
                is_private:
                  description: >-
                    Whether the channel is private. Defaults to false. Private
                    channels require the Duvo Slack app to be invited to the
                    channel.
                  type: boolean
                integration_instance_id:
                  description: >-
                    Specific bound Slack connection to run the trigger off. Omit
                    to use your own connection, or pass one returned by the
                    bound-workspaces endpoint.
                  type: string
                  format: uuid
              required:
                - trigger_type
                - channel_id
                - channel_name
                - match_rule
      responses:
        '201':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  slack_trigger:
                    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
                required:
                  - slack_trigger
                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.

````