← Back to all apps
A

ActiveCampaign

by ActiveCampaign LLC
Launched Aug 31, 2026 on ChatGPT

Connect ActiveCampaign to Claude for autonomous marketing at your fingertips. Get real-time marketing insights and then take action, instantly. With this secure connection, you can manage lists, tags, contacts, and automations just by chatting with Claude. Ask Claude to pull yesterday’s email performance, get a contact’s phone number, create a new tag, or start an automation. All of that and more, fueled by the ActiveCampaign MCP Server.

280ChatGPT Tools
32Claude Tools
ActiveCampaign LLCDeveloper

Use Cases

sales-and-marketingcommunication

Available Tools

Add Contact to Automation

add_contact_to_automation
Full Description

Add a contact to an automation.

This will start the automation for the specified contact. The contact will begin at the first step of the automation sequence.

Parameters ----------

  • params: ContactAutomationCreateParams object containing:
    • contact: The ID of the contact to add to the automation
    • automation: The ID of the automation to add the contact to
Parameters (1 required)
Required
paramsobject

Add Tag to Contact

add_tag_to_contact
Full Description

Use ONLY for 1–9 contacts. For 10+ use bulk_import_contacts. Use this tool only for adding a single tag to a single contact.

Add a tag to a contact.

Parameters ----------

  • params: ContactTagParams object containing:
    • contact: Required. The ID of the contact.
    • tag: Required. The ID of the tag to add to the contact.
Parameters (1 required)
Required
paramsobject

Bulk Import Status List

bulk_import_status_list
Full Description

Retrieve the status of bulk contact import batches, showing outstanding and recently completed imports.

Returns two groups of import batches:

  • outstanding: imports that are still being processed
  • recentlyCompleted: imports that have finished processing recently

Each entry includes the date the batch was submitted (forDate), the number of batches, and the total number of contacts in those batches.

Cancel Campaign Run

cancel_campaign_run
Full Description

Stop reporting on an in-flight campaign-generation run. Pass the request_id returned by generate_campaign, edit_campaign, or copy_campaign. Work already persisted (e.g. a campaign already saved) is not undone. Safe to call on a run that has already finished — returns its actual status rather than raising.

Parameters (1 required)
Required
request_idstring

Run id returned by the tool that started this run.

Add a tracked domain by name

catalog_add-a-tracked-domain
Full Description

Add a tracked domain by name

Whitelist a domain by name so visits to pages on it are recorded. The feature must be switched on first via PUT /api/3/siteTracking - adding a domain while it is off returns 403. A name may begin with * to cover subdomains (for example *.example.com).

  • Operation: add-a-tracked-domain
  • Endpoint: POST /api/3/siteTrackingDomains
Parameters (1 required)
Required
bodyobject

Add Custom Field to Field Group

catalog_add-custom-field-to-field-group
Full Description

Add Custom Field to Field Group

  • Operation: add-custom-field-to-field-group
  • Endpoint: POST /api/3/groupMembers
Parameters (1 required)
Required
bodyobject

Add domain to whitelist

catalog_add-domain-to-whitelist
Full Description

Add domain to whitelist

Add a domain to the site tracking whitelist

  • Operation: add-domain-to-whitelist
  • Endpoint: POST /api/3/prism/urlWhitelistings
Parameters (1 required)
Required
bodyobject

Apply tags to a contact

catalog_apply-tags-to-a-contact
Full Description

Apply tags to a contact

Applies up to 100 tags to one contact in a single request, by tag name, tag id, or both. Tag names that do not exist yet are created automatically unless createMissing is false; tag ids must refer to existing tags. This replaces the per-tag sequence of GET /tags, POST /tags, and POST /contactTags with one call. Returns 201 with every requested association, including ones that already existed, so the request is safe to repeat. Send at least one entry in tags or tagIds. Tag names are matched case-insensitively, and are trimmed and stripped of HTML markup before matching and creation. Returns 404 if the contact does not exist. Fails with 400 for an unknown tag id, an unknown name when createMissing is false, a name held by a deleted tag, a name containing commas, line breaks, emoji, or other 4-byte characters, or a request addressing more than 100 tags.

  • Operation: apply-tags-to-a-contact
  • Endpoint: POST /api/3/contacts/{id}/tags
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
bodyobject

Bulk import status info

catalog_bulk-import-status-info
Full Description

Bulk import status info

Check the status of one API bulk import using the batchId returned by POST /import/bulk_import. Imports run in the background, so call this after submitting one to confirm it completed: an import is only finished when status is completed, and a successful response to the import request alone does not mean the contacts were created. If the import has not finished yet, wait and poll again rather than resubmitting the same contacts. success lists the ids of the contacts that were created or updated; failure lists the email of each row that was not imported, with no reason. To get failure reasons, register a callback with detailed_results when submitting the import. This endpoint knows nothing about imports started from the app or by integrations; use GET /import/history for those. Requires the contact import permission.

  • Operation: bulk-import-status-info
  • Endpoint: GET /api/3/import/info
Parameters (1 required)
Required
query_paramsobject

Summarize recent API bulk imports by day

catalog_bulk-import-status-list
Full Description

Summarize recent API bulk imports by day

Summarize this account's API bulk imports from the last 7 days: for each day, how many batches and contacts are still outstanding and how many completed. Only imports submitted through POST /import/bulk_import are counted; imports started from the app's import tool or by integrations never appear here (use GET /import/history for those). There is no per-batch or per-contact detail and no error information, so this cannot explain why an import failed; for one batch use GET /import/info with its batchId. Both arrays are empty when nothing was imported through the API in the last 7 days. A batch that stalled and has a failed chunk is left out of outstanding.

  • Operation: bulk-import-status-list
  • Endpoint: GET /api/3/import/bulk_import
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Check whether a contact matches a segment

catalog_check-segment-match
Full Description

Check whether a contact matches a segment

Evaluates one contact against one saved segment and answers whether the contact currently matches. Ids: segment by UUID, contact by numeric id.

Tags: Match One

  • Operation: check-segment-match
  • Endpoint: GET /api/3/segmentMatch/{segmentId}/{contactId}
Parameters (1 required)
Required
path_paramsobject

Check a segment match by external id

catalog_check-segment-match-external
Full Description

Check a segment match by external id

The segment match check with an additional external id, for callers that track contacts by an external identifier.

Tags: Match One

  • Operation: check-segment-match-external
  • Endpoint: GET /api/3/segmentMatch/{segmentId}/{contactId}/{externalId}
Parameters (1 required)
Required
path_paramsobject

Create a brand kit

catalog_create-a-brand-kit
Full Description

Before running this, show the account exactly this notice: You are responsible for ensuring that your URL retrieval and site access requests comply with applicable laws and third-party rights. By making such requests, you represent and warrant that you have all rights and consents required to use the collected content, including any data and materials collected from third-party sites.

Create a brand kit

Create a new brand kit, from a website URL or from manually supplied data.

Tags: AI

  • Operation: create-a-brand-kit
  • Endpoint: POST /api/3/ai/brand
Parameters (1 required)
Required
body

Provide exactly one of websiteUrl/brandData. Hosted only rejects neither being provided; if both are given, brandData wins and websiteUrl is silently ignored -- don't rely on that.

Create a calendar feed

catalog_create-a-calendar-feed
Full Description

Create a calendar feed

  • Operation: create-a-calendar-feed
  • Endpoint: POST /api/3/calendars
Parameters (1 required)
Required
bodyobject

Create a campaign message

catalog_create-a-campaign-message
Full Description

Create a campaign message

Associate a message with a campaign, which is the association a split (A/B) campaign uses to send more than one message.

campaignid is required; a request without it is a 400.

Only campaignid, messageid and percentage may be written. Every other field of a campaign message is a counter maintained by the sending code, and is ignored when it is submitted.

The request needs the campaigns feature to be enabled for the account, and the caller has to have access to the campaign, otherwise the request is a 403. A body without a campaignMessage object is a 400.

  • Operation: create-a-campaign-message
  • Endpoint: POST /api/3/campaignMessages
Parameters (1 required)
Required
bodyobject

Create a child schema

catalog_create-a-child-schema
Full Description

Create a child schema

  • Operation: create-a-child-schema
  • Endpoint: POST /api/3/customObjects/schemas/{id}/child
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
bodyobject

Create a contact custom field

catalog_create-a-contact-custom-field
Full Description

Create a contact custom field

Creates a custom field definition for contacts. For dropdown, listbox, radio, and checkbox fields, create the options in the same request by adding an options array inside the field payload; list relationships can likewise be added as a relations array (relid 0 relates the field to every list). Each array is capped at 25 entries and the field plus its children are created in one transaction. Options can also be added later with POST /fieldOptions or POST /fieldOption/bulk. Fails with 400 when options are sideposted on a field type that cannot have options, and 422 when the title is already used by another field. The response side-loads the created options and relations.

Tags: contact, contacts, field definition, custom field

  • Operation: create-a-contact-custom-field
  • Endpoint: POST /api/3/fields
Parameters (1 required)
Required
bodyobject

Create a Custom Field Group

catalog_create-a-custom-field-group
Full Description

Create a Custom Field Group

Create a Custom Field Group

  • Operation: create-a-custom-field-group
  • Endpoint: POST /api/3/groupDefinitions
Parameters (0 required, 2 optional)
Optional
bodyobject
query_paramsobject

Create a custom field relationship to list(s)

catalog_create-a-custom-field-relationship-to-lists
Full Description

Create a custom field relationship to list(s)

Relates a custom field to a list so the field applies to contacts on that list. relid 0 relates the field to every list. If the relationship already exists, the existing record is returned with 200 instead of 201, in a reduced shape without links and with cdate formatted as a plain SQL datetime rather than ISO 8601. To remove a relationship use DELETE /fieldRels/{fieldRelId}; to replace a field's whole set of list relationships in one call use POST /fieldRel/sync or POST /fieldRel/syncExcept.

  • Operation: create-a-custom-field-relationship-to-lists
  • Endpoint: POST /api/3/fieldRels
Parameters (1 required)
Required
bodyobject

Set an account custom field value

catalog_create-a-custom-field-value
Full Description

Set an account custom field value

Tags: account, accounts, company, field value

  • Operation: create-a-custom-field-value
  • Endpoint: POST /api/3/accountCustomFieldData
Parameters (1 required)
Required
bodyobject

Create an account custom field

catalog_create-a-customfieldmeta
Full Description

Create an account custom field

Add a new custom field to company accounts. Creates the field itself on every account: its label, type and options.

Tags: account, accounts, company, field definition, custom field

  • Operation: create-a-customfieldmeta
  • Endpoint: POST /api/3/accountCustomFieldMeta
Parameters (1 required)
Required
bodyobject

Create a deal

catalog_create-a-deal-new
Full Description

Create a deal

Create a new deal

  • Operation: create-a-deal-new
  • Endpoint: POST /api/3/deals
Parameters (1 required)
Required
bodyobject

Create a deal note

catalog_create-a-deal-note
Full Description

Create a deal note

Create a new note for a deal

  • Operation: create-a-deal-note
  • Endpoint: POST /api/3/deals/{id}/notes
Parameters (2 required)
Required
bodyobject
path_paramsobject

Create a deal role

catalog_create-a-deal-role
Full Description

Create a deal role

  • Operation: create-a-deal-role
  • Endpoint: POST /api/3/dealRoles
Parameters (0 required, 1 optional)
Optional
bodyobject

Create a stage

catalog_create-a-deal-stage
Full Description

Create a stage

Create a new stage for a pipeline

  • Operation: create-a-deal-stage
  • Endpoint: POST /api/3/dealStages
Parameters (1 required, 1 optional)
Required
bodyobject
Optional
query_paramsobject

Create a task type

catalog_create-a-deal-task-type
Full Description

Create a task type

Create a new task type

  • Operation: create-a-deal-task-type
  • Endpoint: POST /api/3/dealTasktypes
Parameters (1 required)
Required
bodyobject

Create a field option

catalog_create-a-field-option
Full Description

Create a field option

Adds one option to an existing dropdown, listbox, radio, or checkbox custom field. If the field already has an option with the same value, no new option is created and the existing option is returned with status 200 instead of 201. label defaults to value. The field id in the payload is not checked against existing fields, so a wrong id silently creates an option that never appears on any field; confirm it with GET /fields/{id} first. The 201 response echoes the property types as sent; subsequent reads return every property as a string. To create several options in one call use POST /fieldOption/bulk.

  • Operation: create-a-field-option
  • Endpoint: POST /api/3/fieldOptions
Parameters (1 required)
Required
bodyobject

Create a contact

catalog_create-a-new-contact
Full Description

Create a contact

Create a brand-new contact. This endpoint fails with a 422 duplicate-email error when a contact with the same email address already exists; it never updates an existing contact. To add or import contacts that may already exist, use POST /contact/sync (one contact) or POST /contact/bulkSync (up to 250 per request) instead: both create or update by email. To import contacts together with list subscriptions and tags, use POST /import/bulk_import. List membership and tags are managed with their own endpoints: use POST /contactLists to subscribe the contact to a list and POST /contactTags to add tags.

  • Operation: create-a-new-contact
  • Endpoint: POST /api/3/contacts
Parameters (1 required)
Required
bodyobject

Create a new event (name only)

catalog_create-a-new-event-name-only
Full Description

Create a new event (name only)

Create a new event tracking event (name only)

  • Operation: create-a-new-event-name-only
  • Endpoint: POST /api/3/eventTrackingEvents
Parameters (1 required)
Required
bodyobject

Create a group

catalog_create-a-new-group
Full Description

Create a group

  • Operation: create-a-new-group
  • Endpoint: POST /api/3/groups
Parameters (1 required)
Required
bodyobject

Create a message

catalog_create-a-new-message
Full Description

Create a message

  • Operation: create-a-new-message
  • Endpoint: POST /api/3/messages
Parameters (1 required)
Required
bodyobject

Create a tag

catalog_create-a-new-tag
Full Description

Create a tag

Creates a tag definition. This does not apply the tag to any contact; to do that, pass the new tag id to POST /contactTags, or use POST /contacts/{id}/tags to create and apply by name in one call. Always send tagType (contact or template): a tag created without it does not appear in GET /tags listings. If a non-deleted tag with the same name and type already exists, the request returns 200 with the existing tag instead of creating a duplicate. If the name is held by a deleted tag that has not been purged, the request fails with 422 and a {message, error} body rather than an errors array. Tag names must be 1 to 250 characters and cannot contain commas, line breaks, or HTML markup; such requests fail with 422 (see the 422 response for the two body shapes). Emoji and other 4-byte characters are not supported in tag names. Names are compared case-insensitively: creating a name that differs from an existing tag only in letter case returns the existing tag. Names are stored exactly as sent; leading and trailing spaces are not trimmed. Requires the tag management permission.

  • Operation: create-a-new-tag
  • Endpoint: POST /api/3/tags
Parameters (1 required)
Required
bodyobject

Create a note on a contact, deal, task, or account

catalog_create-a-note
Full Description

Create a note on a contact, deal, task, or account

Create a note against any record type. reltype names the record type and relid its id — reltype Subscriber with the contact id in relid is how a note is added to a contact. Takes no path parameter: the record is named in the body, never in the URL. There is no /contacts/{id}/notes - the deal and account notes sibling operations do carry an {id} in their path, and copying that shape here refuses the call.

  • Operation: create-a-note
  • Endpoint: POST /api/3/notes
Parameters (1 required)
Required
bodyobject

Create a pipeline

catalog_create-a-pipeline
Full Description

Create a pipeline

Create a new pipeline

  • Operation: create-a-pipeline
  • Endpoint: POST /api/3/dealGroups
Parameters (1 required)
Required
bodyobject

Create a schema

catalog_create-a-schema
Full Description

Create a schema

  • Operation: create-a-schema
  • Endpoint: POST /api/3/customObjects/schemas
Parameters (1 required)
Required
bodyobject

Create a secondary contact

catalog_create-a-secondary-contact
Full Description

Create a secondary contact

Create a new secondary contact for a deal

  • Operation: create-a-secondary-contact
  • Endpoint: POST /api/3/contactDeals
Parameters (1 required)
Required
bodyobject

Create a task outcome

catalog_create-a-task-outcome
Full Description

Create a task outcome

Create a new task outcome

  • Operation: create-a-task-outcome
  • Endpoint: POST /api/3/taskOutcomes
Parameters (1 required)
Required
bodyobject

Create an account

catalog_create-an-account-new
Full Description

Create an account

Create a new account

  • Operation: create-an-account-new
  • Endpoint: POST /api/3/accounts
Parameters (1 required)
Required
bodyobject

Create an account note

catalog_create-an-account-note
Full Description

Create an account note

Create a new note for an account

  • Operation: create-an-account-note
  • Endpoint: POST /api/3/accounts/{id}/notes
Parameters (2 required)
Required
bodyobject
path_paramsobject

Create a company mailing address for email footers

catalog_create-an-address
Full Description

Create a company mailing address for email footers

Add a physical sender address to the account for use in email footers and forms. Send the fields inside an address object; company_name, address_1 and country are required, and country takes a two-character code.

  • Operation: create-an-address
  • Endpoint: POST /api/3/addresses
Parameters (1 required)
Required
bodyobject

Create Campaign

catalog_create-campaign
Full Description

Create Campaign

  • Operation: create-campaign
  • Endpoint: POST /api/3/campaign
