> ## Documentation Index
> Fetch the complete documentation index at: https://docs.engini.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Disable trigger

> Unsubscribes at the provider and keeps the row and its event history. A provider error while
unsubscribing is logged, not raised: the caller asked it to stop, and refusing because the remote
call failed would leave it running.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/triggers/{triggerId}/disable
openapi: 3.0.0
info:
  title: Engini DeveloperAPI
  version: v1
  description: 'Merged public developer API spec: Identity + WorkflowApi.'
servers:
  - url: https://api.engini.io
security:
  - Bearer: []
  - ApiKey: []
tags:
  - name: Auth
    description: Identify the caller a Developer API request is authenticated as.
  - name: Applications
    description: >-
      Discover the applications (toolkits) available in Engini and their
      connection requirements.
  - name: Tools
    description: Browse and execute the tools exposed by Engini applications.
  - name: Toolsets
    description: Manage toolsets - named groupings of connections and tools.
  - name: McpServers
    description: >-
      Inspect and maintain MCP servers - the account-wide endpoints that expose
      Engini tools and workflows over the Model Context Protocol. Distinct from
      the MCPClient connection kind, which is Engini consuming a third-party MCP
      server.
  - name: Connections
    description: >-
      Manage connections to applications, including OAuth sign-in and
      default-connection selection.
  - name: Triggers
    description: >-
      Create triggers that fire when something changes in a connected app, and
      manage the destinations their events are delivered to.
paths:
  /v1/triggers/{triggerId}/disable:
    post:
      tags:
        - Triggers
      summary: Disable trigger
      description: >-
        Unsubscribes at the provider and keeps the row and its event history. A
        provider error while

        unsubscribing is logged, not raised: the caller asked it to stop, and
        refusing because the remote

        call failed would leave it running.
      operationId: Triggers_DisableTrigger
      parameters:
        - name: triggerId
          in: path
          required: true
          description: The ti_ public id of the trigger instance.
          schema:
            type: string
          x-position: 1
      responses:
        '200':
          description: The trigger instance, now disabled and unsubscribed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TriggerInstanceView'
        '400':
          description: Bad request - malformed body or invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - missing or invalid bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden - the caller lacks access to the resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found - the resource does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too many requests - rate limit exceeded.
          headers:
            Retry-After:
              description: Number of seconds to wait before retrying.
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error - an unexpected error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - Bearer: []
        - ApiKey: []
