Guide
Growth Flow and Automation API
Flow lifecycle, sequence previews, developer-only tests, queue activity, suppression rules, and trigger signals.
SoundSync
Growth and automation operations
Current route and service contracts. Examples below are illustrative; live provider outcomes and client-host testing are separate checks.
/api/developer/marketing/growth-flows
List flows and their activity.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query days: integer
- query range: string. Use all for all-time metrics; otherwise days defaults to 30.
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Query and header parameters
[
{
"name": "days",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 3650
},
"required": false,
"description": ""
},
{
"name": "range",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": "Use all for all-time metrics; otherwise days defaults to 30."
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"templates": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"queueSnapshotAt": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/summary
Read aggregate flow metrics and queue status.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query days: integer
- query range: string. Use all for all time; a day range such as 90d selects that window when days is omitted.
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Default 30 days. Archived flows are hidden from flows but retained in totalFlows, archivedFlows, archivedActivity and aggregate history. Queue totals are a current snapshot at queueSnapshotAt, not a date-range delivery count. Revenue is attributed net product revenue after discounts and product refunds/disputes, excluding tax; it is not developer payout earnings. Internal boolean service options are not HTTP query switches.
Request, response and error reference
Query and header parameters
[
{
"name": "days",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 3650
},
"required": false,
"description": ""
},
{
"name": "range",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": "Use all for all time; a day range such as 90d selects that window when days is omitted."
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"templates": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"rangeDays": {
"type": [
"integer",
"null"
],
"description": "Null for range=all; otherwise the effective day count."
},
"range": {
"type": "string",
"enum": [
"all",
"days"
]
},
"activeFlows": {
"type": "integer"
},
"archivedFlows": {
"type": "integer"
},
"archivedActivity": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"emailsSent": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
}
},
"totalFlows": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"revenue": {
"type": "number"
},
"conversions": {
"type": "integer"
},
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"queueSnapshotAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"recommendations": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/templates
List supported template definitions.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"templates": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/promo-options
Read eligible promotion/reward choices.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query search: string
- query selectedId: integer
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Query and header parameters
[
{
"name": "search",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": ""
},
{
"name": "selectedId",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"promoCodes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"code": {
"type": "string"
},
"discountType": {
"type": "string"
},
"discountValue": {
"type": "number"
},
"isActive": {
"type": "boolean"
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows
Create a flow for a supported template and audience.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- name: string
- status: draft | active | paused | archived
- triggerType: string
- segmentId: integer
- campaignId: integer
- delayMinutes: integer
- quietHoursStrategy: defer | skip | ignore
- smartTimingEnabled: boolean
- suppressionPolicy: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- messageTemplate: object
- metadata: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- type: string (required)
- description: string
- audienceId: integer
- productId: integer
- relatedProductIds: array
- promotionId: integer
- inactiveDays: integer
- setupUrl: string
- releaseUrl: string
- version: string
- downloadUrl: string
- recommendedProductUrl: string
- incentive: object
- sequence: array
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Create a flow for a supported template and audience. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true,
"required": [
"type"
]
}
HTTP 201 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId
Read the sequence and step/reward context.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/recipients
Read recipient outcomes with filters and pagination.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query page: integer
- query limit: integer
- query search: string
- query status: string
- query emailNumber: integer
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Query and header parameters
[
{
"name": "page",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
},
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
},
{
"name": "search",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": ""
},
{
"name": "status",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": ""
},
{
"name": "emailNumber",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"workflowId": {
"type": "integer",
"minimum": 1
},
"email": {
"type": "string",
"format": "email"
},
"name": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"status": {
"type": "string"
},
"failureReason": {
"type": [
"string",
"null"
]
},
"scheduledFor": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"sentAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"sendAttemptAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"deliveryReviewedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"deliveryReviewOutcome": {
"type": [
"string",
"null"
]
},
"deliveryReviewComplete": {
"type": "boolean"
},
"deliveryReviewEventsScanned": {
"type": "integer"
},
"retryUnconfirmedAllowed": {
"type": "boolean"
},
"productName": {
"type": "string"
},
"productRole": {
"type": "string"
}
},
"additionalProperties": true
}
},
"pagination": {
"type": "object",
"properties": {
"page": {
"type": "integer"
},
"limit": {
"type": "integer"
},
"total": {
"type": "integer"
},
"totalPages": {
"type": "integer"
}
},
"additionalProperties": true
},
"search": {
"type": "string"
},
"status": {
"type": "string"
},
"emailNumber": {
"type": [
"integer",
"null"
]
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId
Update flow configuration.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- name: string
- status: draft | active | paused | archived
- triggerType: string
- segmentId: integer
- campaignId: integer
- delayMinutes: integer
- quietHoursStrategy: defer | skip | ignore
- smartTimingEnabled: boolean
- suppressionPolicy: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- messageTemplate: object
- metadata: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- type: string
- description: string
- audienceId: integer
- productId: integer
- relatedProductIds: array
- promotionId: integer
- inactiveDays: integer
- setupUrl: string
- releaseUrl: string
- version: string
- downloadUrl: string
- recommendedProductUrl: string
- incentive: object
- sequence: array
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Update flow configuration. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/activate
Activate the configured flow.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Activate the configured flow. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/pause
Pause future flow work.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Pause future flow work. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/duplicate
Copy a flow for review.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Copy a flow for review. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 201 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/archive
Archive the selected flow.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Archive the selected flow. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/run
Launch supported manual work for the eligible audience.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Launch supported manual work for the eligible audience. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Launches supported manual audience work. No eligible audience means no permission to send to suppressed contacts.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
},
"signal": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"status": {
"type": "string"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": true
},
"launched": {
"type": "boolean"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/preview
Preview rendered sequence content.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/test-email
Send a selected test step to the signed-in developer.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- emailNumber: integer
- email: string
- to: string
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Send a selected test step to the signed-in developer. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. The recipient must be the signed-in developer. Select a valid sequence step; sender/footer readiness still applies.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"emailNumber": {
"type": "integer",
"minimum": 1
},
"email": {
"type": "string",
"format": "email"
},
"to": {
"type": "string",
"format": "email"
}
},
"additionalProperties": true
}
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"sent": {
"type": "boolean"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/templates/:type/activate
Activate a supported template workflow.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Activate a supported template workflow. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
},
"created": {
"type": "boolean"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/templates/:type/pause
Pause the corresponding template workflow.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Pause the corresponding template workflow. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"flow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"type": {
"type": "string"
},
"description": {
"type": "string"
},
"audienceId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"relatedProductIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
}
},
"promotionId": {
"type": "integer",
"minimum": 1
},
"inactiveDays": {
"type": "integer"
},
"setupUrl": {
"type": "string"
},
"releaseUrl": {
"type": "string"
},
"version": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"recommendedProductUrl": {
"type": "string"
},
"incentive": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"promoCodeId": {
"type": "integer",
"minimum": 1
},
"promoCode": {
"type": "string"
},
"discountLabel": {
"type": "string"
}
},
"additionalProperties": true
},
"sequence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"delayMinutes": {
"type": "integer"
},
"emailNumber": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
},
"metrics": {
"type": "object",
"properties": {
"queuedNow": {
"type": "integer"
},
"sentTotal": {
"type": "integer"
},
"failedTotal": {
"type": "integer"
},
"unresolvedTotal": {
"type": "integer"
},
"emailsSent": {
"type": "integer"
},
"opens": {
"type": "integer"
},
"clicks": {
"type": "integer"
},
"conversions": {
"type": "integer"
},
"revenue": {
"type": "number"
}
},
"additionalProperties": true
},
"stepMetrics": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
}
},
"additionalProperties": true
},
"created": {
"type": "boolean"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/settings
Read automation enablement and settings.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"settings": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"developer_id": {
"type": "integer",
"minimum": 1
},
"automation_enabled": {
"type": "boolean"
},
"quiet_hours_enabled": {
"type": "boolean"
},
"quiet_hours_start": {
"type": "string"
},
"quiet_hours_end": {
"type": "string"
},
"timezone": {
"type": "string"
},
"smart_send_window_enabled": {
"type": "boolean"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/settings
Update automation readiness/settings.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- automationEnabled: boolean
- quietHoursEnabled: boolean
- quietHoursStart: string
- quietHoursEnd: string
- timezone: string
- smartSendWindowEnabled: boolean
- metadata: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Update automation readiness/settings. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"automationEnabled": {
"type": "boolean"
},
"quietHoursEnabled": {
"type": "boolean"
},
"quietHoursStart": {
"type": "string"
},
"quietHoursEnd": {
"type": "string"
},
"timezone": {
"type": "string"
},
"smartSendWindowEnabled": {
"type": "boolean"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"additionalProperties": true
}
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"settings": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"developer_id": {
"type": "integer",
"minimum": 1
},
"automation_enabled": {
"type": "boolean"
},
"quiet_hours_enabled": {
"type": "boolean"
},
"quiet_hours_start": {
"type": "string"
},
"quiet_hours_end": {
"type": "string"
},
"timezone": {
"type": "string"
},
"smart_send_window_enabled": {
"type": "boolean"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/workflows
List automation workflows.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query status: string
- query triggerType: string
- query limit: integer
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Query and header parameters
[
{
"name": "status",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": ""
},
{
"name": "triggerType",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": ""
},
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"workflows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"developer_id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"trigger_type": {
"type": "string"
},
"segment_id": {
"type": "integer",
"minimum": 1
},
"campaign_id": {
"type": "integer",
"minimum": 1
},
"delay_minutes": {
"type": "integer"
},
"quiet_hours_strategy": {
"type": "string"
},
"smart_timing_enabled": {
"type": "boolean"
},
"suppression_policy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"message_template": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/workflows
Create an automation workflow.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- name: string (required)
- status: draft | active | paused | archived
- triggerType: string (required)
- segmentId: integer
- campaignId: integer
- delayMinutes: integer
- quietHoursStrategy: defer | skip | ignore
- smartTimingEnabled: boolean
- suppressionPolicy: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- messageTemplate: object
- metadata: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Create an automation workflow. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"additionalProperties": true,
"required": [
"name",
"triggerType"
]
}
HTTP 201 response (application/json)
{
"type": "object",
"properties": {
"workflow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"developer_id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"trigger_type": {
"type": "string"
},
"segment_id": {
"type": "integer",
"minimum": 1
},
"campaign_id": {
"type": "integer",
"minimum": 1
},
"delay_minutes": {
"type": "integer"
},
"quiet_hours_strategy": {
"type": "string"
},
"smart_timing_enabled": {
"type": "boolean"
},
"suppression_policy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"message_template": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/workflows/:workflowId
Update the workflow.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- name: string
- status: draft | active | paused | archived
- triggerType: string
- segmentId: integer
- campaignId: integer
- delayMinutes: integer
- quietHoursStrategy: defer | skip | ignore
- smartTimingEnabled: boolean
- suppressionPolicy: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- messageTemplate: object
- metadata: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Update the workflow. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"paused",
"archived"
]
},
"triggerType": {
"type": "string"
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"campaignId": {
"type": "integer",
"minimum": 1
},
"delayMinutes": {
"type": "integer",
"minimum": 0
},
"quietHoursStrategy": {
"type": "string",
"enum": [
"defer",
"skip",
"ignore"
]
},
"smartTimingEnabled": {
"type": "boolean"
},
"suppressionPolicy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"messageTemplate": {
"type": "object",
"properties": {
"subject": {
"type": "string"
},
"bodyHtml": {
"type": "string"
},
"bodyText": {
"type": "string"
}
},
"additionalProperties": true
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"additionalProperties": true
}
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"workflow": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"developer_id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string"
},
"status": {
"type": "string"
},
"trigger_type": {
"type": "string"
},
"segment_id": {
"type": "integer",
"minimum": 1
},
"campaign_id": {
"type": "integer",
"minimum": 1
},
"delay_minutes": {
"type": "integer"
},
"quiet_hours_strategy": {
"type": "string"
},
"smart_timing_enabled": {
"type": "boolean"
},
"suppression_policy": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"message_template": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/suppression-rules
Read suppression rules.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query workflowId: integer
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Query and header parameters
[
{
"name": "workflowId",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"rules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"workflow_id": {
"type": "integer",
"minimum": 1
},
"rule_type": {
"type": "string"
},
"product_id": {
"type": "integer",
"minimum": 1
},
"segment_id": {
"type": "integer",
"minimum": 1
},
"cooldown_hours": {
"type": "integer"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/workflows/:workflowId/suppression-rules
Create a workflow suppression rule.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- ruleType: string (required)
- productId: integer
- segmentId: integer
- cooldownHours: integer
- metadata: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Create a workflow suppression rule. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"ruleType": {
"type": "string"
},
"productId": {
"type": "integer",
"minimum": 1
},
"segmentId": {
"type": "integer",
"minimum": 1
},
"cooldownHours": {
"type": "integer"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"required": [
"ruleType"
],
"additionalProperties": true
}
HTTP 201 response (application/json)
{
"type": "object",
"properties": {
"rule": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"status": {
"type": "string"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/queue
Read queued work and outcomes.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query status: string
- query workflowId: integer
- query limit: integer
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Query and header parameters
[
{
"name": "status",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": ""
},
{
"name": "workflowId",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
},
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"queue": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"workflow_id": {
"type": "integer",
"minimum": 1
},
"email": {
"type": "string",
"format": "email"
},
"status": {
"type": "string"
},
"scheduled_for": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"sent_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"failure_reason": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/audit-events
Read automation activity history.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query workflowId: integer
- query limit: integer
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Query and header parameters
[
{
"name": "workflowId",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
},
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"auditEvents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"workflow_id": {
"type": "integer",
"minimum": 1
},
"event_type": {
"type": "string"
},
"message": {
"type": "string"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/signals
Read trigger signal activity.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- query signalType: string
- query limit: integer
- Returns
- Scoped current records or rendered preview.
- Side effects
- Retrieves the authorized resource. Operation-specific notes identify preparation or referral recording where applicable.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Requires marketing.manage and all-products scope, except template listing requires marketing view. Provider acceptance is not proof of inbox delivery.
Request, response and error reference
Query and header parameters
[
{
"name": "signalType",
"in": "query",
"schema": {
"type": "string"
},
"required": false,
"description": ""
},
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1
},
"required": false,
"description": ""
}
]
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"signals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"signal_type": {
"type": "string"
},
"product_id": {
"type": "integer",
"minimum": 1
},
"occurred_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"additionalProperties": true
}
},
"windows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"status": {
"type": "string"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": true
}
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/signals/test
Create a controlled test signal.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- signalType: string (required)
- customerId: integer
- developerCustomerId: integer
- productId: integer
- entitlementId: integer
- serialId: integer
- email: string
- source: string
- sourceId: string
- signalCount: integer
- occurredAt: string,null
- metadata: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Create a controlled test signal. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. This is not a dry-run endpoint: a signal can queue eligible workflow work. Current permission, consent and suppression rules still apply.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"signalType": {
"type": "string"
},
"customerId": {
"type": "integer",
"minimum": 1
},
"developerCustomerId": {
"type": "integer",
"minimum": 1
},
"productId": {
"type": "integer",
"minimum": 1
},
"entitlementId": {
"type": "integer",
"minimum": 1
},
"serialId": {
"type": "integer",
"minimum": 1
},
"email": {
"type": "string",
"format": "email"
},
"source": {
"type": "string"
},
"sourceId": {
"type": "string"
},
"signalCount": {
"type": "integer"
},
"occurredAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"metadata": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"required": [
"signalType"
],
"additionalProperties": true
}
HTTP 201 response (application/json)
{
"type": "object",
"properties": {
"signal": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"status": {
"type": "string"
},
"created_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"updated_at": {
"type": [
"string",
"null"
],
"format": "date-time"
}
},
"additionalProperties": true
},
"queued": {
"type": "integer"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/automation/process
Request bounded processing under the supported permission boundary.
- Auth
- Account Bearer JWT
- Scope
- Effective developer marketing permissions and the assigned product audience; workspace-wide operations require all-products scope.
- Request fields
- limit: integer
- Returns
- Operation result; provider delivery and accounting must be checked separately.
- Side effects
- Request bounded processing under the supported permission boundary. Review the confirmation and retry requirements before repeating the request.
- Notes
- Automation and most growth-flow routes require marketing.manage and all-products scope. Template listing requires authenticated marketing view access. Processes real eligible queued work for the workspace. Do not use as a health check.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": true
}
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"processed": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
}
},
"deliveryUnknown": {
"type": "integer"
},
"usageReconciled": {
"type": "integer"
},
"sent": {
"type": "integer"
},
"skipped": {
"type": "integer"
},
"failed": {
"type": "integer"
},
"deferred": {
"type": "integer"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
SoundSync
Illustrative flow test
curl -X POST "https://www.soundsync.dev/api/developer/marketing/growth-flows/123/test-email" \
-H "Authorization: Bearer DEVELOPER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"emailNumber":1}'
Respect consent at delivery time
An event or manual launch does not turn a transactional-only customer into a marketing subscriber. Consent, suppression, product eligibility, sender readiness, and the compliance footer apply before sending. Growth-flow tests render a selected step to the signed-in developer only and are not a bulk audience send.
Read outcomes before retrying
Queue and recipient views distinguish queued, sent, failed, and delivery_unknown work. A delivery_unknown outcome means provider acceptance has not been established, not that nothing was sent. An interrupted worker can leave an unknown provider outcome; verify acceptance before retrying. Provider-accepted marketing sends share the 1,000-email monthly allowance and started-block overage model. Preview and test results are not campaign conversion statistics.
SoundSync
Recipient recovery
Developer marketing automation permissions apply; do not blindly retry an uncertain delivery.
/api/developer/marketing/growth-flows/:flowId/recipients/:queueId/review
Check and persist an uncertain delivery outcome
- Auth
- Account Bearer JWT
- Scope
- Workspace permissions and product assignments are checked.
- Returns
- Review result for the workspace-owned flow recipient.
- Notes
- Persists a provider-history review. A matching acceptance marks sent without resending. Incomplete, ambiguous or unavailable history stays on hold.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"message": {
"type": "string"
},
"checkedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"outcome": {
"type": "string"
},
"eventsScanned": {
"type": "integer"
},
"retryEligible": {
"type": "boolean"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
/api/developer/marketing/growth-flows/:flowId/recipients/:queueId/retry
Retry an eligible failed recipient
- Auth
- Account Bearer JWT
- Scope
- Workspace permissions and product assignments are checked.
- Returns
- Updated retry outcome after current consent and suppression checks.
- Notes
- Only a confirmed failed, unsent recipient is eligible. Requires an active flow and no recorded delivery. Sending rechecks consent, suppression and queue rules.
Request, response and error reference
No request body fields are read by this operation.
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"message": {
"type": "string"
},
"checkedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"outcome": {
"type": "string"
},
"eventsScanned": {
"type": "integer"
},
"retryEligible": {
"type": "boolean"
}
},
"additionalProperties": true
}
Documented failures: 400, 500, 503.
SoundSync
Guarded unconfirmed-send recovery
/api/developer/marketing/growth-flows/:flowId/recipients/:queueId/retry-unconfirmed
Recheck and requeue an eligible unconfirmed recipient
- Auth
- Account Bearer JWT
- Scope
- The operation-specific account, workspace, product and ownership checks apply.
- Request fields
- acknowledgeDuplicateRisk: true (required)
- Returns
- HTTP 200: status, message, checkedAt, outcome, eventsScanned, retryEligible.
- Notes
- Rechecks provider history before requeueing. Requires delivery_unknown, a complete unconfirmed review at least 125 minutes after the recorded attempt, no provider message/transaction IDs, no sent/opened/clicked event, and an active flow. A duplicate remains possible. Concurrent review/state changes reject the retry.
Request, response and error reference
Request (application/json)
{
"type": "object",
"properties": {
"acknowledgeDuplicateRisk": {
"const": true
}
},
"required": [
"acknowledgeDuplicateRisk"
],
"additionalProperties": true
}
HTTP 200 response (application/json)
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"message": {
"type": "string"
},
"checkedAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"outcome": {
"type": "string"
},
"eventsScanned": {
"type": "integer"
},
"retryEligible": {
"type": "boolean"
}
},
"additionalProperties": true
}
Documented failures: 400, 401, 403, 404, 409, 500, 503.
Operation errors: GROWTH_FLOW_DUPLICATE_RISK_ACK_REQUIRED, GROWTH_FLOW_UNCONFIRMED_RETRY_NOT_ALLOWED, GROWTH_FLOW_REVIEW_CHANGED, GROWTH_FLOW_INACTIVE, GROWTH_FLOW_DELIVERY_RECORDED, GROWTH_FLOW_RECIPIENT_NOT_FOUND.
SoundSync
Illustrative guarded retry request
curl --fail-with-body -sS -X POST "$SOUNDSYNC_API_BASE/api/developer/marketing/growth-flows/$FLOW_ID/recipients/$QUEUE_ID/retry-unconfirmed" \
-H "Authorization: Bearer $DEVELOPER_TOKEN" \
-H "Content-Type: application/json" \
--data '{"acknowledgeDuplicateRisk":true}'
Read Growth Flow reporting in the selected range
Choose a day window or All time. GET /api/developer/marketing/growth-flows/summary?range=all returns range:"all" and rangeDays:null. A bounded report returns range:"days" and an integer rangeDays; the default is 30 days. The list endpoint also accepts range=all. The ordinary flow list hides archived flows.
Archiving stops a flow from appearing in the ordinary list without erasing its history. Summary totals include archived activity; totalFlows includes that history, while activeFlows counts active entries. archivedFlows and archivedActivity identify the archived contribution. Do not expect summing only the visible flow cards to reproduce every historical total.
emailsSent, conversions and revenue use the selected reporting window. queuedNow, sentTotal, failedTotal and unresolvedTotal are current queue-lifecycle snapshots, with queueSnapshotAt showing when they were read. They are not alternative names for the ranged send count.
Attributed sales are not payout earnings
Marketing revenue uses attributable net product revenue from the canonical sale records: product subtotal less discounts, product refunds, chargebacks and dispute adjustments, excluding tax. Keep live and test scope aligned. Imported, administrative and migration-only rows are not funded managed-sale revenue. Provider event amounts are not the financial source of truth.
Direct campaign or flow attribution and supported click-to-purchase attribution are different evidence paths; the click path uses a fourteen-day window. This associates a recorded sale with marketing activity, not proof the message caused it. Counts are deduplicated at the reporting level; flow, campaign and whole-workspace totals are not automatically additive.
Campaign recipient reports use actual recipient rows once sending is finalized rather than an earlier audience estimate. Queue/provider reconciliation avoids treating one send as separate queued and sent messages. Acceptance is not proof of inbox delivery, and privacy features can affect observed opens and clicks.
SoundSync
Read an all-time summary
curl --fail-with-body -sS "$SOUNDSYNC_API_BASE/api/developer/marketing/growth-flows/summary?range=all" \
-H "Authorization: Bearer $DEVELOPER_TOKEN"
{
"range": "all",
"rangeDays": null,
"activeFlows": 1,
"totalFlows": 2,
"archivedFlows": 1,
"archivedActivity": [
{
"id": 7,
"name": "Previous release",
"emailsSent": 20,
"conversions": 1,
"revenue": 44.1
}
],
"emailsSent": 32,
"conversions": 2,
"revenue": 88.2,
"queuedNow": 3,
"sentTotal": 32,
"failedTotal": 0,
"unresolvedTotal": 1,
"queueSnapshotAt": "2026-10-22T12:00:00.000Z"
}