Parameters (1 required)
Required
bodyobject

Create a connection

catalog_create-connection
Full Description

Create a connection

Create a new connection resource.

  • Operation: create-connection
  • Endpoint: POST /api/3/connections
Parameters (1 required)
Required
bodyobject

Add a tag to contact

catalog_create-contact-tag
Full Description

Add a tag to contact

Applies one existing tag to one contact. contact is a contact id and tag is a tag id; they are different id spaces, so the tag id must come from GET /tags or POST /tags, never from a contact record. The response's contactTag id is the association id used by DELETE /contactTags/{id}. A new association returns 201. The contact is included under contacts; the tag definition is included under tags when activity logging is enabled for the account, so do not rely on it and fetch the tag from GET /tags/{id} if needed. In the 201 body, contact and tag inside contactTag are numbers as sent, while every other response returns them as strings. If the tag is already applied, the request returns 200 with the existing association only, so it is safe to repeat. A tag name in the tag field fails with 400 ("No tag id provided"); to apply tags by name, or several tags at once, use POST /contacts/{id}/tags instead. Returns 404 if the contact does not exist or the tag does not exist or was deleted. Requires the contact edit permission; users outside the main user group can only tag contacts they have access to.

  • Operation: create-contact-tag
  • Endpoint: POST /api/3/contactTags
Parameters (1 required)
Required
bodyobject

Create a deal custom field

catalog_create-custom-deal-field-meta
Full Description

Create a deal custom field

Define a new custom field on deals: the deal field itself, with its type and label.

Tags: deal, deals, field definition, custom field

  • Operation: create-custom-deal-field-meta
  • Endpoint: POST /api/3/dealCustomFieldMeta
Parameters (1 required)
Required
bodyobject

Set a deal custom field value

catalog_create-custom-deal-field-value
Full Description

Set a deal custom field value

Tags: deal, deals, field value

  • Operation: create-custom-deal-field-value
  • Endpoint: POST /api/3/dealCustomFieldData
Parameters (1 required)
Required
bodyobject

Create a customer

catalog_create-customer
Full Description

Create a customer

Create a new e-commerce customer resource.

  • Operation: create-customer
  • Endpoint: POST /api/3/ecomCustomers
Parameters (1 required)
Required
bodyobject

Create a list

catalog_create-new-list
Full Description

Create a list

  • Operation: create-new-list
  • Endpoint: POST /api/3/lists
Parameters (1 required)
Required
bodyobject

Create a Variable

catalog_create-variable
Full Description

Create a Variable

Create a personalization variable

  • Operation: create-variable
  • Endpoint: POST /api/3/personalizations
Parameters (1 required)
Required
bodyobject

Create a new broadcast message

catalog_createBroadcast
Full Description

Create a new broadcast message

Creates a new SMS broadcast message

Tags: Broadcasts

  • Operation: createBroadcast
  • Endpoint: POST /api/3/sms/broadcasts
Parameters (1 required)
Required
bodyobject

Duplicate Campaign

catalog_duplicate-campaign
Full Description

Duplicate Campaign

  • Operation: duplicate-campaign
  • Endpoint: POST /api/3/campaigns/{id}/copy
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
bodyobject

Retrieve exclusions list

catalog_exclusions-retrieve-a-list
Full Description

Retrieve exclusions list

The account's exclusion list: suppression rules that stop sends to matching addresses or numbers even when a contact is active on a list. Each rule has a matchPhrase, a matchType that says how the phrase is matched (exact, begin or end), and a channel: all when the rule applies to every list on both channels, allEmail or allSms when it applies to every list on that one channel, or several when it is limited to the lists named in lists. This is not the set of unsubscribed or bounced contacts, and meta.total counts rules, not contacts. To count unsubscribed or bounced contacts, use GET /contacts with status and meta=only.

  • Operation: exclusions-retrieve-a-list
  • Endpoint: GET /api/3/lists/exclusions
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve an exclusion

catalog_exclusions-retrieve-an-exclusion
Full Description

Retrieve an exclusion

Retrieve one exclusion rule by id. See GET /lists/exclusions for what a rule is and how matchType and channel are read.

  • Operation: exclusions-retrieve-an-exclusion
  • Endpoint: GET /api/3/lists/exclusions/{id}
Parameters (1 required)
Required
path_paramsobject

Export broadcast metrics

catalog_exportBroadcastMetrics
Full Description

Export broadcast metrics

Export broadcast performance metrics as CSV

Tags: Metrics, Exports, Broadcasts

  • Operation: exportBroadcastMetrics
  • Endpoint: POST /api/3/sms/broadcasts/export
Parameters (0 required, 1 optional)
Optional
bodyobject

List all forms

catalog_forms-1
Full Description

List all forms

  • Operation: forms-1
  • Endpoint: GET /api/3/forms
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List the webhook event types available for subscription

catalog_get-a-list-of-webhook-events
Full Description

List the webhook event types available for subscription

Returns the event types a webhook can subscribe to, not events that have occurred. For events that happened, read a contact's tracking logs instead.

  • Operation: get-a-list-of-webhook-events
  • Endpoint: GET /api/3/webhook/events
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all webhooks

catalog_get-a-list-of-webhooks
Full Description

List all webhooks

List all existing webhooks

  • Operation: get-a-list-of-webhooks
  • Endpoint: GET /api/3/webhooks
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve a saved response

catalog_get-a-savedresponse
Full Description

Retrieve a saved response

  • Operation: get-a-savedresponse
  • Endpoint: GET /api/3/savedResponses/{id}
Parameters (1 required)
Required
path_paramsobject

Get a record by id

catalog_get-a-single-record
Full Description

Get a record by id

  • Operation: get-a-single-record
  • Endpoint: GET /api/3/customObjects/records/{schemaId}/{recordId}
Parameters (1 required)
Required
path_paramsobject

Get a record by external id

catalog_get-a-single-record-using-external-id
Full Description

Get a record by external id

  • Operation: get-a-single-record-using-external-id
  • Endpoint: GET /api/3/customObjects/records/{schemaId}/external/{externalId}
Parameters (1 required)
Required
path_paramsobject

Get All Custom Field Groups

catalog_get-all-custom-field-groups
Full Description

Get All Custom Field Groups

  • Operation: get-all-custom-field-groups
  • Endpoint: GET /api/3/groupMembers
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve a branding

catalog_get-branding
Full Description

Retrieve a branding

Retrieve one branding record by id: site name, logo, favicon, header and footer content, admin template — the account's white-label settings.

  • Operation: get-branding
  • Endpoint: GET /api/3/brandings/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a connection

catalog_get-connection
Full Description

Retrieve a connection

Retrieve an existing connection resource.

  • Operation: get-connection
  • Endpoint: GET /api/3/connections/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a contact

catalog_get-contact
Full Description

Retrieve a contact

Retrieve an existing contact

  • Operation: get-contact
  • Endpoint: GET /api/3/contacts/{id}
Parameters (1 required)
Required
path_paramsobject

Look up which contact produced a tracking log entry

catalog_get-contact-by-event-id
Full Description

Look up which contact produced a tracking log entry

Returns the contact that a tracking-log entry belongs to. eventId must be the id of a tracking log entry, as returned by GET /contacts/{id}/trackingLogs or GET /trackingLogs. It is not a contact id and not an event-tracking event name. Passing a contact id returns 404 (No Result found for TrackingLog) when no entry has that id, or the contact of an unrelated entry when one does, so a 200 does not mean the id spaces are interchangeable. To fetch a contact by contact id, use GET /contacts/{id} (retrieve-a-contact) instead. To list the tracking events of a known contact, use GET /contacts/{id}/trackingLogs.

  • Operation: get-contact-by-event-id
  • Endpoint: GET /api/3/trackingLogs/{eventId}/contact
Parameters (1 required)
Required
path_paramsobject

Get Custom Field Group by ID

catalog_get-custom-field-to-field-group
Full Description

Get Custom Field Group by ID

  • Operation: get-custom-field-to-field-group
  • Endpoint: GET /api/3/groupMembers/{groupId}
Parameters (1 required)
Required
path_paramsobject

Retrieve a customer

catalog_get-customer
Full Description

Retrieve a customer

Retrieve an existing e-commerce customer resource.

  • Operation: get-customer
  • Endpoint: GET /api/3/ecomCustomers/{id}
Parameters (1 required)
Required
path_paramsobject

Get Editor Markup

catalog_get-editor-markup
Full Description

Get Editor Markup

Get Editor Markup

  • Operation: get-editor-markup
  • Endpoint: GET /api/3/content/editorMarkup/{messageId}
Parameters (1 required)
Required
path_paramsobject

Get Flow Execution

catalog_get-flow-execution
Full Description

Get Flow Execution

Get Flow Execution by Id.

Tags: Flows

  • Operation: get-flow-execution
  • Endpoint: GET /api/3/channel/whatsapp/flow-execution/{id}
Parameters (1 required)
Required
path_paramsobject

Get Flow Execution Contact by Id

catalog_get-flow-execution-contact
Full Description

Get Flow Execution Contact by Id

Get Flow Execution Contact by Id.

Tags: Flows

  • Operation: get-flow-execution-contact
  • Endpoint: GET /api/3/channel/whatsapp/flow-execution-contact/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve an order

catalog_get-order
Full Description

Retrieve an order

Retrieve an existing e-commerce order resource.

  • Operation: get-order
  • Endpoint: GET /api/3/ecomOrders/{ecomOrderId}
Parameters (1 required)
Required
path_paramsobject

Retrieve SMS credit balance

catalog_get-sms-credits
Full Description

Retrieve SMS credit balance

The account's SMS sending credits for the current period: how many are included, used and still available, and when the balance next refills. No parameters.

Tags: Credits

  • Operation: get-sms-credits
  • Endpoint: GET /api/3/sms/credits

Retrieve a task

catalog_get-task
Full Description

Retrieve a task

Retrieve an existing task

  • Operation: get-task
  • Endpoint: GET /api/3/dealTasks/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a user

catalog_get-user
Full Description

Retrieve a user

Retrieve an existing user

  • Operation: get-user
  • Endpoint: GET /api/3/users/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a user by email

catalog_get-user-email
Full Description

Retrieve a user by email

Retrieve an existing user by looking up their email address

  • Operation: get-user-email
  • Endpoint: GET /api/3/users/email/{email}
Parameters (1 required)
Required
path_paramsobject

Retrieve logged-in user

catalog_get-user-loggedin
Full Description

Retrieve logged-in user

Retrieve the logged-in user

  • Operation: get-user-loggedin
  • Endpoint: GET /api/3/users/me

Retrieve a user by username

catalog_get-user-username
Full Description

Retrieve a user by username

Retrieve an existing user by looking up their username

  • Operation: get-user-username
  • Endpoint: GET /api/3/users/username/{username}
Parameters (1 required)
Required
path_paramsobject

Retrieve a webhook

catalog_get-webhook
Full Description

Retrieve a webhook

Retrieve an existing webhook

  • Operation: get-webhook
  • Endpoint: GET /api/3/webhooks/{id}
Parameters (1 required)
Required
path_paramsobject

Get WhatsApp Template

catalog_get-whatsapp-template
Full Description

Get WhatsApp Template

Gets a WhatsApp Template by Id.

Tags: Templates

  • Operation: get-whatsapp-template
  • Endpoint: GET /api/3/channel/whatsapp/channels/whatsapp/template/{id}
Parameters (1 required)
Required
path_paramsobject

Get broadcast message

catalog_getBroadcast
Full Description

Get broadcast message

Retrieves the full details for one broadcast message

Tags: Broadcasts

  • Operation: getBroadcast
  • Endpoint: GET /api/3/sms/broadcasts/{id}
Parameters (1 required)
Required
path_paramsobject

Get all broadcast metrics

catalog_getBroadcastMetrics
Full Description

Get all broadcast metrics

Returns metrics for specified broadcast IDs

Tags: Metrics, Broadcasts

  • Operation: getBroadcastMetrics
  • Endpoint: POST /api/3/sms/broadcasts/metrics
Parameters (0 required, 2 optional)
Optional
bodyobject
query_paramsobject

Get broadcast snapshot

catalog_getBroadcastSnapshotByIds
Full Description

Get broadcast snapshot

Returns snapshot for specified broadcast IDs

Tags: Metrics, Snapshots, Broadcasts

  • Operation: getBroadcastSnapshotByIds
  • Endpoint: POST /api/3/sms/broadcasts/metrics/snapshot
Parameters (0 required, 1 optional)
Optional
bodyobject

List all accounts

catalog_list-all-accounts
Full Description

List all accounts

Retrieve all existing account

  • Operation: list-all-accounts
  • Endpoint: GET /api/3/accounts
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List which user groups each mailing address belongs to

catalog_list-all-address-groups
Full Description

List which user groups each mailing address belongs to

One item per address-to-group association, carrying the address and the user group it is assigned to. Account-wide index, not scoped to an address or a group: read it whole and match the pairs yourself. It answers which group holds an address before that association is deleted. Page with limit and offset.

  • Operation: list-all-address-groups
  • Endpoint: GET /api/3/addressGroups
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List which lists each mailing address belongs to

catalog_list-all-address-lists
Full Description

List which lists each mailing address belongs to

One item per address-to-list association, carrying the address and the list it is assigned to. Account-wide index, not scoped to an address or a list: read it whole and match the pairs yourself. It answers which lists use an address before that association is deleted. Page with limit and offset.

  • Operation: list-all-address-lists
  • Endpoint: GET /api/3/addressLists
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all addresses

catalog_list-all-addresses
Full Description

List all addresses

  • Operation: list-all-addresses
  • Endpoint: GET /api/3/addresses
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all associations

catalog_list-all-associations-1
Full Description

List all associations

Retrieve all existing account association

  • Operation: list-all-associations-1
  • Endpoint: GET /api/3/accountContacts
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all saved audience segments

catalog_list-all-audiences
Full Description

List all saved audience segments

Every audience segment saved from the segment builder, with each segment's id (a UUID), name and summary. This is the inventory of segments the account has built so far. A 404 whose body is a data envelope ({"data": []}) means the account has none — the segment service answers an empty store that way; it is an empty result, not a failed call. Legacy /segments records are a separate, older store.

Tags: Saved Segment Summaries

  • Operation: list-all-audiences
  • Endpoint: GET /api/3/audiences
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all automations

catalog_list-all-automations
Full Description

List all automations

  • Operation: list-all-automations
  • Endpoint: GET /api/3/automations
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all bounce logs

catalog_list-all-bounce-logs
Full Description

List all bounce logs

Every bounce log entry on the account, one per bounced message with its timestamp, bounce code, contact and campaign. Filter to one contact with filters[subscriberid]. filters[tstamp] matches one exact timestamp, not a range, so there is no way to count bounces for a date range in one request; to bound by time, sort with orders[tstamp] and page until the entries pass the boundary. meta.total is the number of matching entries. Unknown filter keys are ignored rather than rejected, so the response can look filtered when it is not, and an operator on a known key such as filters[tstamp][gt] is applied as an exact match with that value, not as a range. 20 entries per request by default and at most 100; page with offset.

  • Operation: list-all-bounce-logs
  • Endpoint: GET /api/3/bounceLogs
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all calendar feeds

catalog_list-all-calendar-feeds
Full Description

List all calendar feeds

  • Operation: list-all-calendar-feeds
  • Endpoint: GET /api/3/calendars
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve a calendar feed

catalog_list-all-calendar-feeds-1
Full Description

Retrieve a calendar feed

  • Operation: list-all-calendar-feeds-1
  • Endpoint: GET /api/3/calendars/{id}
Parameters (1 required)
Required
path_paramsobject

List all campaigns

catalog_list-all-campaigns
Full Description

List all campaigns

  • Operation: list-all-campaigns
  • Endpoint: GET /api/3/campaigns
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all connections

catalog_list-all-connections
Full Description

List all connections

List all existing connection resources.

  • Operation: list-all-connections
  • Endpoint: GET /api/3/connections
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all automations a contact is in

catalog_list-all-contact-automations
Full Description

List all automations a contact is in

  • Operation: list-all-contact-automations
  • Endpoint: GET /api/3/contactAutomations
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List contact subscriptions to lists

catalog_list-all-contact-list-subscriptions
Full Description

List contact subscriptions to lists

One row per contact-to-list subscription, carrying the contact id, the list id, the subscription status and its dates. Filter with contact to see every list one contact is on, or with status to see the subscriptions in one state. There is no filter by list: a listid parameter is ignored and the unfiltered rows come back. meta.total is the number of subscription rows that match, as a string, not a number of contacts. To list or count the contacts on a list, use GET /contacts with listid, adding status for one membership status and meta=only for a count without records. 20 rows per request by default and at most 100; page with offset.

  • Operation: list-all-contact-list-subscriptions
  • Endpoint: GET /api/3/contactLists
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all contacts in an automation

catalog_list-all-contactautomations-for-automation
Full Description

List all contacts in an automation

List the contacts currently in, or that have run through, a single automation. This is a paginated equivalent of filtering /api/3/contactAutomations by filters[seriesid].

  • Operation: list-all-contactautomations-for-automation
  • Endpoint: GET /api/3/automations/{seriesId}/contactAutomations
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

List all automations the contact is in

catalog_list-all-contactautomations-for-contact
Full Description