components:
  schemas:
    TriggerInstanceView:
      type: object
      description: >-
        A trigger instance as the API returns it. status is derived on every
        read, so it reflects
         whether the trigger is really capturing right now rather than what was last written.
      additionalProperties: false
      required:
        - kind
        - status
      properties:
        id:
          type: string
        kind:
          description: >-
            D6's discriminator. Always api here; ?include=workflow is what emits
            workflow.
          oneOf:
            - $ref: '#/components/schemas/TriggerKind'
        trigger_slug:
          type: string
          nullable: true
        connection_id:
          type: integer
          format: int32
        activity_id:
          type: integer
          format: int32
        destination_id:
          type: integer
          format: int32
          nullable: true
        dedupe_window_hours:
          type: integer
          format: int32
        status:
          description: Derived from the hidden workflow, never read from the stored column.
          oneOf:
            - $ref: '#/components/schemas/TriggerInstanceStatus'
        status_reason:
          description: >-
            Why the instance is errored. Null whenever the instance is not
            blocked - see

            TriggerStatusReason for the frozen vocabulary and the derivation
            ORDER.
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/TriggerStatusReason'
        blocked_since:
          type: string
          description: When the block landed. Null whenever the instance is not blocked.
          format: date-time
          nullable: true
        last_event_at:
          type: string
          format: date-time
          nullable: true
        last_error_at:
          type: string
          format: date-time
          nullable: true
        last_error:
          type: string
          description: >-
            Bounded and credential-scrubbed at the point of writing - see
            TriggerInstance.LastError.
          nullable: true
        next_run_at:
          type: string
          description: >-
            When the polling scheduler will next select this trigger. Null for
            push and manual-webhook flavours.
          format: date-time
          nullable: true
        subscription_count:
          type: integer
          description: >-
            How many subscriptions this trigger holds with the provider. Not
            always 1: a subscription
             covers a single listen column, so N listen_columns create N subscriptions - and
             providers usually meter them.
          format: int32
        created_at:
          type: string
          format: date-time
        config:
          description: The trigger activity's own inputs, as supplied on create/patch.
          nullable: true
        schedule:
          description: >-
            Present only for polling triggers. Carries effective - see
            TriggerScheduleEffectiveDTO.
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/TriggerScheduleDTO'
        listen_columns:
          type: array
          description: Present only for push triggers that declare IsShowFilterChanges.
          nullable: true
          items:
            type: string
        webhook_url:
          type: string
          description: >-
            Where a manual_webhook trigger's caller must POST events - the only
            delivery flavour with

            no provider subscription, so without this the caller has no way to
            learn the endpoint (design

            spec §6, folded in from the §6b UI plan). Null for every other
            delivery flavour, and null even for

            a manual-webhook instance whose step-1 ActivityToken has never been
            persisted - see

            TriggerInstanceService.EnrichAsync for why that gate exists.
          nullable: true
    ErrorResponse:
      type: object
      description: >-
        Unified error envelope for every non-200 response from
        /api/DeveloperAPI/v1/*.

        See applications-tools-spec.md §"Error envelope".
      additionalProperties: false
      required:
        - errorCode
        - message
        - requestId
        - timestamp
        - path
      properties:
        errorCode:
          type: string
          description: Machine-readable error code identifying the failure.
        message:
          type: string
          description: Human-readable error message.
        requestId:
          type: string
          description: Identifier of the request, for support/correlation.
        timestamp:
          type: string
          description: Timestamp when the error occurred (ISO 8601).
        path:
          type: string
          description: Request path that produced the error.
        details:
          type: array
          description: Per-field validation details, when applicable.
          nullable: true
          items:
            $ref: '#/components/schemas/ErrorDetail'
    TriggerKind:
      type: string
      description: >-
        D6's discriminator: an api trigger is a ti_* instance, a workflow
        trigger is a

        designer-built workflow surfaced by ?include=workflow.
      x-enumNames:
        - Api
        - Workflow
      enum:
        - api
        - workflow
    TriggerInstanceStatus:
      type: string
      description: >-
        Whether a trigger is capturing events. A trigger is born Disabled;
        Errored means
         capture has stopped and status_reason says why.
      x-enumNames:
        - Enabled
        - Disabled
        - Errored
      enum:
        - enabled
        - disabled
        - errored
    TriggerStatusReason:
      type: string
      description: >-
        Why a trigger is not capturing. Set alongside status when a trigger is
        errored or
         was disabled for you; null otherwise. A closed set of six values.
      x-enumNames:
        - MaxConsecutiveFailures
        - ActivityLimit
        - Manual
        - SubscribeFailed
        - ConnectionDeleted
        - TriggerTypeRemoved
      enum:
        - max_consecutive_failures
        - activity_limit
        - manual
        - subscribe_failed
        - connection_deleted
        - trigger_type_removed
    TriggerScheduleDTO:
      type: object
      description: >-
        The schedule parameter block: how often a polling trigger runs, plus the
        weekdays and
         time-of-day window it may run in. Polling triggers only; rejected on any other kind.
      additionalProperties: false
      required:
        - frequency
        - interval
      properties:
        frequency:
          $ref: '#/components/schemas/TriggerScheduleFrequency'
        interval:
          type: integer
          description: >-
            In units of Frequency. Must be greater than zero - a zero interval
            saves clean and then never runs.
          format: int32
        start_date:
          type: string
          description: Anchor date. Defaults to today (UTC).
          format: date-time
          nullable: true
        start_time:
          type: string
          description: Anchor time of day, HH:mm. Defaults to 00:00.
          nullable: true
        week_days:
          type: array
          description: >-
            Sun=0. Only read when Frequency is week - and a weekly schedule with
            none selected can never run.
          nullable: true
          items:
            type: integer
            format: int32
        time_frames:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/TriggerTimeFrameDTO'
        effective:
          description: >-
            Read-only echo of what the schedule ACTUALLY does after the runtime
            floor is applied. Never read

            from a request - see TriggerScheduleEffectiveDTO for why it is on
            the response.
          nullable: true
          oneOf:
            - $ref: '#/components/schemas/TriggerScheduleEffectiveDTO'
    ErrorDetail:
      type: object
      description: A single field-level error detail within an ErrorResponse.
      additionalProperties: false
      required:
        - field
        - issue
      properties:
        field:
          type: string
          description: Name of the field the issue relates to.
        issue:
          type: string
          description: Description of the issue with the field.
    TriggerScheduleFrequency:
      type: string
      description: >-
        The unit a polling trigger's interval is counted in - seconds, minutes,
        hours, days, weeks
         or months.
      x-enumNames:
        - Seconds
        - Minute
        - Hour
        - Day
        - Week
        - Month
      enum:
        - seconds
        - minute
        - hour
        - day
        - week
        - month
    TriggerTimeFrameDTO:
      type: object
      additionalProperties: false
      properties:
        start_hour:
          type: string
          description: HH:mm.
        end_hour:
          type: string
          description: HH:mm.
        every_minutes:
          type: integer
          description: ALWAYS minutes, whatever the parent frequency is.
          format: int32
    TriggerScheduleEffectiveDTO:
      type: object
      description: >-
        Read-only echo of what the schedule ACTUALLY does after the runtime
        floor is applied. Never read
         from a request - see TriggerScheduleEffectiveDTO for why it is on the response.
      additionalProperties: false
      required:
        - frequency
        - interval
        - clamped
      properties:
        frequency:
          $ref: '#/components/schemas/TriggerScheduleFrequency'
        interval:
          type: integer
          description: In units of Frequency, after the runtime floor.
          format: int32
        min_interval_minutes:
          type: integer
          description: >-
            The floor that applied, in minutes - this account's plan, not the
            platform default.
          format: int32
        clamped:
          type: boolean
          description: >-
            True when the runtime floor moved the requested interval, i.e. the
            schedule does not run at the requested rate.
  securitySchemes:
    Bearer:
      type: http
      description: Enter your JWT token
      scheme: bearer
      bearerFormat: JWT
    ApiKey:
      type: apiKey
      description: >-
        Opaque Developer API key (prefix `eng_`). Authenticates as the key's
        owner and resolves the account automatically.
      name: x-api-key
      in: header

````