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

# Disable Decision Engine Message

> Disable a message in a flow so the flow stops recommending it



## OpenAPI

````yaml https://api.hightouch.io/api/swagger.json post /decision-engine/flow/{flowId}/messages/{messageId}/disable
openapi: 3.0.0
info:
  title: Hightouch API
  version: 1.0.0
  description: Hightouch Public Rest API to access syncs, models, sources and destinations
  contact:
    name: Hightouch
    url: https://hightouch.com
servers:
  - url: https://api.hightouch.com/api/v1
security: []
paths:
  /decision-engine/flow/{flowId}/messages/{messageId}/disable:
    post:
      summary: Disable Decision Engine Message
      description: Disable a message in a flow so the flow stops recommending it
      operationId: DisableMessage
      parameters:
        - description: The UUID of the flow
          in: path
          name: flowId
          required: true
          schema:
            type: string
        - description: The UUID of the message
          in: path
          name: messageId
          required: true
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DecisionEngineFlowMessageDisable'
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/DecisionEngineMessage'
                  - $ref: '#/components/schemas/DecisionEngineErrorResponse'
                  - $ref: '#/components/schemas/ValidateErrorJSON'
                  - $ref: '#/components/schemas/InternalServerError'
                nullable: true
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecisionEngineErrorResponse'
        '500':
          description: Something went wrong
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/DecisionEngineErrorResponse'
                  - $ref: '#/components/schemas/InternalServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    DecisionEngineFlowMessageDisable:
      description: Request body for disabling a message in a flow
      properties:
        clearUpcomingRecommendations:
          type: boolean
          description: >-
            Also remove recommendations of this message that are scheduled but
            not yet sent
      type: object
      additionalProperties: false
    DecisionEngineMessage:
      description: Decision Engine Message (Public API)
      properties:
        id:
          type: string
        name:
          type: string
        channelId:
          type: string
        config:
          properties: {}
          additionalProperties: {}
          type: object
        tags:
          properties: {}
          additionalProperties: {}
          type: object
        guardrails:
          $ref: '#/components/schemas/DecisionEngineMessageGuardrails'
        settings:
          $ref: '#/components/schemas/DecisionEngineFlowMessageSettings'
        state:
          $ref: '#/components/schemas/DecisionEngineFlowMessageState'
        content:
          type: string
          description: Message body. Only raw channel messages have content.
        variables:
          items:
            $ref: '#/components/schemas/DecisionEngineVariable'
          type: array
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - id
        - name
        - channelId
        - config
      type: object
      additionalProperties: false
    DecisionEngineErrorResponse:
      properties:
        message:
          type: string
          description: Why the request failed.
      required:
        - message
      type: object
      additionalProperties: false
    ValidateErrorJSON:
      properties:
        message:
          type: string
          enum:
            - Validation failed
          nullable: false
        details:
          properties: {}
          additionalProperties: {}
          type: object
      required:
        - message
        - details
      type: object
      additionalProperties: false
    InternalServerError:
      type: string
      enum:
        - Internal Server Error
      nullable: false
    DecisionEngineMessageGuardrails:
      description: Guardrail fields on a message (max sends, eligibility dates, etc.)
      properties:
        maxSendsPerUser:
          type: number
          format: double
        maxSendsPerUserWindowDays:
          type: number
          format: double
        minOtherMessagesInBetween:
          type: number
          format: double
        firstEligibleSendDate:
          type: string
        lastEligibleSendDate:
          type: string
      type: object
      additionalProperties: false
    DecisionEngineFlowMessageSettings:
      description: 'The settings of a message within a flow: eligibility and send limits'
      properties:
        maxSendsPerUser:
          type: number
          format: double
        maxSendsPerUserWindowDays:
          type: number
          format: double
        minOtherMessagesInBetween:
          type: number
          format: double
        firstEligibleSendDate:
          type: string
        lastEligibleSendDate:
          type: string
        eligibilityFilter:
          description: >-
            Audience condition a user must match to be eligible for the message,

            in the same format as the flow's audience filter.


            The root is an `and` or `or` condition with a `conditions` list.

            `{"type": "and", "conditions": []}` makes every user eligible.

            The request fails with 422 when a model, relationship, or column in
            the filter does not exist.


            Condition types:

            - `and`, `or`: `conditions` is a list of conditions.

            - `property`: compares a column with `value`. Set `propertyType` to
            `string`, `number`, `boolean`, `timestamp`, `date`, or
            `json-array-strings`.

            - `number_of`: counts the related rows through `relationshipId` and
            compares the count with `value`.
              `subconditions` is a list of `and` or `or` conditions on the columns of the related model.
            - `event`: counts the events of `eventModelId` through
            `relationshipId`. `window` limits the events to a time range.
              `funnelCondition` requires that the user did (`didPerform: true`) or did not do a second event after the first one.
            - `segment_set`: includes (`includes: true`) or excludes the users
            of the audience `modelId`.


            Columns in `property`:

            - A column of a model: `{"type": "raw", "modelId": "<model ID>",
            "name": "<column>"}`. The model must be the flow's parent model,
              or the model of the enclosing `number_of` or `event` condition.
            - A column of a related model: `{"type": "related", "path":
            ["<relationship ID>"], "column": {"type": "raw", ...}}`.
              The path starts from the flow's parent model.
            - A trait: `{"type": "transformed", "column": {"type": "trait",
            "traitDefinitionId": "<trait ID>", "conditions": []}}`.


            Operators and values:

            - `string`: `=`, `<>`, `contains`, `notcontains`, `startswith`,
            `notstartswith`, `endswith`, `notendswith` take a list of strings,
            such as `["US", "CA"]`.

            - `number`: `=`, `<>` take a list of numbers. `>`, `>=`, `<`, `<=`
            take a number. `between` takes `{"min": 1, "max": 9}`.

            - `boolean`: `=`, `<>` take `true` or `false`.

            - `timestamp`, `date`: `before`, `after` take a time, such as
            `"2026-10-28 09:00:00"`, with `"timeType": "absolute"`.
              `within`, `notwithin`, and also `before`, `after`, take an interval, such as
              `{"interval": "day", "quantity": 30, "direction": "backward"}`, with `"timeType": "relative"`.
              The interval is `minute`, `hour`, `day`, `week`, `month`, or `year`. The direction is `backward` for the past or `forward` for the future.
            - `json-array-strings`: `contains`, `notcontains`, `contains-like`
            take a list of strings.

            - All types: `exists`, `notexists` take `null`. `string` also has
            `existsandisnotempty`.

            - `number_of` and `event` counts: `=`, `<>`, `>`, `>=`, `<`, `<=`
            take a number.
        eligibleScheduleVariants:
          items:
            $ref: '#/components/schemas/DecisionEngineScheduleVariant'
          type: array
          description: >-
            Day and time slots in which the message may be sent. All slots are
            eligible when omitted.
        attributionCampaignIds:
          items:
            type: string
          type: array
          description: >-
            Additional destination campaign IDs whose outcomes are attributed to
            this message
      type: object
      additionalProperties: false
    DecisionEngineFlowMessageState:
      description: The state of a message within a flow
      properties:
        enabled:
          type: boolean
          description: Whether the flow can recommend this message
        status:
          $ref: '#/components/schemas/DecisionEngineFlowMessageStatus'
        disabledAt:
          type: string
          format: date-time
        audienceSize:
          type: number
          format: double
          description: >-
            Number of users in the flow audience who are eligible for the
            message
        audienceSizeComputedAt:
          type: string
          format: date-time
      required:
        - enabled
        - status
      type: object
      additionalProperties: false
    DecisionEngineVariable:
      description: Message variable (Public API)
      properties:
        name:
          type: string
          description: The variable name (must be unique within a message)
        config:
          properties:
            localizationEnabled:
              type: boolean
              description: >-
                When true, the Decision Engine uses each variant's localeValues
                to select

                locale-appropriate content at runtime. When false or omitted,
                only the

                default variant value is used, even if localeValues are present.
            maxSendsPerUserWindowDays:
              type: number
              format: double
              description: Rolling window in days for the maxSendsPerUser limit
            maxSendsPerUser:
              type: number
              format: double
              description: >-
                Maximum number of times this variable's variants can be sent to
                a single user
          type: object
        variants:
          items:
            $ref: '#/components/schemas/DecisionEngineVariableVariant'
          type: array
      required:
        - name
        - variants
      type: object
      additionalProperties: false
    DecisionEngineScheduleVariant:
      description: A day and time slot in which a message may be sent
      properties:
        day:
          type: string
          enum:
            - sunday
            - monday
            - tuesday
            - wednesday
            - thursday
            - friday
            - saturday
        time:
          type: string
          enum:
            - midnight
            - late_night
            - early_morning
            - morning
            - afternoon
            - mid_afternoon
            - evening
            - night
            - hour_00
            - hour_01
            - hour_02
            - hour_03
            - hour_04
            - hour_05
            - hour_06
            - hour_07
            - hour_08
            - hour_09
            - hour_10
            - hour_11
            - hour_12
            - hour_13
            - hour_14
            - hour_15
            - hour_16
            - hour_17
            - hour_18
            - hour_19
            - hour_20
            - hour_21
            - hour_22
            - hour_23
          description: >-
            A slot of 3 hours, or a slot of 1 hour from `hour_00` to `hour_23`
            when the flow uses hourly timing
      required:
        - day
        - time
      type: object
      additionalProperties: false
    DecisionEngineFlowMessageStatus:
      type: string
      enum:
        - draft
        - enabled
        - disabled
    DecisionEngineVariableVariant:
      description: Variant within a message variable (Public API)
      properties:
        value:
          type: string
          description: The default (non-localized) value for this variant
        tags:
          properties: {}
          additionalProperties:
            type: string
          type: object
          description: Key-value tags for categorizing this variant
        firstEligibleSendDate:
          type: string
          description: Earliest date this variant is eligible to be sent (ISO 8601)
        lastEligibleSendDate:
          type: string
          description: Latest date this variant is eligible to be sent (ISO 8601)
        userAudienceFilter: {}
        localeValues:
          properties: {}
          additionalProperties:
            type: string
          type: object
          description: >-
            Localized values for this variant, keyed by locale code (e.g.
            "en-US", "de-DE").

            These are only used at runtime when `localizationEnabled` is true on
            the parent variable.

            You can stage translations by providing localeValues while leaving
            localizationEnabled unset or false.
      required:
        - value
      type: object
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Bearer

````