List all automations the contact is in

  • Operation: list-all-contactautomations-for-contact
  • Endpoint: GET /api/3/contacts/{id}/contactAutomations
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

List contact custom field values

catalog_list-all-custom-field-values
Full Description

List contact custom field values

Lists stored custom field values across contacts, one entry per contact-and-field pair, 20 per page by default. Each entry's contact property is the contact id, field is the custom field definition id, and value holds the stored text. Use filters[fieldid] to scope to one field, contacts[] to scope to contacts, or GET /contacts/{id}/fieldValues for a single contact's values. Values belonging to deleted contacts are excluded. Use only the query parameters documented here: unsupported filter and order fields are silently ignored, so the response looks filtered but is not; filters match exactly. Date and datetime values are returned in ISO 8601 in the API user's timezone. meta.total is the number of matching values, returned as a string.

Tags: contact, contacts, field value

  • Operation: list-all-custom-field-values
  • Endpoint: GET /api/3/fieldValues
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List account custom field values

catalog_list-all-custom-field-values-2
Full Description

List account custom field values

The values CRM company accounts hold in their company account custom fields, one item per account per field.

Tags: account, accounts, company, field value

  • Operation: list-all-custom-field-values-2
  • Endpoint: GET /api/3/accountCustomFieldData
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List deal custom field values

catalog_list-all-custom-fielddata-field-values
Full Description

List deal custom field values

The values deals hold in their deal custom fields, one item per deal per field.

Tags: deal, deals, field value

  • Operation: list-all-custom-fielddata-field-values
  • Endpoint: GET /api/3/dealCustomFieldData
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List account custom fields

catalog_list-all-custom-fields-meta
Full Description

List account custom fields

Every custom field defined on CRM company accounts: the company account fields, each with its type and label.

Tags: account, accounts, company, field definition, custom field

  • Operation: list-all-custom-fields-meta
  • Endpoint: GET /api/3/accountCustomFieldMeta
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all customers

catalog_list-all-customers
Full Description

List all customers

List all e-commerce customer resources.

  • Operation: list-all-customers
  • Endpoint: GET /api/3/ecomCustomers
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all deal activities

catalog_list-all-deal-activities
Full Description

List all deal activities

View a recent activity for Deals. A specific deal's activity can also be viewed using /api/3/deals/[dealID]/dealActivities.

  • Operation: list-all-deal-activities
  • Endpoint: GET /api/3/dealActivities
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all deal roles

catalog_list-all-deal-roles
Full Description

List all deal roles

  • Operation: list-all-deal-roles
  • Endpoint: GET /api/3/dealRoles
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all stages

catalog_list-all-deal-stages
Full Description

List all stages

Retrieve all existing stages

  • Operation: list-all-deal-stages
  • Endpoint: GET /api/3/dealStages
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all task types

catalog_list-all-deal-task-types
Full Description

List all task types

Retrieve all existing task types

  • Operation: list-all-deal-task-types
  • Endpoint: GET /api/3/dealTasktypes
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all deals

catalog_list-all-deals
Full Description

List all deals

Retrieve all existing deals

  • Operation: list-all-deals
  • Endpoint: GET /api/3/deals
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all email activities

catalog_list-all-email-activities
Full Description

List all email activities

  • Operation: list-all-email-activities
  • Endpoint: GET /api/3/emailActivities
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all events (names only)

catalog_list-all-event-types
Full Description

List all events (names only)

List the names of tracked events

  • Operation: list-all-event-types
  • Endpoint: GET /api/3/eventTrackingEvents
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all field options

catalog_list-all-field-options
Full Description

List all field options

Lists the options of the account's dropdown, listbox, radio, and checkbox custom contact fields, 20 per page by default. Use field to list one custom field's options; that and ids are the only supported filters on this endpoint. filters[...] and orders[...] parameters are not supported here and are silently ignored, so the response looks filtered but is not. Each entry's id is a field option id: it is valid only on the fieldOptions endpoints and must never be passed to /fields/{id}, which addresses whole custom field definitions in a separate id space. Each entry's field property holds the id of the field definition it belongs to. meta.total is the number of matching options, returned as a string.

  • Operation: list-all-field-options
  • Endpoint: GET /api/3/fieldOptions
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List All Group Limits

catalog_list-all-group-limits
Full Description

List All Group Limits

  • Operation: list-all-group-limits
  • Endpoint: GET /api/3/groupLimits
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all groups

catalog_list-all-groups
Full Description

List all groups

  • Operation: list-all-groups
  • Endpoint: GET /api/3/groups
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List which user groups can access each list

catalog_list-all-list-group-permissions
Full Description

List which user groups can access each list

One item per list-to-group permission, carrying the list and the user group granted access. This is what answers which groups already hold access before a permission is added. Page with limit and offset.

Tags: permissions, access, user group

  • Operation: list-all-list-group-permissions
  • Endpoint: GET /api/3/listGroups
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all messages

catalog_list-all-messages
Full Description

List all messages

  • Operation: list-all-messages
  • Endpoint: GET /api/3/messages
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all orders

catalog_list-all-orders
Full Description

List all orders

List all existing e-commerce order resources.

  • Operation: list-all-orders
  • Endpoint: GET /api/3/ecomOrders
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all pipelines

catalog_list-all-pipelines
Full Description

List all pipelines

Retrieve all existing pipelines

  • Operation: list-all-pipelines
  • Endpoint: GET /api/3/dealGroups
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all saved responses

catalog_list-all-saved-responses
Full Description

List all saved responses

  • Operation: list-all-saved-responses
  • Endpoint: GET /api/3/savedResponses
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all schemas

catalog_list-all-schemas
Full Description

List all schemas

Retrieve all schemas available within an account.

Users are encouraged to leverage the ?showFields=all query parameter when programmatically creating new schema fields, to ensure field id uniqueness. Fields that have been deleted will contain a status: marked_for_deletion attribute.

  • Operation: list-all-schemas
  • Endpoint: GET /api/3/customObjects/schemas
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all scores

catalog_list-all-scores
Full Description

List all scores

  • Operation: list-all-scores
  • Endpoint: GET /api/3/scores
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all secondary contacts

catalog_list-all-secondary-contacts
Full Description

List all secondary contacts

Retrieve all secondary contacts

  • Operation: list-all-secondary-contacts
  • Endpoint: GET /api/3/contactDeals
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all segments

catalog_list-all-segments
Full Description

List all segments

Records in hosted's legacy segment table. Segments saved from the segment builder are a different store: list them with /audiences and read their definitions with /segmentsV2.

  • Operation: list-all-segments
  • Endpoint: GET /api/3/segments
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List SMS broadcast lists

catalog_list-all-sms-lists
Full Description

List SMS broadcast lists

What an SMS broadcast can send to, with each one's subscriber count. Filter by name; page with limit and offset. Ids and subscriber counts arrive as JSON strings, not numbers.

Tags: Broadcasts

  • Operation: list-all-sms-lists
  • Endpoint: GET /api/3/sms/lists
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List deal task notification settings

catalog_list-all-task-notifications
Full Description

List deal task notification settings

One item per deal-task notification rule, carrying the task it belongs to and the notification configured for it. Account-wide: it cannot be filtered to one task or one user, so it answers what is configured overall rather than for a particular record. Page with limit and offset.

Tags: notifications, alerts, reminders

  • Operation: list-all-task-notifications
  • Endpoint: GET /api/3/taskNotifications
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all task outcomes

catalog_list-all-task-outcomes
Full Description

List all task outcomes

Retrieve all existing task outcomes

  • Operation: list-all-task-outcomes
  • Endpoint: GET /api/3/taskOutcomes
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all task type - outcome relations

catalog_list-all-task-type-outcome-relations
Full Description

List all task type - outcome relations

Retrieve all existing task type - outcome relations

  • Operation: list-all-task-type-outcome-relations
  • Endpoint: GET /api/3/tasktypeOutcomeRels
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all tasks

catalog_list-all-tasks
Full Description

List all tasks

Retrieve a list of existing tasks

  • Operation: list-all-tasks
  • Endpoint: GET /api/3/dealTasks
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all templates

catalog_list-all-templates
Full Description

List all templates

Retrieve the email templates in the account. Results are paginated and can be filtered; meta.total holds the total number of templates matching the request.

  • Operation: list-all-templates
  • Endpoint: GET /api/3/templates
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all tracked domains

catalog_list-all-tracked-domains
Full Description

List all tracked domains

List every whitelisted domain. Each entry is identified by its name; whitelisted domains have no id in this representation. The collection is empty when the feature is switched off rather than an error, so check GET /api/3/siteTracking before treating an empty list as no domains configured.

  • Operation: list-all-tracked-domains
  • Endpoint: GET /api/3/siteTrackingDomains
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all users

catalog_list-all-users
Full Description

List all users

List all existing users

  • Operation: list-all-users
  • Endpoint: GET /api/3/users
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all whitelisted domains

catalog_list-all-whitelisted-domains
Full Description

List all whitelisted domains

List of all whitelisted site tracking domains

  • Operation: list-all-whitelisted-domains
  • Endpoint: GET /api/3/prism/urlWhitelistings
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List a contact's activities

catalog_list-contact-activities
Full Description

List a contact's activities

View your contact's recent activity. The activity is generated when a contact is retrieved via /api/3/contacts/[contactID]. This endpoint should be used after retrieving a contact to obtain the latest data. This is useful for searching for contacts that match certain criteria - such as being part of a certain list, or having a specific custom field value.

  • Operation: list-contact-activities
  • Endpoint: GET /api/3/activities
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List Conversations

catalog_list-conversations
Full Description

List Conversations

Lists Conversations.

Tags: Conversations

  • Operation: list-conversations
  • Endpoint: GET /api/3/channel/whatsapp/inbox/conversation
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List EcomOrderProducts

catalog_list-ecomorderproducts
Full Description

List EcomOrderProducts

  • Operation: list-ecomorderproducts
  • Endpoint: GET /api/3/ecomOrderProducts
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List Flow Executions

catalog_list-flow-execution
Full Description

List Flow Executions

Lists Flow Executions.

Tags: Flows

  • Operation: list-flow-execution
  • Endpoint: GET /api/3/channel/whatsapp/flow-execution
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List Flow Execution Contacts

catalog_list-flow-execution-contact
Full Description

List Flow Execution Contacts

Lists Flow Execution Contacts.

Tags: Flows

  • Operation: list-flow-execution-contact
  • Endpoint: GET /api/3/channel/whatsapp/flow-execution-contact
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Catalog List-import-failed-rows

catalog_list-import-failed-rows
Full Description

List the rows of an app or integration import that failed or were only partly imported, with reasons

For one import from GET /import/history, list the rows that did not import (type failure) or that imported but had a list subscription skipped (type partial), each with its email and the reason. This is the endpoint to use when a user asks why their import had errors. It covers imports started from the app or by an integration only; imports submitted through POST /import/bulk_import are not in the history and their reasons are only available through the import callback. Returns at most 500 rows, oldest first, and there is no paging beyond that. For partial rows the reason starts with "Imported under ID: <contact id>", followed by the skipped reason in parentheses. Integration imports have no per-row log and return an empty list. An import id that does not exist, or that the caller is not allowed to see, is a 404. Requires the contact import permission.

  • Operation: list-import-failed-rows
  • Endpoint: GET /api/3/import/history/{importId}/{type}
Parameters (1 required)
Required
path_paramsobject

List contact imports made from the app or by integrations

catalog_list-import-history
Full Description

List contact imports made from the app or by integrations

List this account's contact imports that were started from the app's import tool (CSV or file uploads) or by an integration, newest first, with how many rows imported, partly imported, or failed. Use it to answer questions about an import a user ran in the app, then use GET /import/history/{importId}/{type} to get the rows that failed and why. Imports submitted through POST /import/bulk_import do not appear here; check those with GET /import/info. Users outside the main user group only see imports from their own group. Paginated with limit (1 to 100, default 20) and offset; meta.total is the number of imports visible to the caller. Requires the contact import permission.

  • Operation: list-import-history
  • Endpoint: GET /api/3/import/history
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List EcomOrderProducts for a Specific EcomOrder

catalog_list-products-for-order
Full Description

List EcomOrderProducts for a Specific EcomOrder

  • Operation: list-products-for-order
  • Endpoint: GET /api/3/ecomOrders/{id}/orderProducts
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

List records by schema

catalog_list-records-created-from-a-schema
Full Description

List records by schema

  • Operation: list-records-created-from-a-schema
  • Endpoint: GET /api/3/customObjects/records/{schemaId}
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

List SMS broadcast delivery failures

catalog_list-sms-broadcast-failures
Full Description

List SMS broadcast delivery failures

Delivery failures for one SMS broadcast, grouped by error code and source (ac or twilio) with a count per group. Optional start_date and end_date bounds.

Tags: Failures, Broadcasts, Metrics

  • Operation: list-sms-broadcast-failures
  • Endpoint: GET /api/3/sms/broadcasts/metrics/{broadcastId}/failures
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

List SMS broadcast recipients

catalog_list-sms-broadcast-recipients
Full Description

List SMS broadcast recipients

Recipients of one SMS broadcast with per-recipient delivery and engagement, filterable by deliverability (deliveries, failures) and engagement (clicks, replies, optOuts), searchable, ordered, and paged with limit and offset.

Tags: Recipients, Broadcasts

  • Operation: list-sms-broadcast-recipients
  • Endpoint: GET /api/3/sms/broadcasts/{broadcastId}/recipients
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

List Variables

catalog_list-variables
Full Description

List Variables

Retrieve a list of personalization variables

  • Operation: list-variables
  • Endpoint: GET /api/3/personalizations
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List WhatsApp Templates

catalog_list-whatsapp-templates
Full Description

List WhatsApp Templates

Lists WhatsApp Templates. You can search with the name and status fields using the ?seach=my-template-name query parameter.

Tags: Templates

  • Operation: list-whatsapp-templates
  • Endpoint: GET /api/3/channel/whatsapp/channels/whatsapp/template
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Get all broadcast messages

catalog_listBroadcasts
Full Description

Get all broadcast messages

Gets a paged list of all of a customer's broadcast messages with optional filtering

Tags: Broadcasts

  • Operation: listBroadcasts
  • Endpoint: GET /api/3/sms/broadcasts
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Personalization Tags

catalog_personalization-tags
Full Description

Personalization Tags

  • Operation: personalization-tags
  • Endpoint: GET /api/3/stripo/personalizationTags
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Preview a campaign message

catalog_preview-a-campaign-message
Full Description

Preview a campaign message

Render a campaign message for one address and return it parsed into headers and bodies, without sending anything. This is the v3 equivalent of the preview action of the v1 campaign_send action.

Rendering personalizes the message for toEmail. Unlike [Send a test of a campaign](/reference/send-a-campaign-test), no email is delivered and no test-send limit applies.

  • Operation: preview-a-campaign-message
  • Endpoint: POST /api/3/campaigns/test-preview
Parameters (1 required)
Required
bodyobject

Retrieve a brand kit

catalog_retrieve-a-brand-kit
Full Description

Retrieve a brand kit

Get a single brand kit by UUID.

Tags: AI

  • Operation: retrieve-a-brand-kit
  • Endpoint: GET /api/3/ai/brand/{uuid}
Parameters (1 required)
Required
path_paramsobject

Retrieve a campaign

catalog_retrieve-a-campaign
Full Description

Retrieve a campaign

  • Operation: retrieve-a-campaign
  • Endpoint: GET /api/3/campaigns/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve the source of a campaign message

catalog_retrieve-a-campaign-message-source
Full Description

Retrieve the source of a campaign message

Render a campaign message and return the generated email. This is the v3 equivalent of the source and structured actions of the v1 campaign_send action.

With structured=0 (the default) the rendered message is returned as one raw MIME string in result. With structured=1 the message is parsed and its headers, parts and attachments are returned as separate members alongside the raw source.

Rendering personalizes the message for email; the default address _t.e.s.t_@example.com renders the message without a contact. No email is delivered by this endpoint.

The account must have the Campaigns module enabled, otherwise the request answers 403.

  • Operation: retrieve-a-campaign-message-source
  • Endpoint: GET /api/3/message/source
Parameters (1 required)
Required
query_paramsobject

Retrieve a contact tag

catalog_retrieve-a-contact-tag
Full Description

Retrieve a contact tag

Returns a single contact-to-tag association by its id. The contact and tag fields are ids; fetch the tag definition itself from GET /tags/{id}. Returns 404 if the association does not exist.

  • Operation: retrieve-a-contact-tag
  • Endpoint: GET /api/3/contactTags/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve an automation a contact is in

catalog_retrieve-a-contactautomation
Full Description

Retrieve an automation a contact is in

  • Operation: retrieve-a-contactautomation
  • Endpoint: GET /api/3/contactAutomations/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a contacts geo IP address

catalog_retrieve-a-contacts-geo-ip-address
Full Description

Retrieve a contacts geo IP address

  • Operation: retrieve-a-contacts-geo-ip-address
  • Endpoint: GET /api/3/geoIps/{geoAddressId}/geoAddress
Parameters (1 required)
Required
path_paramsobject

Retrieve a contact's score value

catalog_retrieve-a-contacts-score-value
Full Description

Retrieve a contact's score value

  • Operation: retrieve-a-contacts-score-value
  • Endpoint: GET /api/3/contacts/{id}/scoreValues
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a deal custom field

