Skip to content
SoundSyncAudio software platform

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.

GET /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.

GET /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.

GET /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.

GET /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.

POST /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.

GET /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.

GET /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.

PATCH /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.

POST /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.

POST /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.

POST /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.

POST /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.

POST /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.

GET /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.

POST /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.

POST /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.

POST /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.

GET /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.

PATCH /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.

GET /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.

POST /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.

PATCH /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.

GET /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.

POST /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.

GET /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.

GET /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.

GET /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.

POST /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.

POST /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

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.

POST /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.

POST /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

POST /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

Review the recipient before using this 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

Read-only request using an authorized developer session
curl --fail-with-body -sS "$SOUNDSYNC_API_BASE/api/developer/marketing/growth-flows/summary?range=all" \
  -H "Authorization: Bearer $DEVELOPER_TOKEN"
Illustrative excerpt; values are not live results
{
  "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"
}