Skip to main content
PUT
Save Decision Engine Message Settings

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

flowId
string
required

The UUID of the flow

messageId
string
required

The UUID of the message

Body

application/json

The settings of a message within a flow: eligibility and send limits

maxSendsPerUser
number<double>
maxSendsPerUserWindowDays
number<double>
minOtherMessagesInBetween
number<double>
firstEligibleSendDate
string
lastEligibleSendDate
string
eligibilityFilter
any

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
object[]

Day and time slots in which the message may be sent. All slots are eligible when omitted.

attributionCampaignIds
string[]

Additional destination campaign IDs whose outcomes are attributed to this message

Response

Ok

Decision Engine Message (Public API)

id
string
required
name
string
required
channelId
string
required
config
object
required
tags
object
guardrails
object

Guardrail fields on a message (max sends, eligibility dates, etc.)

settings
object

The settings of a message within a flow: eligibility and send limits

state
object

The state of a message within a flow

content
string

Message body. Only raw channel messages have content.

variables
object[]
createdAt
string<date-time>
updatedAt
string<date-time>