catalog_retrieve-a-custom-deal-field-meta
Full Description

Retrieve a deal custom field

Tags: deal, deals, field definition, custom field

  • Operation: retrieve-a-custom-deal-field-meta
  • Endpoint: GET /api/3/dealCustomFieldMeta/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a deal custom field value

catalog_retrieve-a-custom-deal-field-value
Full Description

Retrieve a deal custom field value

Tags: deal, deals, field value

  • Operation: retrieve-a-custom-deal-field-value
  • Endpoint: GET /api/3/dealCustomFieldData/{id}
Parameters (1 required)
Required
path_paramsobject

Get a custom field by ID

catalog_retrieve-a-custom-field-contact
Full Description

Get a custom field by ID

Returns one custom field definition by its field id, with its options side-loaded in a fieldOptions array and its list relationships in a fieldRels array. Ids inside fieldOptions are field option ids, not field ids; they are only valid on the fieldOptions endpoints. 404 if no field has this id.

  • Operation: retrieve-a-custom-field-contact
  • Endpoint: GET /api/3/fields/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve an account custom field

catalog_retrieve-a-custom-field-meta
Full Description

Retrieve an account custom field

Tags: account, accounts, company, field definition, custom field

  • Operation: retrieve-a-custom-field-meta
  • Endpoint: GET /api/3/accountCustomFieldMeta/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve an account custom field value

catalog_retrieve-a-custom-field-value
Full Description

Retrieve an account custom field value

Tags: account, accounts, company, field value

  • Operation: retrieve-a-custom-field-value
  • Endpoint: GET /api/3/accountCustomFieldData/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a deal

catalog_retrieve-a-deal
Full Description

Retrieve a deal

Retrieve an existing deal

  • Operation: retrieve-a-deal
  • Endpoint: GET /api/3/deals/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a stage

catalog_retrieve-a-deal-stage
Full Description

Retrieve a stage

Retrieve an existing stage

  • Operation: retrieve-a-deal-stage
  • Endpoint: GET /api/3/dealStages/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a task type

catalog_retrieve-a-deal-task-type
Full Description

Retrieve a task type

Retrieve an existing task type

  • Operation: retrieve-a-deal-task-type
  • Endpoint: GET /api/3/dealTasktypes/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a field option

catalog_retrieve-a-field-option
Full Description

Retrieve a field option

Returns one field option by its field option id. The option's field property holds the id of the custom field definition it belongs to; use that id, never the option id, on the /fields/{id} endpoints. 404 if no option has this id.

  • Operation: retrieve-a-field-option
  • Endpoint: GET /api/3/fieldOptions/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a contact custom field value

catalog_retrieve-a-fieldvalues
Full Description

Retrieve a contact custom field value

Returns one stored custom field value by its fieldValue id. The entry's contact property is the contact id and field is the custom field definition id. 404 if no fieldValue has this id.

Tags: contact, contacts, field value

  • Operation: retrieve-a-fieldvalues
  • Endpoint: GET /api/3/fieldValues/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a group

catalog_retrieve-a-group
Full Description

Retrieve a group

  • Operation: retrieve-a-group
  • Endpoint: GET /api/3/groups/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a list

catalog_retrieve-a-list
Full Description

Retrieve a list

Retrieve one contact list by id. The single-list response carries the list's channel, description and timestamps but not the active_subscribers and non_deleted_subscribers counters; read those from GET /lists.

Tags: contact list

  • Operation: retrieve-a-list
  • Endpoint: GET /api/3/lists/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a message

catalog_retrieve-a-message
Full Description

Retrieve a message

  • Operation: retrieve-a-message
  • Endpoint: GET /api/3/messages/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a note

catalog_retrieve-a-note
Full Description

Retrieve a note

  • Operation: retrieve-a-note
  • Endpoint: GET /api/3/notes/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a pipeline

catalog_retrieve-a-pipeline
Full Description

Retrieve a pipeline

Retrieve an existing pipeline

  • Operation: retrieve-a-pipeline
  • Endpoint: GET /api/3/dealGroups/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a schema

catalog_retrieve-a-schema
Full Description

Retrieve a schema

Retrieve a specific schema by id.

Users are encouraged to leverage the ?showFields=all query parameter when programmatically creating new schema fields, to ensure field id uniqueness. Fields that have been deleted will contain a status: marked_for_deletion attribute.

  • Operation: retrieve-a-schema
  • Endpoint: GET /api/3/customObjects/schemas/{id}
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a score

catalog_retrieve-a-score
Full Description

Retrieve a score

  • Operation: retrieve-a-score
  • Endpoint: GET /api/3/scores/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a secondary contact

catalog_retrieve-a-secondary-contact
Full Description

Retrieve a secondary contact

Retrieve an existing secondary contact

  • Operation: retrieve-a-secondary-contact
  • Endpoint: GET /api/3/contactDeals/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a segment

catalog_retrieve-a-segment
Full Description

Retrieve a segment

One record from hosted's legacy segment table, by integer id. Segments saved from the segment builder are a different store: list them with /audiences and read their definitions with /segmentsV2.

  • Operation: retrieve-a-segment
  • Endpoint: GET /api/3/segments/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a segment definition (V2)

catalog_retrieve-a-segment-v2
Full Description

Retrieve a segment definition (V2)

The full V2 segment definition — the condition JSON the segment builder saved — for one segment UUID. Definitions, not membership: to test whether a contact matches, use the segment match operations. A 404 whose body is a data envelope ({"data": []}) means the account has none — the segment service answers an empty store that way; it is an empty result, not a failed call.

Tags: Segments

  • Operation: retrieve-a-segment-v2
  • Endpoint: GET /api/3/segmentsV2/{segmentId}
Parameters (1 required)
Required
path_paramsobject

Retrieve a historic segment definition (V2)

catalog_retrieve-a-segment-v2-version
Full Description

Retrieve a historic segment definition (V2)

The V2 segment definition as it existed at a given timestamp — the stored historic version of a segment the builder later changed. A 404 whose body is a data envelope ({"data": []}) means the account has none — the segment service answers an empty store that way; it is an empty result, not a failed call.

Tags: Segments

  • Operation: retrieve-a-segment-v2-version
  • Endpoint: GET /api/3/segmentsV2/{segmentId}/createdDate/{timestamp}
Parameters (1 required)
Required
path_paramsobject

Retrieve a tag

catalog_retrieve-a-tag
Full Description

Retrieve a tag

Returns a single tag definition. Use GET /tags with filters[tag] to find a tag by name when the id is not known. Returns 404 if the tag does not exist.

  • Operation: retrieve-a-tag
  • Endpoint: GET /api/3/tags/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a task outcome

catalog_retrieve-a-task-outcome
Full Description

Retrieve a task outcome

Retrieve an existing task outcome

  • Operation: retrieve-a-task-outcome
  • Endpoint: GET /api/3/taskOutcomes/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a task type - outcome relation

catalog_retrieve-a-task-type-outcome-relation
Full Description

Retrieve a task type - outcome relation

Retrieve an existing task type - outcome relation

  • Operation: retrieve-a-task-type-outcome-relation
  • Endpoint: GET /api/3/tasktypeOutcomeRels/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a template

catalog_retrieve-a-template
Full Description

Retrieve a template

  • Operation: retrieve-a-template
  • Endpoint: GET /api/3/templates/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a tracking log entry

catalog_retrieve-a-tracking-log
Full Description

Retrieve a tracking log entry

Returns a single tracking log entry by its id. The same id is the eventId that GET /trackingLogs/{eventId}/contact accepts. Entry ids are returned by GET /trackingLogs and GET /contacts/{id}/trackingLogs; they are not contact ids. Returns 404 if no entry has the given id.

  • Operation: retrieve-a-tracking-log
  • Endpoint: GET /api/3/trackingLogs/{id}
Parameters (1 required)
Required
path_paramsobject

List deal custom fields

catalog_retrieve-all-custom-deal-field-meta
Full Description

List deal custom fields

Every custom field defined on deals: the deal fields, each with its type and label.

Tags: deal, deals, field definition, custom field

  • Operation: retrieve-all-custom-deal-field-meta
  • Endpoint: GET /api/3/dealCustomFieldMeta
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve all lists

catalog_retrieve-all-lists
Full Description

Retrieve all lists

Retrieve the account's contact lists, 20 per request by default and at most 100; page with offset. Each list in this collection carries two counters: active_subscribers, the contacts with an active subscription to the list, and non_deleted_subscribers, every contact still on the list in any status. The difference between them is the contacts on the list who are unconfirmed, unsubscribed or bounced; the list object does not break that remainder down by status. To count the contacts on one list in one status, use GET /contacts with listid, status and meta=only. Filter by name with filters[name]. Only email lists are returned unless filters[channel] is sms or all. The exclusion list is not a contact list; see GET /lists/exclusions.

  • Operation: retrieve-all-lists
  • Endpoint: GET /api/3/lists
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List all tags

catalog_retrieve-all-tags
Full Description

List all tags

List the account's tags, each with the number of contacts it is applied to. search is a partial, case-insensitive match on the tag name, so it returns every similarly named sibling alongside the one asked for, in the API's own order — a tag named in a request is identified by comparing the tag field, never by its position in the result. Use filters[search][eq] for an exact-name match.

  • Operation: retrieve-all-tags
  • Endpoint: GET /api/3/tags
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve an account

catalog_retrieve-an-account
Full Description

Retrieve an account

Retrieve an existing account

  • Operation: retrieve-an-account
  • Endpoint: GET /api/3/accounts/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve an address

catalog_retrieve-an-address
Full Description

Retrieve an address

  • Operation: retrieve-an-address
  • Endpoint: GET /api/3/addresses/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve an addressGroup

catalog_retrieve-an-addressgroup
Full Description

Retrieve an addressGroup

  • Operation: retrieve-an-addressgroup
  • Endpoint: GET /api/3/addressGroups/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve an addressList

catalog_retrieve-an-addresslist
Full Description

Retrieve an addressList

  • Operation: retrieve-an-addresslist
  • Endpoint: GET /api/3/addressLists/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve an association

catalog_retrieve-an-association
Full Description

Retrieve an association

Retrieve an existing account association

  • Operation: retrieve-an-association
  • Endpoint: GET /api/3/accountContacts/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve a saved audience segment

catalog_retrieve-an-audience
Full Description

Retrieve a saved audience segment

One saved audience segment by its UUID: name, summary and definition metadata. A 404 whose body is a data envelope ({"data": []}) means the account has none — the segment service answers an empty store that way; it is an empty result, not a failed call.

Tags: Saved Segment Summaries

  • Operation: retrieve-an-audience
  • Endpoint: GET /api/3/audiences/{segmentId}
Parameters (1 required)
Required
path_paramsobject

Retrieve an EcomOrderProduct

catalog_retrieve-an-ecomorderproduct
Full Description

Retrieve an EcomOrderProduct

  • Operation: retrieve-an-ecomorderproduct
  • Endpoint: GET /api/3/ecomOrderProducts/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve campaign messages associated to campaign

catalog_retrieve-campaign-messages-associated-campaign
Full Description

Retrieve campaign messages associated to campaign

Retrieve the per-message reporting totals for a campaign. Each element of campaignMessages corresponds to one message the campaign sent: a single element for a regular campaign, and one element per variation for a split (A/B) campaign, which is the only way to break a split campaign's results down by variation.

The counters are lifetime totals for the message and cannot be constrained to a date range.

This collection is not paginated: every message of the campaign is returned, and limit, offset and meta.total do not apply. The endpoint is read only; POST, PUT and DELETE return 403.

  • Operation: retrieve-campaign-messages-associated-campaign
  • Endpoint: GET /api/3/campaigns/{id}/campaignMessages
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contacts account contacts

catalog_retrieve-contact-account-contacts
Full Description

Retrieve a contacts account contacts

  • Operation: retrieve-contact-account-contacts
  • Endpoint: GET /api/3/contacts/{id}/accountContacts
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contacts automation entry counts

catalog_retrieve-contact-automation-entry-counts
Full Description

Retrieve a contacts automation entry counts

  • Operation: retrieve-contact-automation-entry-counts
  • Endpoint: GET /api/3/contacts/{id}/automationEntryCounts
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contact's bounce logs

catalog_retrieve-contact-bounce-logs
Full Description

Retrieve a contact's bounce logs

The bounce log entries recorded for this contact, one per bounced message with its timestamp, bounce code and campaign. For every bounce log on the account, use GET /bounceLogs. Neither endpoint filters by a date range, so a bounce count for a period is not available in one request.

  • Operation: retrieve-contact-bounce-logs
  • Endpoint: GET /api/3/contacts/{id}/bounceLogs
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contact's data

catalog_retrieve-contact-data
Full Description

Retrieve a contact's data

  • Operation: retrieve-contact-data
  • Endpoint: GET /api/3/contacts/{id}/contactData
Parameters (1 required)
Required
path_paramsobject

Retrieve a contact's deals

catalog_retrieve-contact-deals
Full Description

Retrieve a contact's deals

  • Operation: retrieve-contact-deals
  • Endpoint: GET /api/3/contacts/{id}/deals
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a list of contact's deals

catalog_retrieve-contact-deals-list
Full Description

Retrieve a list of contact's deals

  • Operation: retrieve-contact-deals-list
  • Endpoint: GET /api/3/contacts/{id}/contactDeals
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contact's field values

catalog_retrieve-contact-field-values
Full Description

Retrieve a contact's field values

Returns every stored custom field value of one contact. The whole set is always returned: limit and offset are ignored on this endpoint. Each entry's field property is the custom field definition id; entries exist only for fields the contact has a stored value for. 404 if the contact does not exist.

  • Operation: retrieve-contact-field-values
  • Endpoint: GET /api/3/contacts/{id}/fieldValues
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contacts list of geo-ips

catalog_retrieve-contact-geo-ips
Full Description

Retrieve a contacts list of geo-ips

  • Operation: retrieve-contact-geo-ips
  • Endpoint: GET /api/3/contacts/{id}/geoIps
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contact's goals

catalog_retrieve-contact-goals
Full Description

Retrieve a contact's goals

  • Operation: retrieve-contact-goals
  • Endpoint: GET /api/3/contacts/{id}/contactGoals
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contact's list memberships

catalog_retrieve-contact-list-memberships
Full Description

Retrieve a contact's list memberships

The lists this contact is on, one row per subscription with its status and dates. To answer how and when a contact left a list: status 2 is unsubscribed and 3 is bounced; udate is when the membership was unsubscribed or bounced and is null while it is active (a resubscribe clears it and resets sdate); unsubreason is the reason recorded with an unsubscribe, empty when none was given; sourceid says how the subscription was created (0 unknown, 1 import, 2 sync, 3 account user, 4 API, 5 form, 6 form opt-in, 7 trigger, 8 SMS, 9 automation, 10 bulk edit, 11 email, 12 Gmail).

  • Operation: retrieve-contact-list-memberships
  • Endpoint: GET /api/3/contacts/{id}/contactLists
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contact's logs

catalog_retrieve-contact-logs
Full Description

Retrieve a contact's logs

  • Operation: retrieve-contact-logs
  • Endpoint: GET /api/3/contacts/{id}/contactLogs
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contact's notes

catalog_retrieve-contact-notes
Full Description

Retrieve a contact's notes

The notes attached to one contact. Each note carries its text, the account user who wrote it (userid), and when it was created and last changed (cdate, mdate). Every note comes back in one response, drafts included (is_draft): limit, offset, filters and orders are ignored on this path, and no order is guaranteed, so sort on cdate yourself if order matters. To add a note to a contact, use POST /notes with reltype Subscriber and the contact id in relid. Returns 404 if the contact does not exist.

  • Operation: retrieve-contact-notes
  • Endpoint: GET /api/3/contacts/{id}/notes
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contacts organization

catalog_retrieve-contact-organization
Full Description

Retrieve a contacts organization

  • Operation: retrieve-contact-organization
  • Endpoint: GET /api/3/contacts/{id}/organization
Parameters (1 required)
Required
path_paramsobject

List the tags applied to a contact

catalog_retrieve-contact-tags
Full Description

List the tags applied to a contact

List the tags applied to one contact, as contact-to-tag associations. Each item's tag is the tag id (fetch the name with GET /tags/{id}, or several at once with GET /tags?ids=1,2), and its id is the association id to pass to DELETE /contactTags/{id}. Returns every association the contact has: limit and offset are ignored. Associations whose tag has since been deleted are not shown. Returns 404 if the contact does not exist. GET /contactTags?filters[subscriberid]={id} returns the same associations with paging, plus any whose tag has been deleted. To apply tags use POST /contacts/{id}/tags; to remove one use DELETE /contacts/{id}/tags/{tagId}.

  • Operation: retrieve-contact-tags
  • Endpoint: GET /api/3/contacts/{id}/contactTags
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve a contacts tracking logs

catalog_retrieve-contact-tracking-logs
Full Description

Retrieve a contacts tracking logs

Returns every site-tracking and event-tracking log entry recorded for a contact. Each entry's id is the eventId that GET /trackingLogs/{eventId}/contact accepts; entry ids come from their own account-wide sequence and are unrelated to contact ids. The full list is returned in one response; limit and offset are ignored on this route (use GET /trackingLogs with filters[subscriberid] for a paginated listing). An entry's type is __pagevisit for a site-tracking page visit (value holds the page URL), __redir for a tracked link redirect (value holds the destination URL), or the name of an event-tracking event (value holds the event data). Entries are copied into this log when the contact's activity feed is refreshed, so events recorded moments ago may not appear yet. Returns 404 if the contact does not exist.

  • Operation: retrieve-contact-tracking-logs
  • Endpoint: GET /api/3/contacts/{id}/trackingLogs
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve Event Tracking Status

