Constant Contact Automations API
Use the automation endpoints and methods to manage automation campaigns
Use the automation endpoints and methods to manage automation campaigns
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/constant-contact-automations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: The Constant Contact, Inc. V3 public API, for building integrations with Constant Contact, the leading small-business email marketing platform.
version: 3.0.178
title: AppConnect V3 Automations API
contact:
name: webservices@constantcontact.com
license:
name: Private
url: https://www.constantcontact.com/legal/terms-of-use
servers:
- url: https://api.cc.email/v3
tags:
- name: Automations
description: Use the automation endpoints and methods to manage automation campaigns
paths:
/automations/workflows:
get:
tags:
- Automations
summary: List All Automations
description: 'Use this method to list all available automation workflows.
'
operationId: listAutomations
parameters:
- name: channel
in: query
description: Filter by channel
required: false
x-example: email
schema:
type: string
- name: sort_direction
in: query
description: Sort direction, ASC or DESC. Defaults to DESC
required: false
x-example: DESC
schema:
type: string
enum:
- ASC
- DESC
- name: created_from
in: query
description: Filter by how the workflow was created
required: false
schema:
type: string
enum:
- SCRATCH
- TEMPLATE
- name: goals
in: query
description: Filter by goal tags (e.g. post_purchase_followup, up_sell_and_cross_sell)
required: false
x-example: post_purchase_followup
schema:
type: string
- name: name
in: query
description: Find by workflow name (exact match)
required: false
x-example: My Workflow 123
schema:
type: string
responses:
'209':
description: Request successful
content:
application/json:
schema:
$ref: '#/components/schemas/ListAutomationFlowsResponseDto'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- customer-journey:read
post:
tags:
- Automations
summary: Create an Automation
description: 'Use this method to create a new automation campaign workflow from scratch by providing trigger information. For example, an automation that triggers when contacts join a list or an automation that triggers for a contact birthday.
Some common automation examples are included in the request body example dropdown menu.
'
operationId: createAutomationCampaignUsingPost
parameters:
- name: workflowName
in: query
description: Use this query parameter to provide a workflow name and override the default name.
required: false
schema:
type: string
responses:
'201':
description: Request successful
content:
application/json:
schema:
$ref: '#/components/schemas/AutomationCampaign'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- customer-journey:create
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerDefDto'
description: Automation trigger definition (type, action_name, parameters, optional trigger_date and bounds).
required: true
/automations/workflows/{automation_flow_id}:
get:
tags:
- Automations
summary: Retrieve an Automation
description: Use this endpoint to retrieve an automation workflow by its workflow id.
operationId: retrieveAutomationCampaignUsingGet
parameters:
- name: automation_flow_id
in: path
description: Automation workflow identifier.
required: true
schema:
type: string
responses:
'200':
description: Request successful
content:
application/json:
schema:
$ref: '#/components/schemas/AutomationCampaign'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- customer-journey:read
put:
tags:
- Automations
summary: Update an Automation
description: Use this method to update an automation workflow.
operationId: updateAutomationCampaignUsingPut
parameters:
- name: automation_flow_id
in: path
description: Automation workflow identifier.
required: true
schema:
type: string
responses:
'200':
description: Request successful
content:
application/json:
schema:
$ref: '#/components/schemas/AutomationCampaign'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- customer-journey:update
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AutomationCampaignUpdate'
description: Automation trigger definition (type, action_name, parameters, optional trigger_date and bounds).
required: true
components:
schemas:
WorkflowParametersDto:
type: object
properties:
automation_flow_id:
type: string
example: 9a5982f0-26d8-4e74-b2f5-f415af434fa4
description: Automation flow identifier
automation_flow_name:
type: string
example: 'Autogenerated Birthday: Basic'
description: Automation flow name
campaign_id:
type: string
example: 861dd493-540a-4e3e-b457-44cfde28a5f0
description: Automation campaign identifier
discount_code:
type: string
description: Discount code used in discount block
TriggerFilterRuleDto:
type: object
properties:
compound_rule_type:
type: string
left:
$ref: '#/components/schemas/TriggerFilterRuleDto'
property_comparison:
$ref: '#/components/schemas/PropertyComparisonDto'
right:
$ref: '#/components/schemas/TriggerFilterRuleDto'
rule:
$ref: '#/components/schemas/TriggerFilterRuleDto'
target:
type: string
target_type:
type: string
type:
type: string
AutomationStructuredTag:
type: object
properties:
display_value:
type: string
example: All from-scratch paths
description: Human-readable display value
key:
type: string
example: GOAL
description: Tag key
value:
type: string
example: goal_undefined
description: Tag value
description: A structured tag with key, value, and display value
TriggerFilterDto:
type: object
properties:
rule:
$ref: '#/components/schemas/TriggerFilterRuleDto'
version:
type: string
description: Version number for the trigger filter.
AutomationFlow:
type: object
properties:
workflow_def:
$ref: '#/components/schemas/AutomationWorkflowDef'
description: The workflow flow definition.
TriggerDefDto:
type: object
properties:
parameters:
type: array
description: List of parameters that filter or configure the trigger (e.g., list IDs for list_join).
items:
$ref: '#/components/schemas/ParameterDto'
action_name:
type: string
example: list_join
description: Action name. Required for type Action or Date. Identifies the specific trigger (e.g., list_join, calendar_date, visits_page).
bounds:
type: object
description: 'Time window for Date-type triggers. Sets when the trigger runs relative to
the contact''s date. Uses ISO 8601 period format (e.g., P0D, P7D, P-7D).
| Example Scenario | after | before |
|----------|--------|--------|
| On the day | `P0D` | `P1D` |
| 7 days before | `P-7D` | `P-6D` |
| 7 days after | `P7D` | `P8D` |
'
properties:
after:
type: string
description: Start of the window relative to the contact date in ISO 8601 period format (e.g., P0D = on the day, P-7D = 7 days before).
before:
type: string
description: End of the window relative to the contact date in ISO 8601 period format (e.g., P1D = 1 day after, P0D = on the day).
engagement_level:
type: string
example: SOMEWHAT
description: Engagement level for engagement_level triggers (e.g., SOMEWHAT, LEAST).
segment_id:
type: string
description: Segment ID for segment_join triggers.
trigger_date:
type: object
description: Date configuration for Date-type triggers (e.g., birthday, anniversary). Specifies which contact fields supply the date.
properties:
date_field:
type: string
description: Contact field that contains the full date. Must include 'record.' prefix (e.g., record.anniversary).
day_field:
type: string
description: Contact field that contains the day-of-month value. Must include 'record.' prefix (e.g., record.birthday_day).
month_field:
type: string
description: Contact field that contains the month value. Must include 'record.' prefix (e.g., record.birthday_month).
type:
type: string
description: Where the date is represented (e.g., Profile).
type:
type: string
example: Action
description: Trigger type. Determines how the trigger is evaluated (e.g., Action, Date, segment_join).
unique_by:
type: string
example: list_ids
description: 'Deduplication key: run the workflow at most once per contact per this value (e.g., list_ids, contact_id).'
description: Defines when the workflow starts (e.g., list join, date-based).
CorrelationMetadataDto:
type: object
properties:
automation_flow_id:
type: string
example: 9a5982f0-26d8-4e74-b2f5-f415af434fa4
description: Automation flow identifier
automation_template_id:
type: string
example: 17f58023-559a-41e5-84b7-0e9e213f7aef
description: Automation template identifier
campaign_id:
type: string
example: 861dd493-540a-4e3e-b457-44cfde28a5f0
description: Automation campaign identifier
TimeoutDto:
type: object
properties:
amount:
type: number
format: float
example: 10.0
description: Amount of time for startup timeout.
time_unit:
type: string
example: HOURS
description: Unit of time for startup timeout.
AutomationFlowSummaryDto:
type: object
properties:
active_state:
type: string
example: ACTIVE
description: State of the active definition
created_by_id:
type: string
example: '123456789'
description: User ID who created the flow
created_date:
type: string
example: '2025-09-25T20:06:50.020+00:00'
description: Date the flow was created
description:
type: string
example: Automation flow for contact signups
description: Description of the automation flow
draft_state:
type: string
example: PROMOTED
description: State of the draft definition
id:
type: string
example: 83345850-144a-4dcf-b4dc-88aa1287cffe
description: Automation flow ID
name:
type: string
example: Welcome series
description: Display name of the automation flow
promoted_by_id:
type: string
example: '123456789'
description: User ID who promoted the flow
promoted_date:
type: string
example: '2025-09-25T20:06:50.970+00:00'
description: Date the flow was promoted
status:
type: string
example: ACTIVE
description: Computed display status of the workflow
structured_tags:
type: array
description: Structured tags associated with the automation flow
items:
$ref: '#/components/schemas/StructuredTagDto'
template_id:
type: string
example: 17f58023-559a-41e5-84b7-0e9e213f7aef
description: Template ID the flow was created from
update_date:
type: string
example: '2025-09-25T20:06:50.970+00:00'
description: Date the flow was last updated
description: Summary of an automation flow
TaskDto:
type: object
properties:
child_tasks:
type: array
items:
$ref: '#/components/schemas/TaskDto'
correlation_metadata:
$ref: '#/components/schemas/TaskCorrelationMetadataDto'
else:
type: array
items:
$ref: '#/components/schemas/TaskDto'
event_condition:
type: string
id:
type: string
example: 79bydf92-rr48-4765-83cb-0e8a8f63ay0
input:
type: object
description: Task input object
additionalProperties:
type: string
json_condition:
type: object
properties: {}
kind:
type: string
description: Task type.
metadata:
type: object
description: Task metadata object.
properties:
action:
type: string
create_from_scratch:
type: boolean
kind:
type: string
list:
type: string
name:
type: string
description: Task name.
output:
type: object
properties: {}
queue_name:
type: string
retry_options:
type: object
properties:
backoff_coefficient:
type: integer
format: int32
initial_interval:
type: integer
format: int32
maximum_attempts:
type: integer
format: int32
script:
type: string
task_provider_reference_key:
type: string
task_skip_condition:
type: string
then:
type: array
items:
$ref: '#/components/schemas/TaskDto'
timeout:
$ref: '#/components/schemas/TimeoutDto'
PropertyComparisonDto:
type: object
properties:
argument:
type: string
array_argument:
type: array
items:
type: string
operator:
type: string
property_name:
type: string
string_map_argument:
type: object
properties:
custom_field_Id:
type: string
value:
type: string
type:
type: string
AutomationWorkflowDef:
type: object
properties:
parameters:
$ref: '#/components/schemas/WorkflowParametersDto'
correlation_metadata:
$ref: '#/components/schemas/CorrelationMetadataDto'
tasks:
type: array
items:
$ref: '#/components/schemas/TaskDto'
status:
type: string
example: SCHEDULED
description: Workflow definition status.
metadata:
type: object
description: Workflow metadata.
properties: {}
timeout:
$ref: '#/components/schemas/TimeoutDto'
upgradable:
type: boolean
description: Indicates if the workflow can be upgraded after it is activated.
description: The workflow definition containing tasks, status, and metadata.
AutomationCampaignUpdate:
type: object
properties:
automation_flow:
$ref: '#/components/schemas/AutomationCampaign'
StructuredTagDto:
type: object
properties:
display_value:
type: string
example: All from-scratch paths
description: Human-readable display value
key:
type: string
example: GOAL
description: Tag key
value:
type: string
example: goal_undefined
description: Tag value
description: A structured tag with key, value, and display value
TriggerDto:
type: object
properties:
trigger_def:
$ref: '#/components/schemas/TriggerDefDto'
trigger_filter:
$ref: '#/components/schemas/TriggerFilterDto'
trigger_version:
type: string
example: 1.0.0
workflow_filter:
type: string
ParameterDto:
type: object
properties:
operator:
type: string
description: Comparison operator for the parameter (e.g. EQUALS, CONTAINS, NOT_EQUALS).
parameter_name:
type: string
description: Name of the parameter (e.g., list_ids, create_source, url).
parameter_list_value:
type: array
description: '[DEPRECATED] List of string values for the parameter when type is LIST. Supported for backwards compatibility; prefer parameter_value.'
items:
type: string
x-deprecated: true
parameter_string_value:
type: string
description: '[DEPRECATED] String value for the parameter when type is STRING. Supported for backwards compatibility; prefer parameter_value.'
x-deprecated: true
parameter_value:
type: object
description: 'The parameter value: a string or array of strings depending on type (e.g., STRING → single value, LIST → array of list IDs). Use this instead of parameter_string_value / parameter_list_value moving forward.'
properties: {}
rule:
type: object
description: Rule structure for RULE-type parameters (e.g., engagement level triggers).
properties: {}
type:
type: string
description: 'Parameter type. Common trigger types: STRING (single value), LIST (array), WEB_TRACKING (page visit).'
description: A single trigger parameter used to filter or configure the trigger (e.g., list IDs). Use parameter_value (preferred); parameter_string_value and parameter_list_value are supported for backwards compatibility.
TaskCorrelationMetadataDto:
properties:
campaign_activity_id:
type: string
example: 0434c0ee-bdd2-47ee-8634-fa163e6b01c1
description: Campaign activity identifier
AutomationCampaign:
type: object
properties:
id:
type: string
description: The unique identifier for the automation campaign workflow.
name:
type: string
example: 'Autogenerated Birthday: Basic'
description: The name of the automation campaign.
description:
type: string
example: Send a greeting or special offer to your contacts on or before their birthday
description: The description of the automation campaign.
structured_tags:
type: array
items:
$ref: '#/components/schemas/AutomationStructuredTag'
status:
type: string
description: Computed display status of the workflow
active_definition:
$ref: '#/components/schemas/AutomationWorkflowDefinition'
draft_definition:
$ref: '#/components/schemas/AutomationWorkflowDefinition'
name_explicitly_set:
type: boolean
description: Indicates whether the automation campaign name was explicitly set.
AutomationWorkflowDefinition:
type: object
properties:
state:
type: string
example: DRAFT
description: The current state of the workflow definition (e.g. DRAFT, ACTIVE).
trigger:
$ref: '#/components/schemas/TriggerDto'
workflow:
$ref: '#/components/schemas/AutomationFlow'
description: A workflow definition containing state, trigger, and workflow structure.
ListAutomationFlowsResponseDto:
type: object
properties:
flow_summaries:
type: array
description: List of automation flow summaries for the current page
items:
$ref: '#/components/schemas/AutomationFlowSummaryDto'
description: Paginated list of automation flow summaries
securitySchemes:
oauth2_implicit:
type: oauth2
flows:
implicit:
scopes:
contact_data: Read or modify contact data.
campaign_data: Read or modify email campaign data.
account_read: Read account data.
account_update: Modify account data.
billing_data: Read or modify billing data.
authorizationUrl: https://authz.constantcontact.com/oauth2/default/v1/authorize
oauth2_access_code:
type: oauth2
flows:
authorizationCode:
scopes:
contact_data: Read or modify contact data.
campaign_data: Read or modify email campaign data.
account_read: Read account data.
account_update: Modify account data.
billing_data: Read or modify billing data.
authorizationUrl: https://authz.constantcontact.com/oauth2/default/v1/authorize
tokenUrl: https://authz.constantcontact.com/oauth2/default/v1/token
ctctPartnerAuthorizer:
type: oauth2
flows:
implicit:
scopes:
v3api/general.partner: Access to general partner API methods
authorizationUrl: https://v3api-partner.auth.us-east-1.amazoncognito.com/oauth2/token
description: Partner Authentication
api_key:
type: apiKey
name: x-api-key
in: header