Hightouch Decision Engine API
The Decision Engine API from Hightouch — 5 operation(s) for decision engine.
The Decision Engine API from Hightouch — 5 operation(s) for decision engine.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/hightouch-decision-engine-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Hightouch Decision Engine 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
tags:
- name: Decision Engine
paths:
/decision-engine/flow/{flowId}:
get:
operationId: GetFlow
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/DecisionEngineFlow'
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
examples:
Example 1:
value:
id: 550e8400-e29b-41d4-a716-446655440000
name: My Flow
workspaceId: 1
decisionEngineId: 660e8400-e29b-41d4-a716-446655440001
audienceId: 100
status: active
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
description: Retrieve a decision engine flow by ID
summary: Get Decision Engine Flow
security:
- bearerAuth: []
parameters:
- description: The UUID of the flow
in: path
name: flowId
required: true
schema:
type: string
tags:
- Decision Engine
/decision-engine/flows:
get:
operationId: ListFlows
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- properties:
hasMore:
type: boolean
data:
items:
$ref: '#/components/schemas/DecisionEngineFlow'
type: array
required:
- hasMore
- data
type: object
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
examples:
Example 1:
value:
data:
- id: 550e8400-e29b-41d4-a716-446655440000
name: My Flow
workspaceId: 1
decisionEngineId: 660e8400-e29b-41d4-a716-446655440001
audienceId: 100
status: active
hasMore: false
'401':
description: Unauthorized
'403':
description: Forbidden
description: List decision engine flows in the workspace
summary: List Decision Engine Flows
security:
- bearerAuth: []
parameters:
- description: optional filter by flow name
in: query
name: name
required: false
schema:
type: string
- description: max results (default 100)
in: query
name: limit
required: false
schema:
default: 100
format: double
type: number
- description: pagination offset
in: query
name: offset
required: false
schema:
default: 0
format: double
type: number
- description: sort field
in: query
name: orderBy
required: false
schema:
default: id
type: string
enum:
- id
- name
tags:
- Decision Engine
/decision-engine/flow/{flowId}/messages:
get:
operationId: ListMessages
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- properties:
hasMore:
type: boolean
data:
items:
$ref: '#/components/schemas/DecisionEngineMessage'
type: array
required:
- hasMore
- data
type: object
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
description: List messages for a flow
summary: List Decision Engine Messages
security:
- bearerAuth: []
parameters:
- description: The UUID of the flow
in: path
name: flowId
required: true
schema:
type: string
- in: query
name: limit
required: false
schema:
default: 100
format: double
type: number
- in: query
name: offset
required: false
schema:
default: 0
format: double
type: number
tags:
- Decision Engine
post:
operationId: CreateMessage
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/DecisionEngineMessage'
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
'422':
description: Validation Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateErrorJSON'
'500':
description: Something went wrong
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
description: Create a message in a flow
summary: Create Decision Engine Message
security:
- bearerAuth: []
parameters:
- description: The UUID of the flow
in: path
name: flowId
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionEngineMessageCreate'
tags:
- Decision Engine
/decision-engine/flow/{flowId}/messages/{messageId}:
get:
operationId: GetMessage
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/DecisionEngineMessage'
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
description: Get a single message by flow and message ID
summary: Get Decision Engine Message
security:
- bearerAuth: []
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
tags:
- Decision Engine
patch:
operationId: UpdateMessage
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/DecisionEngineMessage'
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
'422':
description: Validation Failed
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateErrorJSON'
'500':
description: Something went wrong
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
description: Update a message
summary: Update Decision Engine Message
security:
- bearerAuth: []
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: true
content:
application/json:
schema:
$ref: '#/components/schemas/DecisionEngineMessageUpdate'
tags:
- Decision Engine
/decision-engine/flow/{flowId}/run:
post:
operationId: RunFlow
responses:
'200':
description: Ok
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/DecisionEngineRunResponse'
- $ref: '#/components/schemas/ValidateErrorJSON'
- $ref: '#/components/schemas/InternalServerError'
examples:
Example 1:
value:
flowsEnqueued: 1
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not found
'500':
description: Something went wrong
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
description: Trigger a decision engine run for a specific flow
summary: Trigger Decision Engine Flow Run
security:
- bearerAuth: []
parameters:
- description: The UUID of the flow
in: path
name: flowId
required: true
schema:
type: string
tags:
- Decision Engine
components:
schemas:
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
DecisionEngineRunResponse:
properties:
flowsEnqueued:
type: number
format: double
description: Number of flows that were enqueued for execution
required:
- flowsEnqueued
type: object
additionalProperties: false
DecisionEngineMessageCreate:
description: Request body for creating a Decision Engine message
properties:
name:
type: string
channelId:
type: string
config:
properties: {}
additionalProperties: {}
type: object
tags:
properties: {}
additionalProperties: {}
type: object
guardrails:
$ref: '#/components/schemas/DecisionEngineMessageGuardrails'
variables:
items:
$ref: '#/components/schemas/DecisionEngineVariable'
type: array
required:
- name
- channelId
- config
type: object
additionalProperties: false
ValidateErrorJSON:
properties:
message:
type: string
enum:
- Validation failed
details:
properties: {}
additionalProperties: {}
type: object
required:
- message
- details
type: object
additionalProperties: 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
InternalServerError:
type: string
enum:
- Internal Server Error
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'
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
DecisionEngineFlow:
description: Decision Engine Flow (Public API)
properties:
id:
type: string
name:
type: string
workspaceId:
type: number
format: double
decisionEngineId:
type: string
audienceId:
type: number
format: double
status:
type: string
config:
properties: {}
additionalProperties: {}
type: object
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
required:
- id
- name
- workspaceId
- decisionEngineId
- audienceId
- status
type: object
additionalProperties: false
DecisionEngineMessageUpdate:
description: Request body for updating a Decision Engine message
properties:
name:
type: string
config:
properties: {}
additionalProperties: {}
type: object
tags:
properties: {}
additionalProperties: {}
type: object
guardrails:
$ref: '#/components/schemas/DecisionEngineMessageGuardrails'
variables:
items:
$ref: '#/components/schemas/DecisionEngineVariable'
type: array
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
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: Bearer