catalog_retrieve-event-tracking-status
Full Description

Retrieve Event Tracking Status

Get event tracking status (enabled or disabled)

  • Operation: retrieve-event-tracking-status
  • Endpoint: GET /api/3/eventTracking
Parameters (0 required, 1 optional)
Optional
query_paramsobject

List contact custom fields

catalog_retrieve-fields
Full Description

List contact custom fields

Lists custom field definitions for contacts, 20 per page by default, ordered by ordernum then id unless an orders parameter is given. The response side-loads a fieldOptions array with the options of every returned field; ids inside it are field option ids, not field ids, and are only valid on the fieldOptions endpoints, never on /fields/{id}. A fieldRels array side-loads the fields' list relationships. Each field's own options property lists the ids of its options in the side-loaded array. Use only the query parameters documented here: unsupported filter and order fields are silently ignored, so the response looks filtered but is not. filters match exactly; use search for a partial title match. Passing any orders parameter, including an unsupported one, replaces the default ordernum ordering: when no supported orders field is given, the results come back in no guaranteed order. meta.total is the number of matching fields, returned as a string. This endpoint covers contact fields only; deal fields live under dealCustomFieldMeta and account fields under accountCustomFieldMeta.

Tags: contact, contacts, field definition, custom field

  • Operation: retrieve-fields
  • Endpoint: GET /api/3/fields
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve a form

catalog_retrieve-forms
Full Description

Retrieve a form

  • Operation: retrieve-forms
  • Endpoint: GET /api/3/forms/{id}
Parameters (1 required)
Required
path_paramsobject

Retrieve inaccessible pipelines by user

catalog_retrieve-inaccessible-pipelines-by-user
Full Description

Retrieve inaccessible pipelines by user

Retrieve pipelines that given user doesn't have access to

  • Operation: retrieve-inaccessible-pipelines-by-user
  • Endpoint: GET /api/3/dealGroup/get_inaccessible_deal_groups
Parameters (1 required)
Required
query_paramsobject

Retrieve links associated to campaign

catalog_retrieve-links-associated-campaign
Full Description

Retrieve links associated to campaign

  • Operation: retrieve-links-associated-campaign
  • Endpoint: GET /api/3/campaigns/{id}/links
Parameters (1 required, 1 optional)
Required
path_paramsobject
Optional
query_paramsobject

Retrieve list of all notes

catalog_retrieve-list-of-all-notes
Full Description

Retrieve list of all notes

  • Operation: retrieve-list-of-all-notes
  • Endpoint: GET /api/3/notes
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve the primary brand kit

catalog_retrieve-primary-brand-kit
Full Description

Retrieve the primary brand kit

Get the account's primary brand kit, falling back to the most recently created one if none is marked primary.

Tags: AI

  • Operation: retrieve-primary-brand-kit
  • Endpoint: GET /api/3/ai/brand/primary
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve segment metadata

catalog_retrieve-segment-metadata
Full Description

Retrieve segment metadata

Metadata for one saved segment by its UUID — the record about the segment rather than its condition definition. A 404 whose body is a data envelope means the segment does not exist; it is an empty result, not a failed call.

  • Operation: retrieve-segment-metadata
  • Endpoint: GET /api/3/segmentsV2/metadata/{segmentId}
Parameters (1 required)
Required
path_paramsobject

Retrieve status

catalog_retrieve-site-tracking-status
Full Description

Retrieve status

Get site tracking status (enabled or disabled)

  • Operation: retrieve-site-tracking-status
  • Endpoint: GET /api/3/siteTracking

Retrieve SMS broadcast metrics snapshot

catalog_retrieve-sms-metrics-snapshot
Full Description

Retrieve SMS broadcast metrics snapshot

Account-wide totals for SMS broadcasts — campaigns, sends, deliveries, clicks, replies, failures and opt-outs — optionally bounded by start_date and end_date (YYYY-MM-DD).

Tags: Metrics, Snapshots, Broadcasts

  • Operation: retrieve-sms-metrics-snapshot
  • Endpoint: GET /api/3/sms/broadcasts/metrics/snapshot
Parameters (0 required, 1 optional)
Optional
query_paramsobject

Retrieve a Variable

catalog_retrieve-variable
Full Description

Retrieve a Variable

Retrieve an individual personalization variable

  • Operation: retrieve-variable
  • Endpoint: GET /api/3/personalizations/{variableId}
Parameters (1 required)
Required
path_paramsobject

Create a saved response

catalog_saved-responses
Full Description

Create a saved response

  • Operation: saved-responses
  • Endpoint: POST /api/3/savedResponses
Parameters (1 required)
Required
bodyobject

Copy Campaign

copy_campaign
Full Description

Duplicate an existing campaign as a new draft, optionally applying changes in the same call. Returns a request_id immediately; campaign_id is null until the copy finishes — call poll_campaign_generation_status with request_id and wait for a real campaign_id before treating the copy as done. Eligibility (editor version, automation attachment, sendable state) is decided behind this call; an ineligible source campaign is reported as a not_supported outcome, not raised.

Renaming vs. content changes. Pass copy_changes to apply an edit to the copy in this same call, instead of a separate edit_campaign call afterward. copy_changes only affects the copy's email content/design — to rename the copy itself (its campaign record's own name, not its subject line), call update_campaign with the new campaign_id separately.

Parameters (0 required, 3 optional)
Optional
campaign_idinteger

Numeric id of the campaign to copy, when known. Not required if `campaign_name` is given instead.

Default: null
campaign_namestring

Alternate way to address the source campaign, by name, when the id isn't known.

Default: null
copy_changesstring

Changes to apply to the copy, in the same breath as duplicating it.

Default: null

Create Contact Custom Field

create_contact_custom_field
Full Description

Create a contact custom field. Always create field options after creating fields of type "dropdown", "listbox", "radio", or "checkbox".

Parameters ----------

  • params: ContactCustomFieldCreateParams object containing:
    • field_title: Required. The custom field label (sent to the API as title).
    • type: Required. The type of field. Valid values: "text", "textarea", "date", "datetime", "dropdown", "listbox", "radio", "checkbox", "hidden".
    • descript: Optional description of the field.
    • perstag: Optional personalization tag name.
    • defval: Optional default value.
    • visible: Optional. Whether this field is visible in forms (0 or 1).
    • ordernum: Optional. The order of this field relative to others.
Parameters (1 required)
Required
paramsobject

Create Contact Field Relationship

create_contact_field_relationship
Full Description

Associate a contact custom field with a contact list

Parameters ----------

  • params: ContactFieldRelCreateParams object containing:
    • relid: Required. The ID of the contact list.
    • field: Required. The ID of the custom field.
Parameters (1 required)
Required
paramsobject

Create Contact Field Value

create_contact_field_value
Full Description

Create a contact custom field value. Contact field values can also be set in bulk in the payload to create or update a contact.

Parameters ----------

  • params: ContactFieldValueCreateOrUpdateParams object containing:
    • contact: Required. The ID of the contact.
    • field: Required. The ID of the custom field.
  • value: Required. The value to store in the field. Format depends on field type:
    • text/textarea/hidden: Simple string value
    • dropdown/radio: Exact option value
    • date: "YYYY-MM-DD" format
    • datetime: ISO format "YYYY-MM-DDThh:mm:ssZ"
    • checkbox (multiple): "||Option 1||Option 3||" format
    • checkbox (single): "||Option 2||" format
    • useDefaults: Optional. If true, populates missing required fields on the contact record with default values. Defaults to false.
Parameters (1 required)
Required
paramsobject

Create Contact Tag

create_contact_tag
Full Description

Create a new contact tag

Parameters ----------

  • params: TagCreateParams object containing:
    • tag: Required. The name of the tag.
    • tagType: Optional. The type of tag. Defaults to "contact". Valid values: "contact", "template".
    • description: Optional. Description of the tag. Defaults to empty string.
Parameters (1 required)
Required
paramsobject

Create Custom Object Schema

create_custom_object_schema
Full Description

Create a new custom object schema in an ActiveCampaign account. Defines a new custom object type with fields, relationships, labels, and description.

When to use

  • Create a new custom object type to model domain-specific data (e.g. orders, projects, tickets)
  • Define fields and relationships for a new custom object
  • Set up a custom object schema before creating records of that type

When NOT to use

  • User wants to modify an existing schema — not doable via MCP
  • User wants to create records within a schema — use create_or_update_custom_object_record
  • User asks about standard objects (contacts, deals, campaigns) — use the dedicated tools

Examples

  • "define a new custom object type called Order with a name field linked to contacts" → params={"schema":{"slug": "order", "labels": {"singular": "Order", "plural": "Orders"},

"description": "Customer orders", "fields": [{"id": "name", "labels": {"singular": "Name", "plural": "Names"}, "type": "text"}], "relationships": [{"id": "primary-contact", "labels": {"singular": "Primary Contact", "plural": "Primary Contacts"}, "namespace": "contacts", "hasMany": false}]}}

  • "set up a custom object schema for tracking support tickets with a title field linked to contacts" → params={"schema": {"slug": "support-ticket", "labels": {"singular": "Support Ticket", "plural": "Support Tickets"},

"description": "Support tickets", "fields": [{"id": "title", "labels": {"singular": "Title", "plural": "Titles"}, "type": "text", "required": true}], "relationships": [{"id": "primary-contact", "labels": {"singular": "Primary Contact", "plural": "Primary Contacts"}, "namespace": "contacts", "hasMany": false}]}}

  • "create a new custom object type linked to contacts with a notes field" → params={"schema": {"slug": "my-object", "labels": {"singular": "My Object", "plural": "My Objects"},

"fields": [{"id": "notes", "labels": {"singular": "Note", "plural": "Notes"}, "type": "text"}], "relationships": [{"id": "primary-contact", "labels": {"singular": "Primary Contact", "plural": "Primary Contacts"}, "description": "Primary contact for this object", "namespace": "contacts", "hasMany": false}]}}

  • "set up a custom object schema for tracking projects with a title field linked to deals" → params={"schema": {"slug": "project", "labels": {"singular": "Project", "plural": "Projects"},

"fields": [{"id": "title", "labels": {"singular": "Title", "plural": "Titles"}, "type": "text"}], "relationships": [{"id": "deal", "labels": {"singular": "Deal", "plural": "Deals"}, "namespace": "deals", "hasMany": false}]}}

  • "create a custom object type for tracking assets linked to accounts" → params={"schema": {"slug": "asset", "labels": {"singular": "Asset", "plural": "Assets"},

"fields": [{"id": "name", "labels": {"singular": "Name", "plural": "Names"}, "type": "text"}], "relationships": [{"id": "account", "labels": {"singular": "Account", "plural": "Accounts"}, "namespace": "accounts", "hasMany": false}]}}

Constraints

  • The slug must be unique across the account and follow kebab-case format.
  • Field types include: text, textarea, number, currency, date, datetime, dropdown, multiselect.
  • Number fields require a scale value (decimal places, e.g. 0 for integers, 2 for decimals).
  • Currency fields require a defaultCurrency value (e.g. "USD", "EUR").
  • Dropdown fields require options, each with an id and value (e.g. [{"id": "active", "value": "Active"}]).
  • At least one field must be defined. If the user has not specified any fields, ask them before proceeding.
  • labels (singular and plural) are required on the schema, every field, and every relationship.
  • Relationship namespaces must reference existing object types (e.g. 'contacts', 'accounts', 'deals').
  • Exactly one relationship must be specified to link the schema to a primary object (contacts, accounts, or deals).

Only one ActiveCampaign object type can be related per schema.

  • If the user does not specify which object type the schema should relate to, always ask first before creating

the schema. Do not assume or choose a default — the relationship is a critical decision that must be explicit.

Parameters (1 required)
Required
paramsobject

Create Deal

create_deal
Full Description

Create a new deal in ActiveCampaign.

A deal represents a sales opportunity that can be tracked through a pipeline. You must associate the deal with either a contact or an account.

Important — owner vs contact: The `owner and contact fields refer to completely different entities:

  • owner — an ActiveCampaign *user* (team member / sales rep) responsible for

working the deal. This is not the customer. Obtain valid user IDs from the list_users tool or the GET /api/3/users endpoint.

  • contact — the *customer or lead* the deal is associated with. Obtain valid

contact IDs from list_contacts or get_contact.

Do not pass a contact ID as the owner; the API will reject it with "The provided owner id does not exist."`

Important: To create a deal, the user requires permission to manage deals and permission to manage the pipeline the new deal belongs to.

Parameters (1 required)
Required
paramsobject

Parameters for creating a deal. title (str): Required. The name of the deal. value (int): Required. Deal value in cents (e.g., 10000 for $100.00). Must be >= 0. currency (str): Deal currency in 3-digit ISO format, lowercased. Defaults to "usd". group (str, optional): Deal pipeline ID. Required if stage is not provided. stage (str, optional): The ID of the deal stage. Required if group is not provided. owner (str): Required. The ID of the deal owner — must be a valid ActiveCampaign **user** ID (not a contact ID). Required if the pipeline's auto-assign option is disabled. contact (str, optional): The ID of the deal's primary **contact** (the customer or lead). Required if account is not provided. account (str, optional): Deal account ID. Required if contact is not provided. description (str, optional): Description of the deal. percent (int, optional): The probability percent of the deal. status (int, optional): The deal status (0=Open, 1=Won, 2=Lost). Default is 0 (Open). fields (List[DealCreateCustomField], optional): Custom field values. Each item: customFieldId (int): Required. ID of the custom field. fieldValue (str): Required. Value to set for the field. fieldCurrency (str, optional): Currency code for currency-type fields.

Create Deal Note

create_deal_note
Full Description

Create a new note for a deal in ActiveCampaign.

A deal note represents text that can be added to a deal to note important information.

Important: To create a deal note, the user requires permission to manage deals and permission to manage the pipeline the deal belongs to.

Parameters (2 required)
Required
deal_idinteger

The unique ID of the deal to add a note to.

paramsobject

Parameters for creating a note. note (str): The text of the note to be added.

Create Deal Pipeline

create_deal_pipeline
Full Description

Create a new deal pipeline (dealGroup) in ActiveCampaign.

A pipeline represents a customizable sales process with stages that deals move through. Pipelines allow you to organize and track sales opportunities, automate deal assignment, and manage which users and groups have access to deals.

Use Cases

  • Create separate pipelines for different sales processes (e.g., "New Business", "Renewals", "Upsells")
  • Organize deals by product line, region, or business unit
  • Set up automated deal assignment with Round Robin or value-based distribution
  • Control pipeline access by assigning specific user groups

Pipeline Configuration

Auto-assignment options:

  • 0: Disabled
  • No automatic assignment
  • 1: Round Robin
  • Distributes deals evenly among users
  • 2: Deal values
  • Assigns based on deal value thresholds

Group management:

  • allgroups=1: All user groups can manage this pipeline
  • allgroups=0: Only specified groups (in dealGroup.groups) can manage

User assignment:

  • allusers=1: Auto-assign new deals to all users
  • allusers=0: Auto-assign only to specified users (in dealGroup.users)

Important Notes

To create a pipeline, the user requires permission to manage deals and permission to create new pipelines in ActiveCampaign.

Parameters (1 required)
Required
paramsobject

Parameters for creating a pipeline. - dealGroup (DealGroup): The pipeline configuration object containing: - title (str): The name of the pipeline (required). - currency (str): Default currency for new deals in 3-digit ISO format, lowercased (e.g., "usd", "eur", "gbp") (required). - allgroups (Literal[0, 1]): Whether all groups can manage this pipeline. 1 = all groups, 0 = only groups in dealGroup.groups (default: 1). - allusers (Literal[0, 1]): Whether to auto-assign to all users. 1 = all users, 0 = only users in dealGroup.users (default: 0). - autoassign (Literal[0, 1, 2]): Auto-assignment mode. 0 = disabled, 1 = Round Robin, 2 = deal values (default: 1). - users (List[str], optional): List of user IDs to auto-assign new deals to. Required when allusers=0. - groups (List[str], optional): List of user group IDs that can manage this pipeline. Required when allgroups=0.

Create Deal Stage

create_deal_stage
Full Description

Create a new deal stage within a pipeline in ActiveCampaign.

A deal stage represents a step in a pipeline that deals can move through. Call list_deal_pipelines first to find the pipeline (group) ID to assign the stage to.

Parameters (1 required)
Required
paramsobject

Parameters for creating a deal stage. dealStage (DealStage): The stage configuration object. title (str): Name of the stage. Required. group (str): Pipeline (dealGroup) ID the stage belongs to. Required. order (int, optional): Display order of the stage within the pipeline.

Create List

create_list
Full Description

Create a new list in ActiveCampaign.

This tool creates a new list for organizing contacts and managing email campaigns.

Use this tool to create new lists for organizing contacts. Consider using list_groups() to see available groups if you want to associate the new list with a group for better organization using create_list_group_permission().

Note: For a list to be visible in the ActiveCampaign user interface for non-administrators, it may need to be associated with a user group. The AC API also requires a stringid (URL-safe list name), but this is generated automatically from the name if not provided.

Parameters (1 required)
Required
paramsobject

List creation parameters containing: name (str): Required. Name of the list. channel (str): Optional. Channel type ("sms" or "email", default: "email"). sender_url (str): Optional. The website URL associated with this list (recommended for CAN-SPAM compliance). sender_reminder (str): Optional. Reminder text shown to subscribers about how they joined the list. send_last_broadcast (int): Optional. Whether to send the most recent campaign to new subscribers (default: 0). carboncopy (str): Optional. Comma-separated email addresses to receive copies of all mailings. subscription_notify (str): Optional. Comma-separated email addresses to notify on new subscriptions. unsubscription_notify (str): Optional. Comma-separated email addresses to notify on unsubscriptions.

Create List Group Permission

create_list_group_permission
Full Description

Associate a list with a user group for enhanced organization and visibility.

This tool creates a list group permission, which associates a specific list with a user group in ActiveCampaign. This association enables group-based permissions and makes lists visible in the appropriate sections of the ActiveCampaign interface.

This is typically used after creating a list to ensure it appears in the correct sections of the ActiveCampaign interface for the appropriate user groups.

Parameters (1 required)
Required
paramsobject

Permission parameters containing: listid (int): Required. The ID of the list to associate with the group. groupid (int): Required. The ID of the group to associate with the list.

Edit Campaign

edit_campaign
Full Description

Apply AI-driven edits to an existing campaign.

THE route whenever the change touches the campaign as a whole or its body copy: "make it more urgent", "rewrite it for autumn", "make the tone friendlier", "shorten the copy". Set `content_change=True for those. NEVER satisfy such a request through get_campaign_messages plus update_campaign_message: writing new header fields yourself leaves the email body unchanged, so the campaign still reads in the old tone while the reply claims success. update_campaign renames only and never changes content.

A change scoped to the subject line, preheader or sender alone is different: this tool and get_campaign_messages + update_campaign_message are both correct there, since neither touches the body.

Routes automatically — no routing choice needed: AI-generated campaigns use the layout update endpoint; all others use the XML edit endpoint. Returns the updated campaign data directly when possible. If the response has only campaign_id and request_id — no subject/title/etc. — the edit is still processing: call poll_campaign_generation_status with request_id and wait for the full result before telling the user the edit is done.

WORKFLOW: 1. If swapping images, call search_content_manager_images first and pass URLs as images. 2. Set the change flags (content_change, subject_change`, etc.) that match the edit intent. 3. Call this tool. Images are only applied on the layout path (AI-generated campaigns).

Parameters (4 required, 5 optional)
Required
campaign_idinteger

Numeric ID of the campaign to edit.

content_changeboolean

``True`` if body copy should be rewritten.

promptstring

Edit instruction. Pass the user's original words verbatim.

subject_changeboolean

``True`` if the subject line should change.

Optional
brand_kit_idstring

Brand kit UUID from ``list_brand_kits`` (layout path only). Ignored on XML path.

Default: null
cta_button_text_changeboolean

``True`` if the CTA button label should change.

Default: False
cta_button_url_changeboolean

``True`` if the CTA button URL should change.

Default: False
imagesarray

Content manager image URLs to include (layout path only). Pass only URLs from ``search_content_manager_images`` — external URLs are rejected. ``"hero"`` positions normalize to ``"main"``; ``"top"`` to ``"random"``. Maximum 7 images. Silently ignored on the XML path (non-AI campaigns).

Default: null
preheader_changeboolean

``True`` if the preheader should change.

Default: False

Generate Campaign

generate_campaign
Full Description

Create a new AI-generated email campaign from a text prompt.

Do not call until the user has confirmed both which images to include (L1) and which brand kit to apply (L2) on the layout path. Ask both in one message and wait; picking either on the user's behalf is wrong even when generation succeeds. They are the ONLY questions ever asked. Everything the generator produces itself — the campaign name, subject, headline, body copy, offer, discount, dates, urgency, tone, CTA — is NEVER asked about, however sparse the prompt: "Create a campaign about our summer sale." is already complete. The moment images and brand kit are known the next action is this call — exactly once, never another question, and never `update_campaign afterwards: this tool names the campaign itself.

NEVER retry after this tool has been called — generation is not idempotent and a repeat call can create a duplicate campaign. On any failure, surface it and tell the user to check ActiveCampaign before starting another generation. NOT for copy or edit workflows — use copy_campaign or edit_campaign. This tool rejects the edit arguments content_change, subject_change and preheader_change: those belong to edit_campaign.

ACCOUNT CONTEXT — never browse for it: Do NOT call list_contacts, list_campaigns, or list_lists to gather background context for generation — those tools render full interactive apps. When past campaigns or audience details genuinely affect the request, call get_campaign_generation_context instead. Use the interactive list tools only when the user asked to browse data or must make a visible selection.

ROUTE FIRST — before any other action:

  • User wants to copy, duplicate, or clone an existing campaign unchanged

→ copy_campaign (pass source campaign ID as (past campaign id: NUMBER)). A bare copy_campaign is correct only for "copy"/"duplicate"/"clone" with no qualifier beyond a new name.

  • User wants a campaign "like"/"similar to"/"based on" an existing one **with any

change of topic, tone, season, product or audience** (e.g. "like my Summer Sale campaign but for autumn") → this is NOT a bare copy. Either call this tool for a fresh campaign, or call copy_campaign and then edit_campaign on the returned campaign_id with content_change=True to rewrite the copy for the new topic. update_campaign only renames — a rename never satisfies a content change, and reporting success after renaming alone is wrong.

  • User wants to edit/update an existing campaign → edit_campaign.
  • User picks or names a specific template → TEMPLATE PATH (go to T1).
  • All other "create new" requests → LAYOUT PATH (go to L1).

LAYOUT PATH — complete all three steps, confirm each with user, then call:

L1. IMAGES (REQUIRED — never skip for layout creation): Call search_content_manager_images with a keyword from the campaign topic. Present image names and thumbnails; ask user which to include (max 7). Zero results → call again with query="" limit=10; show recent uploads; ask. Duplicate filenames → STOP; show each as [filename](url) (added date); end with "Please select which image you'd like to use."; wait for the selection. Position: "main" = hero slot, "random" = engine places it. Nothing else.

L2. BRAND KIT (REQUIRED — always fetch, always confirm): Call list_brand_kits; present every kit, recommend the is_primary=True one and ask the user to confirm. Pass the confirmed uuid as brand_kit_id.

L3. URL CLASSIFICATION (automatic — only intervene on ambiguity): Pass the user's prompt verbatim — URL detection is automatic from prompt content. If user provides ONLY a URL with no other context → ask: "Should I write the email based on this page's content, or use this link for the button?" Content URL (product page, article, landing page to pull copy from) → call summarize_url; pass returned summarization_uuid to this tool. CTA-only URL (button destination, no content to extract) → pass directly as cta_url; skip summarize_url. No URL in prompt → skip this step.

L4. TONE (never ask): pass tone only when the user named one verbatim (e.g. "professional", "casual", "urgent"); otherwise omit it.

TEMPLATE PATH — complete all steps, confirm each with user, then call:

T1. TEMPLATES (REQUIRED — list before calling): Call list_campaign_templates. Present template names; ask which to use and wait — never call before that answer. Pass the chosen id as template_id. NEVER pass brand_kit_id on this path — template design takes precedence. If user asks to apply a full brand kit on the template path, refuse: brand kit application is not supported on the template path. NEVER pass tone on this path either — the from-template endpoint doesn't support tone validation; it is silently dropped if provided.

T2. IMAGES (optional — only if user asks): Call search_content_manager_images only when user explicitly mentions images. Same zero-results fallback and dedup rules as L1 apply. Position can be any freeform label the user provides (verbatim).

CALL — as soon as the applicable steps above are confirmed; any further question instead of this call is a defect: Call this tool ONCE per request, with all gathered inputs. A later message that merely confirms a choice already acted on is not a second campaign — never generate twice for one request. Pass user's exact words as prompt — NEVER rephrase, rewrite, or expand. summarization_uuid is REQUIRED whenever summarize_url was called earlier in this conversation: pass the summarization_uuid it returned verbatim. Without it the summarization is discarded and the campaign is written from the summary text instead of the scraped page. images must carry the url values from search_content_manager_images. When the user names an image by file name (e.g. "beach-summer.jpg"), look that name up in the earlier search result and pass its url — a bare file name is rejected.

Returns a request_id immediately without waiting for generation to finish. A campaign app UI polls poll_campaign_generation_status with it to drive a live progress bar — do NOT poll yourself then. With no app UI, poll it yourself until status is success` and present the campaign.

Parameters (1 required, 10 optional)
Required
promptstring

User's exact campaign description verbatim. Required.

Optional
brand_kit_idstring

Brand kit ``uuid`` from ``list_brand_kits``. Layout path only. NEVER pass on template path — always ignored there.

Default: null
cta_urlstring

CTA button destination URL. Pass when user provides a button-destination link (no content to extract). Mutually exclusive with ``summarization_uuid`` for the same URL.

Default: null
imagesarray

Content manager images from ``search_content_manager_images``. Each item requires ``url`` (the full ``url`` from the search result, never a file name) and ``position``. Layout path: ``"main"`` or ``"random"`` only. Max 7 images. External URLs rejected.

Default: null
is_asset_draftboolean

Deprecated — ignored. Generation always creates a campaign; asset drafts are not supported through this tool.

Default: null
label_idinteger

Business goal label ID to tag the campaign.

Default: null
series_idinteger

Email series ID to associate the campaign with a series.

Default: null
summarization_uuidstring

``summarization_uuid`` returned by ``summarize_url``. Call ``summarize_url`` first when user provides a content URL; pass its ``summarization_uuid`` here — required whenever ``summarize_url`` ran. Mutually exclusive with ``cta_url`` for the same URL — never pass both for the same link.

Default: null
template_idinteger

Integer template ``id`` from ``list_campaign_templates``. Setting this activates the template path.

Default: null
tonestring

Writing style, e.g. ``"professional"``, ``"casual"``, ``"urgent"``. Layout path only — pass only when user explicitly names a tone. NEVER pass on the template path — always ignored there.

Default: null
user_promptstring

Omit — mirrors ``prompt`` internally.

Default: null

Get Campaign

get_campaign
Full Description

Retrieve a single campaign by ID.

Parameters (1 required)
Required
campaign_idinteger

The ID of the campaign to retrieve

Get Campaign Editor Markup

get_campaign_editor_markup
Full Description

Retrieve uncompiled editor HTML and CSS for a campaign message.

For MCP Apps campaign preview: returns the Stripo editor markup (`html + css) so the UI can compose a browser preview that preserves @media` rules. Prefer this over the compiled message body for preview.

Parameters (1 required)
Required
campaign_idinteger

ID of the campaign whose editor markup to retrieve.

Get Campaign Email Clients

get_campaign_email_clients
Full Description

Report which email clients a campaign's recipients used.

Each entry pairs a client name with the number of unique contacts counted under it. `source="open" is the narrower set: for the same campaign its counts never exceed those of source="all". Neither is a count of everyone the campaign was sent to — a campaign sent to 958 contacts with 4 recorded opens reports 5 contacts here.

When to use

  • User asks which email clients, apps, or devices opened a campaign
  • User wants an email-client or device breakdown for one campaign
  • User asks how many contacts read a campaign in a named client

When NOT to use

  • Campaign performance metrics (sends, opens, clicks, bounces, and their

rates) — use run_nrx_report

  • Geography, clicked links, or per-subscriber engagement — use run_nrx_report
  • Email clients across several campaigns at once — this reports ONE campaign;

call it per campaign rather than expecting an account-wide total

  • Campaign records without metrics (name, status, schedule) — use

list_campaigns

Examples

  • "which email clients opened campaign 21?" →

params={"campaign_id": 21, "source": "open"}

  • "email client breakdown for campaign 86211" →

params={"campaign_id": 86211}

  • "include everything recorded for campaign 21, not just opens" →

params={"campaign_id": 21, "source": "all"}

  • "what email apps did people use for my July Newsletter?" → resolve the

campaign id with list_campaigns first, then params={"campaign_id": <id>, "source": "open"}

Constraints

  • campaign_id is required and numeric. If the user names a campaign

instead, resolve the id with list_campaigns first — do not guess it.

  • source accepts only "all" or "open". It defaults to "all"; prefer

"open" when the user's question is specifically about opens.

  • Returns the campaign's full set of clients. There is no pagination and no

way to filter, sort, or limit the result — do not offer those.

  • Entries arrive ordered by uniqueContacts descending, so the first is

the most used client.

  • Client names come from recipient user agents and are free-form: some carry

a version, some name a browser or HTTP library rather than a mail client, and opens that could not be attributed are reported under an empty name. Report them as given rather than reinterpreting, renaming, or dropping them — the unattributed group is frequently the largest.

  • An empty emailClients` list means the campaign has no email-client data

for that source. That is a valid answer, not an error, and not a reason to retry or to switch source.

  • Counts here do not reconcile with the send or open totals on the campaign

record; do not present one as a check on the other, and never describe these counts as a share of the campaign's recipients.

Parameters (1 required)
Required
paramsobject

Campaign to report on, and which recipients to count.

Get Campaign Generation Context

get_campaign_generation_context
Full Description

Fetch compact background account context — recent campaigns and/or contact-list audiences — while preparing a generate_campaign or edit_campaign prompt (for example, matching an existing campaign's tone, or checking which audiences exist). Renders no UI component: use this instead of list_campaigns or list_lists whenever the goal is background context, not letting the user browse or pick from a list.

Request only the categories you need via include. A failed category is reported in unavailable and never blocks the other requested category.

Parameters (1 required, 2 optional)
Required
includearray

Context categories to fetch. At least one category is required — an empty selection would return an empty result that reads as success.

Optional
audience_querystring

Partial list name to narrow `audiences`.

Default: null
campaign_querystring

Partial campaign name to narrow `recent_campaigns`.

Default: null

Get Campaign History

get_campaign_history
Full Description

Report what has changed on a campaign, in the words recorded at the time. Answers immediately — there is no run to poll and nothing is charged. Call this before restore_campaign_version when the user names a version ("go back to 2"): the numbers in the listing are what restore_campaign_version accepts. Pass both from_version and to_version to compare two versions instead of listing all of them.

Parameters (1 required, 2 optional)
Required
campaign_idinteger

Numeric id of the campaign.

Optional
from_versioninteger

Supply with `to_version` to compare two versions.

Default: null
to_versioninteger

Supply with `from_version` to compare two versions.

Default: null

Get Campaign Links

get_campaign_links
Full Description

Retrieve links associated with a campaign from ActiveCampaign.

Parameters ----------

  • campaign_id: The ID of the campaign to retrieve links for
Parameters (1 required)
Required
campaign_idinteger

Get Campaign Messages

get_campaign_messages
Full Description

Retrieve messages for a campaign.

Returns each message's `subject, preheader_text, fromname, and fromemail. Pass include_body=True or include_text=True to also fetch the HTML or plain text content when you need to read or edit it. Use to inspect current message content or to obtain message_id before calling update_campaign_message`.

Parameters (1 required, 2 optional)
Required
campaign_idinteger

ID of the campaign to retrieve messages for.

Optional
include_bodyboolean

Include the full HTML body field. Set True only when you need to read or edit the HTML content. Omit for subject/sender lookups -- bodies are large.

Default: False
include_textboolean

Include the plain text version. Set True only when you need to read or edit the text content.

Default: False

Get Contact

get_contact
Full Description

Retrieve a single contact by ID.

Parameters (1 required)
Required
contact_idinteger

The numeric ID of the contact to retrieve

Get Contact Automation

get_contact_automation
Full Description

Retrieve a specific contact automation record by ID.

This provides detailed information about a specific automation run for a contact, including status, progress, completion details, and timing information.

Parameters ----------

  • contact_automation_id: The ID of the contact automation record to retrieve
Parameters (1 required)
Required
contact_automation_idinteger

Get Contact Custom Field

get_contact_custom_field
Full Description

Get a contact custom field by ID

Parameters ----------

  • field_id: The ID of the custom field to retrieve
Parameters (1 required)
Required
field_idinteger

Get Contact Field Value

get_contact_field_value
Full Description

Get a contact custom field value by ID

Parameters ----------

  • field_value_id: The ID of the field value to retrieve
Parameters (1 required)
Required
field_value_idinteger

Get Contact Field Values

get_contact_field_values
Full Description

Get all custom field values for a specific contact.

Parameters (1 required)
Required
contact_idinteger

The ID of the contact whose field values to retrieve

Get Contact List Memberships

get_contact_list_memberships
Full Description

Get all list memberships for a specific contact.

Parameters (1 required)
Required
contact_idinteger

The ID of the contact whose list memberships to retrieve

Get Contact Score Values

get_contact_score_values
Full Description

Retrieve all score values for a specific contact id.

Returns a list of scoreValue objects representing each scoring rule applied to the contact and the resulting numeric score value.

Parameters (1 required)
Required
contact_idinteger

The ID of the contact whose score values to retrieve.

Get Contact Tags

get_contact_tags
Full Description

Get all tags assigned to a specific contact by ID or email (not both).

By email: returns full tag objects (name, description, subscriber count) alongside contactTag records. By contact_id: returns contactTag records with tag ID only.

Parameters (0 required, 2 optional)
Optional
contact_idinteger

The numeric ID of the contact. Provide this or email, not both.

Default: null
emailstring

The email address of the contact. Provide this or contact_id, not both.

Default: null

Get Deal

get_deal
Full Description

Retrieve a single deal by ID.

Note: if the user lacks pipeline permission, returns id/title/isDisabled=true only.

Parameters (1 required)
Required
deal_idinteger

The unique ID of the deal to fetch

Get Deal Pipeline

get_deal_pipeline
Full Description

Retrieve a deal pipeline (dealGroup) by ID from ActiveCampaign.

Returns the full pipeline configuration including title, currency, stages, auto-assignment settings, and associated users and groups.

Parameters (1 required)
Required
pipeline_idinteger

The unique ID of the pipeline to retrieve.

Get Deal Stage

get_deal_stage
Full Description

Retrieve a single deal stage by ID from ActiveCampaign.

Parameters (1 required)
Required
stage_idinteger

The unique ID of the deal stage to retrieve.

Get List

get_list
Full Description

Retrieve a single list by ID from ActiveCampaign.

This tool fetches detailed information about a specific list, including all configuration settings, tracking options, and metadata.

Parameters (1 required)
Required
list_idinteger

The ID of the list to retrieve.

Get Profile

get_profile
Full Description

Return the ActiveCampaign profile represented by this request's authenticated credentials. The opaque id is unique within this app and remains unchanged across token refresh, reconnection, and display-metadata changes. This identifies the connected account only; it returns no contact, deal, campaign or list data, so never call it to answer a question about those.

Get Tag

get_tag
Full Description

Get a tag by ID

Parameters ----------

  • tag_id: The ID of the tag to retrieve
Parameters (1 required)
Required
tag_idinteger

Get Top Contacts

get_top_contacts
Full Description

Retrieve top contacts by legacy cumulative activity.

Use this tool for "top contacts" or "most active contacts." The API supplies a legacy cumulative activity ordering; it is neither recency nor configured contact score. Filtering and date bounds are unsupported.

Do not use this tool for "most engaged," date-bounded engagement, or campaign engagement requests. Reject those requests without calling this tool.

Check Phone-Only Contacts Setting

is_phone_only_contacts_enabled
Full Description

Check if the phone only contact setting is enabled for this ActiveCampaign account. Remember this in current context. Do NOT offer the user to turn it on.

List Automations

list_automations
Full Description

List automations from ActiveCampaign with filtering and pagination.

Automation records include basic metadata. With enhance=true, records also include block definitions, goals, linked campaigns, contact counts, and labels. Filtering and sorting BY completion rate or active-contact count is NOT supported.

When to use

  • User asks to browse, view, or list automations
  • User needs automations filtered by name, status, tag, trigger type, or label
  • User wants automations sorted by entry count (contacts who entered)

Tip: to see which contacts are active in ONE specific automation, call list_contact_automations with filters.seriesid=<id> and filters.status=1.

When NOT to use

  • User asks for completion rate, active-contact percentage, or asks to SORT/RANK

automations by those metrics (e.g., "automation with highest completion rate") — REJECT without calling this tool. Suggest: "I can show automations sorted by total entries [entered] or filtered by name — want that?"

  • User asks to filter by completion rate, active-contact count, or any property not

in Supported filters — REJECT. State: filters support filters.name, filters.status, filters.ids, filters.tag, filters.triggers, filters.actions, filters.label_name, label (folder ID), search, active, has_message.

  • User asks to sort by a field not in Supported sort fields — REJECT. State: sort

supports name, status, entered, cdate, mdate, revisions.

  • You already called this tool this turn — REJECT a second call. State the

limitation. Do NOT retry with different params to explore.

Supported filters (exhaustive)

  • filters.name: partial match on automation name
  • filters.status: 1=active, 2=inactive
  • filters.ids: comma-separated automation IDs
  • filters.tag: tag ID
  • filters.triggers: comma-separated trigger types
  • filters.actions: comma-separated action block types
  • filters.label_name: by label name
  • label: folder/label ID (integer)
  • search: partial name match
  • active: true=active only, false=inactive only
  • has_message: boolean flag

Supported sort fields

name, status, entered (contacts-entered count), cdate, mdate, revisions

Examples — SUPPORTED

  • "Active automations" → active=true
  • "Automations named 'welcome'" → filters.name="welcome"
  • "Most-entered automations" → orders={"entered": "DESC"}
  • "Automations with tag 42" → filters.tag=42
  • "Automations sorted by creation date" → orders={"cdate": "DESC"}
  • "Automation details with counts and blocks" → enhance=true

Examples — UNSUPPORTED (REJECT)

  • "Automations with completion rate above 50%" — completion rate is not a filter
  • "Automations with more than 100 active contacts" — active-contact count is not a filter
Parameters (1 required)
Required
paramsobject

Filtering, ordering, and pagination options

List Brand Kits

list_brand_kits
Full Description

List the account's available brand kits. Informational only: brand is resolved automatically for every generation and edit. generate_campaign/edit_campaign still accept a brand_kit_id param for backward compatibility, but it has no effect — there is no way to force a specific kit. Use to show a user what will be applied, or to browse before asking the account owner to change their primary kit elsewhere.

List Campaign Runs

list_campaign_runs
Full Description

List this account's recent generate/edit/copy runs, newest first. Use to recover a request_id lost from an earlier turn, or to tell which run a handle refers to before polling it. Reports what was started, not the outcome — call poll_campaign_generation_status with a listed request_id for that. Answers immediately: nothing is charged.

Parameters (0 required, 2 optional)
Optional
limitinteger

Maximum number of runs to return.

Default: 20
offsetinteger

Zero-based pagination offset — skip this many results before returning `limit` more.

Default: 0

List Campaign Templates

list_campaign_templates
Full Description

Search or list the account's saved campaign templates. Returns template objects keyed by id. Pass a returned integer id to generate_campaign as template_id to build a campaign based on that template — this call is optional, not a prerequisite. Call with an empty query to list the most recently modified templates, or a partial name to filter by name.

Parameters (0 required, 3 optional)
Optional
limitinteger

Maximum number of templates to return.

Default: 20
offsetinteger

Zero-based pagination offset — skip this many results before returning `limit` more.

Default: 0
querystring

Name filter. Empty string lists recent templates; non-empty filters by partial name match.

List Campaigns

list_campaigns
Full Description

List campaigns from ActiveCampaign with filtering and pagination.

Campaign records include performance data per campaign (opens, uniqueopens, linkclicks, uniquelinkclicks, hardbounces, softbounces, unsubscribes). Filtering and sorting BY those values is NOT supported.

When to use

  • User asks to browse, view, or list email/SMS campaigns
  • User needs campaigns filtered by status, type, name, list, or automation flag
  • User wants performance data for a set of campaigns (returned per record)

When NOT to use

  • User asks for the BEST/WORST campaign or asks to SORT/FILTER by open rate, click

rate, or any performance metric — REJECT without calling this tool. Performance data is in records but cannot be used to filter or sort. Suggest: "I can show your completed campaigns sorted by send date — want that?"

  • User asks to FILTER by open rate, click rate, revenue, or any performance threshold —

REJECT. State: filters support status, type, name, list_id, seriesid, label_name, has_message, has_message_content, has_form, excludeTypes. No performance-metric filter.

  • User asks to SORT by open rate, click rate, or any field not in Supported sort

fields — REJECT. State: sort supports sdate, mdate, ldate, status.

  • You already called this tool this turn — REJECT a second call. State the

limitation. Do NOT retry with different params to explore.

Supported filters (exhaustive)

  • status: "drafts"/"scheduled"/"currently-sending"/"paused"/"stopped"/"complete"/

"disabled"/"pending-review"/"determining-winner"

  • filters.type: "single"/"recurring"/"split"/"responder"/"reminder"/"special"/

"activerss"/"text"

  • filters.name: partial match on campaign name
  • filters.list_id: by list ID
  • filters.seriesid: by automation/series ID
  • filters.label_name: by label
  • filters.automation: boolean flag
  • has_message, has_message_content, has_form: boolean flags
  • excludeTypes: comma-separated campaign types to exclude

Supported sort fields

sdate (scheduled date), mdate (modified date), ldate (last-sent date), status

Examples — SUPPORTED

  • "Scheduled campaigns" → status="scheduled"
  • "Completed email campaigns" → status="complete", filters.type="single"
  • "Campaigns named 'summer'" → filters.name="summer"
  • "Most recently sent campaigns" → orders={"ldate": "DESC"}

Examples — UNSUPPORTED (REJECT)

  • "Best-performing campaign" — no sort field for opens, clicks, or any metric
  • "Campaigns with open rate above 30%" — open rate threshold is not a filter
Parameters (1 required)
Required
paramsobject

Filtering, ordering, and pagination options

List Contact Activities

list_contact_activities
Full Description

List activities for a specific contact.

Returns a chronological log of actions and events associated with a contact, such as email interactions, list subscriptions, automation steps, deal tasks, SMS messages, link clicks, and eCommerce order events.

A contact ID is required. This endpoint does not support multiple contact IDs in a single call.

Parameters (1 required)
Required
paramsobject

ContactActivityListParams object containing: - contact: Required. The ID of the contact whose activities to retrieve. - after: Optional. Filter for activities after a specific date/datetime. - include: Optional. Comma-separated list of related objects to include. Valid values: notes, notes.user, recipients, recipients.recipient, reference, reference.automation, reference.campaign, reference.campaign.campaignList, reference.campaign.campaignMessage, reference.campaignMessage, reference.contact, reference.contactList, reference.contactList.list, reference.deal, reference.deal.contact, reference.dealTasktype, reference.link, reference.list, reference.log, reference.log.campaign, reference.log.contact, reference.log.message, reference.message, reference.note, reference.sms, reference.sms.automation, user - orders_tstamp: Optional. Sort direction for timestamp ordering ("ASC" or "DESC"). - emails: Optional. If true, includes email data fields in deal activities.

List Contact Automations

list_contact_automations
Full Description

List automation run records — which contacts entered which automations.

Use to answer: "which automations did contact X go through?" or "which contacts went through automation Y?". Filter by seriesid (automation ID) or subscriberid (contact ID) to scope results.

Supported filters (exhaustive)

filters.seriesid (automation ID), filters.subscriberid (contact ID), filters.adddate (date, with eq/gt/gte/lt/lte operators), filters.status (1=in progress/2=completed), filters.lastblock (step ID), q (text search), min_time/max_time (seconds in automation), tags (tag IDs), lists (list IDs), g_id (goal ID), g_status (0=incomplete/1=complete)

Supported sort fields

seriesid, adddate, status, lastblock, subscriberid, name, first_name, last_name, email, cdate, score, goal_completion

Parameters (1 required)
Required
paramsobject

Filtering, ordering, and pagination options

List Contact Custom Fields

list_contact_custom_fields
Full Description

List all contact custom field definitions (schema lookup, not per-contact values).

Use to look up custom field names, IDs, and types. To get values for a specific contact, use get_contact_field_values instead.

Parameters (1 required)
Required
paramsobject

Pagination options (limit, offset)

List Contact Field Values

list_contact_field_values
Full Description

List all contact custom field values

Parameters ----------

  • params: ContactFieldValueListParams object containing:
    • filters: Optional dictionary to filter by fieldid conditions (e.g., {"fieldid": 123})
    • limit: Number of results to return
    • offset: Offset for pagination
Parameters (1 required)
Required
paramsobject

List Contacts

list_contacts
Full Description

List contacts from ActiveCampaign with filtering and pagination.

When to use

  • User asks to browse, view, or list contacts
  • User needs contacts filtered by email, phone, tag, list, segment, status, or date
  • User wants contacts sorted by ID, created date, email, first/last name, or score

When NOT to use

  • User asks for a COUNT, AGGREGATE, or wants to SORT by an unsupported property

(e.g., "how many contacts have more than 5 tags?", "contacts sorted by number of tags", "contacts in California") — REJECT without calling this tool. Tag count and location are not filterable or sortable. Suggest: "I can list contacts filtered by tag ID or sorted by score — want that?"

  • User asks to filter by city, birthdate, organization, custom field value, email open

rate, or any property not listed in Supported filters below — REJECT. State: filters support email_like, phone, search, listid, tagid, segmentid, formid, seriesid, waitid, status, and date ranges (created/updated before/after).

  • User asks for "most active" contacts — use `get_top_contacts` instead.
  • User asks to sort by "most tagged", "most recently updated", or any field not listed

in Supported sort fields below — REJECT. State: sort supports id, cdate, email, first_name, last_name, name, score.

  • You already called this tool this turn — REJECT a second call. State the limitation.

Do NOT retry with different params to explore.

Supported filters (exhaustive)

  • email_like: email contains this string
  • phone: phone starts with this value
  • search: partial match across name, email, phone
  • listid: subscribed to this list ID (use list_lists to look up IDs)
  • tagid: has this tag ID assigned
  • segmentid, formid, seriesid, waitid: by segment / form / automation / wait ID
  • status: ACTIVE=1, UNCONFIRMED=0, UNSUBSCRIBED=2, BOUNCED=3, ANY=-1
  • filters.created_before / created_after / updated_before / updated_after: ISO 8601

Supported sort fields

id, cdate (created date), email, first_name, last_name, name, score

Examples — SUPPORTED

  • "Contacts on list 5" → listid=5
  • "Phone starts with 555" → phone="555"
  • "Highest-scoring contacts" → orders={"score": "DESC"}
  • "Most recently created contacts" → orders={"cdate": "DESC"}
  • "Active contacts sorted by email" → status=ACTIVE, orders={"email": "ASC"}
  • "Contacts created last month" → filters={"created_after": "2024-04-01", "created_before": "2024-05-01"}
  • "Total contact count" → limit=1, read meta.total

Examples — UNSUPPORTED (REJECT)

  • "Contacts with the most tags" — tag count is not a sort or filter field
  • "Contacts subscribed to most lists" — subscription count is not a sort field; REJECT without calling any tool
  • "Contacts who opened the last campaign" — email open activity is not a filter
  • "Contacts in California" — location/city is not a filter
  • "Most engaged contacts" — engagement score is not a sort field
Parameters (1 required)
Required
paramsobject

Filtering, ordering, and pagination options

List Custom Object Records

list_custom_object_records
Full Description

List records for a given custom object schema in an ActiveCampaign account. Returns records with their field values, relationships, and timestamps.

When to use

  • Retrieve records belonging to a specific custom object type
  • Browse or paginate through custom object data
  • Filter records by their relationship to a contact, account, or deal
  • Filter records by field values
  • Inspect field values stored in custom object records

When NOT to use

  • User wants to list custom object schemas (types) — use list_custom_object_schemas
  • User wants to create or update a record — use create_or_update_custom_object_record
  • User asks about standard objects (contacts, deals, campaigns) — use the dedicated tools

Examples

  • "show me all records for schema abc-123" → schema_id="abc-123", params={"limit": 100}
  • "list the first 10 records of custom object order" → schema_id="order", params={"limit": 10}
  • "get records for schema abc-123 linked to contact 42" → schema_id="abc-123", params={"filters": {"relationships.primary-contact": {"eq": "42"}}}
  • "get records for schema abc-123 linked to deal 7" → schema_id="abc-123", params={"filters": {"relationships.deal": {"eq": "7"}}}
  • "get records for schema abc-123 linked to account 15" → schema_id="abc-123", params={"filters": {"relationships.account": {"eq": "15"}}}
  • "find order records where city is Tulsa" → schema_id="order", params={"filters": {"fields.shipping-address-city": {"eq": "Tulsa"}}}
  • "find project records where budget is $10" → schema_id="projects", params={"filters": {"fields.budget.value": {"eq": "10"}}}
  • "find project records where currency is USD" → schema_id="projects", params={"filters": {"fields.budget.currency": {"eq": "USD"}}}
  • "show me the next page of records" → schema_id="abc-123", params={"limit": 100, "offset": 100}
  • "list records sorted by newest first" → schema_id="abc-123", params={"orders": {"createdTimestamp": "DESC"}}
  • "list records ordered by a custom field" → schema_id="abc-123", params={"orders": {"fields.my-field": "ASC"}}

Constraints

  • Maximum 100 results per request (default 20). Use limit/offset for pagination.
  • The schema_id can be either the schema UUID or its slug.
  • Supported filter keys:
    • 'relationships.<relationship-id>' with operator 'eq' and the related object's ID as value.

Common relationship IDs: 'primary-contact', 'account', 'deal'.

  • 'fields.<field-id>' with operator 'eq' and the field value to match.

Currency fields require a suffix: use 'fields.<field-id>.value' to filter by amount or 'fields.<field-id>.currency' to filter by currency code. Currency values are stored as decimal strings (e.g. "10" or "10.50" for $10.50) — NOT in cents.

  • Supported order keys: 'createdTimestamp', 'fields.<field-id>'. Values: 'ASC' or 'DESC'.
  • All filters are AND-combined.
  • Non-admin users must include at least one relationship filter (primary-contact, account, or deal).

Calling without a relationship filter is only permitted for admin users and returns a 403 otherwise.

Parameters (2 required)
Required
paramsobject
schema_idstring

List Custom Object Schemas

list_custom_object_schemas
Full Description

List all custom object schemas in an ActiveCampaign account. Returns schema definitions including fields, relationships, labels, and visibility.

When to use

  • Discover what custom object types exist in the account
  • Inspect field definitions or relationships of custom object schemas
  • Retrieve schema IDs or slugs for further custom object operations
  • Check whether a specific custom object type has been created
  • Find schemas that have a relationship with contacts, accounts, or deals
  • Find child schemas of a given parent schema

When NOT to use

  • User asks about standard objects (contacts, deals, campaigns) — use the dedicated tools
  • User wants to list records within a custom object — list_custom_object_records

Examples

  • "what custom objects do I have?" → params={}
  • "show me all custom object schemas" → params={}
  • "list custom objects sorted by creation date" → params={"orders": {"createdTimestamp": "DESC"}}
  • "find custom object with slug my-schema" → params={"filters": {"slug": {"eq": "my-schema"}}}
  • "find custom objects whose slug contains order" → params={"filters": {"slug": {"contains": "order"}}}
  • "show me the first 5 custom object types" → params={"limit": 5}
  • "find custom objects linked to contacts" → params={"filters": {"relationships.id": {"eq": "primary-contact"}, "relationships.namespace": {"eq": "contacts"}}}
  • "find custom objects linked to accounts" → params={"filters": {"relationships.id": {"eq": "account"}, "relationships.namespace": {"eq": "accounts"}}}
  • "find custom objects linked to deals" → params={"filters": {"relationships.id": {"eq": "deal"}, "relationships.namespace": {"eq": "deals"}}}
  • "find child schemas of schema abc-123" → params={"filters": {"parentId": {"eq": "abc-123"}}}
  • "find custom objects whose description contains orders" → params={"filters": {"description": {"contains": "orders"}}}

Constraints

  • Maximum 100 results per request (default 20). Use limit/offset for pagination.
  • Pass showFields=all to include deleted fields (status 'marked_for_deletion').
  • Supported filter keys: 'slug' (operators: eq, contains), 'description' (operators: eq, contains), 'relationships.id' (operators: eq, values: 'primary-contact', 'account', 'deal'),

'relationships.namespace' (operator: eq; values: 'contacts', 'accounts', 'deals'), 'parentId' (operators: eq, contains). All filters are AND-combined.

  • 'relationships.id' and 'relationships.namespace' must always be provided together.
  • Order keys: 'createdTimestamp'. Values: 'ASC' or 'DESC'.
Parameters (1 required)
Required
paramsobject

List Deal Activities

list_deal_activities
Full Description

List all deal activities from ActiveCampaign with filtering and pagination options.

Parameters (1 required)
Required
paramsobject

Parameters for listing deal activities. deal (int, optional): Filter by deal ID. exclude (str, optional): Exclude patterns (e.g. 'email=test@example.com'). limit (int, optional): Number of results to return. offset (int, optional): Offset for pagination. filters (DealActivityFilters, optional): Filtering options. data_type (str): Filter by data type (e.g. 'userid', 'deal', 'contact'). data_id (int): Filter by data ID. d_name (str): Filter by deal title.

List Deal Pipelines

list_deal_pipelines
Full Description

List deal pipelines from ActiveCampaign with filtering and pagination.

Returns basic pipeline info only: ID, title, currency, stage IDs. Only one filter (title) and one sort field (title) are supported.

When to use

  • User asks to browse, view, or list sales pipelines
  • User needs pipeline IDs to pass to list_deals (filters.group)
  • User needs to find a pipeline by name

When NOT to use

  • User asks for pipeline performance (win rate, avg deal value, deal count) or

asks to SORT/RANK pipelines by those metrics (e.g., "pipeline with the most deals") — REJECT without calling this tool. Records contain ID/title/currency/stage IDs only. Suggest: "I can list pipelines; then you can query deals filtered by pipeline ID — want that?"

  • User asks to filter by anything other than title — REJECT. State: only

filters.title (partial match) is supported.

  • User asks to sort by anything other than title — REJECT. State: only title sort

(ASC/DESC) is supported.

  • You already called this tool this turn — REJECT a second call. State the

limitation. Do NOT retry with different params to explore.

Supported filters (exhaustive)

  • filters.title: partial match on pipeline title (only filter available)

Supported sort fields

title (ASC or DESC only)

Examples — SUPPORTED

  • "All pipelines" → no filters needed
  • "Pipeline named 'Enterprise'" → filters.title="Enterprise"
  • "Pipelines sorted A-Z" → orders={"title": "ASC"}

Examples — UNSUPPORTED (REJECT)

  • "Pipeline with the most deals" — deal count is not returned or sortable
  • "Best-performing pipeline" — no performance metrics in records
Parameters (1 required)
Required
paramsobject

Filtering, ordering, and pagination options

List Deal Stages

list_deal_stages
Full Description

List deal stages — use to resolve a stage name to its ID before updating a deal.

When the user refers to a stage by name (e.g. "Enquiry", "Nurture"), call this ONCE to look up the ID, then pass that ID to update_deal. Filter by d_groupid to scope results to a specific pipeline.

Parameters (1 required)
Required
paramsobject

Filter options (d_groupid to scope by pipeline, limit, offset)

List Deals

list_deals
Full Description

List deals from ActiveCampaign with filtering and pagination.

Deal values are in cents (minimum_value=500000 = $5,000). Returns raw deal records only — no aggregate metrics (total value, average size, win rate) computed across records.

When to use

  • User asks to browse, view, or list deals/sales opportunities
  • User needs deals filtered by status, pipeline, stage, owner, value range, score,

tag, organization, or date

When NOT to use

  • User asks for total deal value, average deal size, win rate, or any aggregate metric —

REJECT without calling this tool. Suggest a specific supported slice instead, e.g. "I cannot compute totals, but I can show your open deals sorted by value — want that?"

  • User asks to sort by a field not in Supported sort fields — REJECT. State: sort

supports title, value, cdate, contact_name, organization_name, next_action.

  • You already called this tool this turn — REJECT a second call. State the

limitation. Do NOT retry with different params to explore.

Note: deals in pipelines the user lacks permission on return id/title/isDisabled=true only.

Supported filters (exhaustive)

  • filters.status: 0=Open, 1=Won, 2=Lost
  • filters.group: pipeline ID (use list_deal_pipelines to look up)
  • filters.stage: stage ID (use list_deal_stages to look up)
  • filters.owner: user ID
  • filters.tag: tag ID (-1=any tag, -2=no tag)
  • filters.organization: organization ID
  • filters.minimum_value / filters.maximum_value: deal value range (in cents)
  • filters.score / filters.score_greater_than / filters.score_less_than: deal score
  • filters.created_before/created_after/updated_before/updated_after: ISO 8601
  • filters.nextdate_range: "upcoming"/"scheduled"/"overdue"/"no-task" (task due dates)
  • filters.tasktype: task type ID (1=Call, 2=Email, 3=Meeting)
  • filters.search + filters.search_field: text in "all"/"title"/"contact"/"org"
  • filters.title: title match

Supported sort fields

title, value, cdate (created date), contact_name, organization_name, next_action

Examples — SUPPORTED

  • "Open deals" → filters.status=0
  • "Won deals this month" → filters.status=1, filters.created_after="2024-05-01"
  • "Deals in pipeline 3 sorted by value" → filters.group=3, orders={"value": "DESC"}
  • "Most valuable deals" → orders={"value": "DESC"}
  • "Deals worth over $5,000" → filters.minimum_value=500000
  • "Deals with overdue tasks" → filters.nextdate_range="overdue"
  • "My deals" → filters.owner=<user_id>

Examples — UNSUPPORTED (REJECT)

  • "Total value of all open deals" — aggregate; REJECT, suggest "I can show open deals sorted by value — want that?"
  • "Win rate by pipeline" — aggregate; REJECT, suggest "I can show won deals in that pipeline sorted by value — want that?"
Parameters (1 required)
Required
paramsobject

Filtering, ordering, and pagination options

List Email Activities

list_email_activities
Full Description

List email activities from ActiveCampaign.

For best results, only single records should be requested rather than running the call unfiltered.

Parameters ----------

  • params: EmailActivityListParams object containing:
    • limit: Optional number of results to return
    • offset: Optional offset for pagination
  • orders: Optional dictionary for ordering results by specific fields. Valid fields are:

"subscriberid", "fieldid", "tstamp", "id" - subscriberid is a contact id Example: {"tstamp": "DESC"} to sort by timestamp descending

  • filters: Optional dictionary for filtering by specific fields. Valid filters are:

"subscriberid", "fieldid" Example: {"subscriberid": 1641} or {"subscriberid": "1641"} to filter by subscriber ID

Parameters (1 required)
Required
paramsobject

List Groups

list_groups
Full Description

List all user groups from ActiveCampaign.

This tool is essential for list management workflows as it provides the available groups that can be associated with lists. When creating a new list, you must assign it to a group for it to be visible in the ActiveCampaign user interface.

Parameters (1 required)
Required
paramsobject

Pagination parameters containing: limit (int): Optional number of results to return. offset (int): Optional offset for pagination.

List Lists

list_lists
Full Description

List contact lists (audiences) from ActiveCampaign with filtering and pagination.

Records include active_subscribers count per list. Sorting by active_subscribers IS supported. Engagement metrics are NOT included and cannot be filtered or sorted by, as counts or as rates: no list record carries opens, clicks, bounces or unsubscribes, and no other tool reports them per list.

When to use

  • User asks to browse, view, or list email or SMS contact lists
  • User needs list IDs to pass to list_contacts (listid param)
  • User wants lists sorted by name, creation date, or subscriber count

When NOT to use

  • User asks for engagement metrics (opens, clicks, bounces, unsubscribes, or their

rates) or asks to RANK or SORT lists by those — as a count ("which list has the most unsubscribes", "list with most clicks") or as a rate ("lists sorted by unsubscribe rate") — REJECT without calling this tool. Records include active_subscribers only, so calling this tool cannot confirm or deny the metric. Suggest: "I can show lists sorted by active subscriber count — want that?"

  • User asks to filter by anything not in Supported filters — REJECT. State:

filters support name, id, channel, userid, created_timestamp, active_subscribers.

  • You already called this tool this turn — REJECT a second call. State the

limitation. Do NOT retry with different params to explore.

Supported filters (exhaustive)

  • filters.name: partial match on list name
  • filters.id: exact list ID
  • filters.channel: "email" / "sms" / "all"
  • filters.userid / filters.userid[]: filter by creator user ID
  • filters.created_timestamp: filter by creation date
  • filters.active_subscribers: filter by exact active subscriber count

Supported sort fields

name (ASC/DESC/weight), id, channel, userid, created_timestamp, active_subscribers

Examples — SUPPORTED

  • "All email lists" → filters.channel="email"
  • "List named 'newsletter'" → filters.name="newsletter"
  • "Lists sorted by subscriber count" → orders={"active_subscribers": "DESC"}
  • "Lists created after 2024-01-01" → filters.created_timestamp="2024-01-01"
  • "Largest lists first" → orders={"active_subscribers": "DESC"}

Examples — UNSUPPORTED (REJECT)

  • "Lists with open rate above 25%" — open rate is not in records; REJECT
  • "Lists sorted by unsubscribe rate" — unsubscribe rate is not a sort field; REJECT
  • "Which of my lists has the most unsubscribes?" — unsubscribe counts are not in

records and run_nrx_report reports per campaign, not per list; REJECT without calling this tool

Parameters (1 required)
Required
paramsobject

Filtering, ordering, and pagination options

List Tags

list_tags
Full Description

List, search, and filter tags

Parameters ----------

  • params: TagListParams object containing:
    • search_filters: Dictionary of operators and values to filter tags by name

Valid operators: "eq", "neq", "lt", "lte", "gt", "gte", "contains", "starts_with" Example: {"contains": "lead"} to find tags containing "lead"

  • order_method: How to order results - "weight", "asc", or "desc"
  • weight: Exact matches first, then matches starting with search term, then others
  • asc/desc: Ascending or descending alphabetical order
  • limit: Number of results to return (default 100)
  • offset: Offset for pagination
Parameters (1 required)
Required
paramsobject

Poll Campaign Generation Status

poll_campaign_generation_status
Full Description

Check the current status of a campaign generation job.

Returns a single status snapshot per call. Callers poll it repeatedly using the `request_id returned by generate_campaign: the campaign app uses it to drive its live progress indicator, and on clients without an app UI the model uses it to await the final result. Stop polling once status is success or error.

On any failure — a status of error, or a tool error from this call — never call generate_campaign` again for the same request: generation is not idempotent and may already have created a campaign. Surface the failure and tell the user to check ActiveCampaign first.

Parameters (1 required)
Required
request_idstring

Generation request UUID.

Redo Campaign Version

redo_campaign_version
Full Description

Bring an undone campaign change forward one version, or to a specific version from its history. Answers immediately and is NOT charged — a version move travels through work already paid for. This is the tool for every redo and "bring that back" — never edit_campaign for this: an edit rebuilds the campaign and bills for it, and produces different markup than the change that was undone. Omit version to step forward one change; pass a number only if it came from get_campaign_history's output.

Parameters (1 required, 1 optional)
Required
campaign_idinteger

Numeric id of the campaign.

Optional
versioninteger

The number beside the entry in get_campaign_history's output. Omit to redo the most recently undone change.

Default: null

Restore Campaign Version

restore_campaign_version
Full Description

Undo a change to a campaign, or put it back to a version from its history. Answers immediately and is NOT charged — a version move travels through work already paid for. This is the tool for every undo, revert, or "go back to version N" — never edit_campaign for this: an edit rebuilds the campaign and bills for it. Omit version to step back one change; pass a number only if it came from get_campaign_history's output.

Parameters (1 required, 1 optional)
Required
campaign_idinteger

Numeric id of the campaign.

Optional
versioninteger

The number beside the entry in get_campaign_history's output. Omit to undo the most recent change.

Default: null

Run Campaign Performance Report

run_nrx_report
Full Description

Run a campaign/contact performance reporting query.

When to use

  • User asks for campaign performance metrics: sends, opens, clicks, bounces,

unsubscribes, open rate, click rate, click-to-open rate

  • User wants to rank or compare campaigns by a performance metric
  • User asks for geo breakdowns, clicked links, or

per-subscriber engagement for a campaign

When NOT to use

  • Campaign records WITHOUT metrics (name, status, schedule) — use list_campaigns
  • Browsing contacts by tag/list/status — use list_contacts
  • Automation performance — automation metrics are not an available dataset; REJECT

and state the limitation

Datasets (module → explore)

  • contacts → clicked_contacts (contacts who clicked)
  • campaigns → all_campaigns_performance (per-campaign totals and rates),

campaign_geo (geography), engagement_slice (engagement), individual_campaign, link_clicks (clicked links), subscriber_page (per-subscriber), split_campaign_messages

  • These are the ONLY explores the API accepts — do not guess other names
  • Email clients for a campaign are NOT an explore here — use

get_campaign_email_clients instead

  • Request only the columns you need; the engine's fixed column

requirements are satisfied automatically and result rows contain only the requested columns

Examples — SUPPORTED

  • "How did my campaigns perform in June?" → explore=all_campaigns_performance,

columns=[campaign_name, total_sends, open_rate, click_rate], params={"view_distinct_campaigns_event_date_start": "2025-06-01", "view_distinct_campaigns_event_date_end": "2025-06-30"} (dates are inclusive; the end date covers events through its end of day)

  • "5 worst campaigns by bounce rate" → columns=[campaign_name, bounce_rate],

sorts=[{"column": "bounce_rate", "order": "DESC"}], limit=5

  • "Campaigns named 'welcome' with 50+ sends" → filter={"booleanCriteria": "AND",

"filters": [{"filterModel": {"column": "campaign_name", "operator": "CONTAINS", "value": "welcome"}}, {"filterModel": {"column": "total_sends", "operator": "GTE", "value": "50"}}]}

Parameters (1 required)
Required
params

Report definition (module, explore, columns, filter, sorts, pagination). The account is always the one the API token belongs to.

Search Content Manager Images

search_content_manager_images
Full Description

Search the account's content manager for images by keyword. Expands the query with singular and plural variants for broader coverage. Returns each image's name, dimensions, upload date, and URL (for display only — never pass it to generate_campaign or edit_campaign). Pass a returned name to generate_campaign or edit_campaign in image_references once the user picks one. generate_campaign's own image-decision rule governs whether this call is required before that — do not treat image_search_terms as a way to skip it without the user actually having handed off the choice.

If the search returns 0 images, call again with an empty query and limit=10 to retrieve the most recent uploads as suggestions.

Parameters (0 required, 2 optional)
Optional
limitinteger

Maximum images to return.

Default: 20
querystring

Search keyword — filename, alt text, or topic. Pass "" to return the most recent uploads.

Summarize URL (Deprecated)

summarize_url
Full Description

Deprecated for a campaign's page URL — do not call this when the URL is meant for generate_campaign or edit_campaign. Both already read and classify a page URL automatically via their own urls parameter — pass it there directly, in the same call; handing it over IS the read, so no separate summarization step ever comes first, even when the request is phrased as "write from that page" or "based on its content". Scrapes and summarizes a web page's content standalone; blocks until ready, typically 10-60 seconds. Kept published for backward compatibility only — neither generate_campaign nor edit_campaign has a parameter to feed this result into.

Parameters (1 required)
Required
urlstring

Public URL of the web page to summarize.