Everything an AI agent can do with the ActiveCampaign API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints29
API versionv3
Last updated23 June 2026
Orientation

How the ActiveCampaign API works.

The ActiveCampaign API is how an app or AI agent works with a marketing and CRM account: adding and updating contacts, applying tags, subscribing people to lists, creating deals in the pipeline, and enrolling contacts in automations. Access is granted through an account API key sent in a header, and that key has no granular scopes, so it reaches everything its account can read or write. A state change can be pushed to a registered webhook, like a contact subscribing or a tag being added.

29Endpoints
8Capability groups
12Read
17Write
15Permissions
Authentication
Every request authenticates with the account's API key, sent in the Api-Token header, against an account-specific base URL of the form https://{youraccountname}.api-us1.com/api/3. The exact host must be read from the account's Developer tab rather than assumed. Each user in an account has their own unique key, and the key must stay server-side.
Permissions
ActiveCampaign has no granular API scopes. A key reaches everything its account can read or write, across contacts, lists, tags, deals, custom fields, campaigns, automations, and CRM accounts. There is no way to scope a key to a single area at the API, so least-privilege has to be enforced by whatever sits in front of it.
Versioning
ActiveCampaign runs a single current version of its REST API, version 3, signalled by the /api/3 path. There is no per-account version pin and no version header. New endpoints and behaviour changes ship through a dated developer changelog, so an integration tracks the changelog rather than pinning a version. The legacy v1 API is deprecated.
Data model
ActiveCampaign is resource-oriented REST with JSON requests and responses and predictable /api/3/ paths. Contacts sit at the centre, joined to lists, tags, deals, and automations through association objects like contactTags, contactLists, and contactAutomations, so adding or removing a relationship is its own create or delete call. A state change can be pushed to a registered webhook. Lists page with limit and offset.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to ActiveCampaign determines what it can reach. There is a route for making calls, a route for receiving events, and a hosted server that exposes ActiveCampaign tools to agents, and each is governed by the key or login behind it.

Ways to connect

REST API (v3)

The REST API takes JSON request bodies, returns JSON, and pages through lists with limit and offset, at an account-specific base URL of the form https://{youraccountname}.api-us1.com/api/3. The exact host must be read from the account's Developer settings rather than assumed. A call authenticates with the account's API key in the Api-Token header. All v3 endpoints are supported except events and site tracking.

Best forConnecting an app or AI agent to ActiveCampaign.
Governed byThe Api-Token, which reaches everything the account can.
Docs ↗

Webhooks

ActiveCampaign POSTs an event to an HTTPS URL registered for chosen event types, so an integration learns about activity without polling. Events cover contact, list, deal, campaign, email, and SMS activity, and each event names the source that triggered it (public, admin, api, or system). Webhooks are managed through the /api/3/webhooks endpoint.

Best forReceiving ActiveCampaign events at an app or AI agent.
Governed byThe registered webhook URL and the event types it subscribes to.
Docs ↗

Remote MCP server

A hosted Model Context Protocol server exposes ActiveCampaign tools to AI agents and MCP clients like Claude, ChatGPT, and Cursor. Each account gets its own Remote MCP URL from the Developer settings, and the client authenticates through OAuth to connect the account. The tools cover reading and updating contacts, managing lists, tags, and custom fields, retrieving campaign and account insights, and triggering automations.

Best forConnecting an AI agent to ActiveCampaign through MCP.
Governed byThe OAuth grant tied to the connected account.
Docs ↗
Authentication

API key (Api-Token)

Every request authenticates with the account's API key, sent in the Api-Token header. The key is found in the account's Settings under the Developer tab, and each user in the account has their own unique key. ActiveCampaign has no granular API scopes, so a key reaches everything its account can read or write. The key must be kept server-side and never exposed in client code.

TokenAPI key in the Api-Token header
Best forServer-side calls to the v3 REST API.
Docs ↗

OAuth (Remote MCP)

Connecting the Remote MCP server uses OAuth: the client is given the account-specific Remote MCP URL and is guided through an OAuth login to authorize access to the account. This route is for MCP clients rather than direct REST calls, and it represents the connected account.

TokenOAuth grant tied to the connected account
Best forConnecting an MCP client like Claude, ChatGPT, or Cursor.
Docs ↗
Capability map

What an AI agent can do in ActiveCampaign.

The ActiveCampaign API is split into areas an agent can act on, like contacts, lists, tags, deals, custom fields, campaigns, automations, and CRM accounts. Each area has its own methods, and the key behind a call reaches every area its account can, because access is granted at the account level rather than per area.

Contacts

7 endpoints

Create a contact, retrieve one, list and search the whole base, update a contact, upsert by email, bulk import, and delete a contact.

A write here changes the people an account markets and sells to, and a delete removes a contact and its history.
View endpoints

Lists

4 endpoints

Create a list, retrieve one, list all of them, and subscribe or unsubscribe a contact from a list.

A write here changes who is subscribed and can trigger or suppress mailings.
View endpoints

Tags

4 endpoints

List all tags, create a tag, apply a tag to a contact, and remove a tag from a contact.

A write here changes how contacts are segmented, which can move them in and out of automations.
View endpoints

Deals (CRM)

4 endpoints

Create a deal, retrieve one, list all deals, and update a deal in the CRM pipeline.

A write here changes pipeline records like value, owner, and stage.
View endpoints

Custom fields

3 endpoints

List custom contact fields, retrieve one, and create a new custom field definition.

A write here changes the field structure used across every contact.
View endpoints

Campaigns

1 endpoint

Create a campaign that sends email to contacts.

A write here creates an outbound email campaign that can reach real recipients.
View endpoints

Automations

4 endpoints

List all automations, add a contact to an automation, list the automations a contact is in, and remove a contact from one.

A write here enrolls or removes a contact from an automated workflow that may send messages.
View endpoints

Accounts (CRM)

2 endpoints

List all CRM accounts and create a new account record for a business.

A write here changes the business records in the CRM.
View endpoints
Endpoint reference

Every ActiveCampaign API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Contacts

Create a contact, retrieve one, list and search the whole base, update a contact, upsert by email, bulk import, and delete a contact.7

ActiveCampaign has no granular API scopes; the Api-Token reaches everything the account can. A duplicate email returns a validation error.

Acts oncontact
Permission (capability)contacts: write
VersionAvailable since the API’s base version
Webhook eventsubscribe
Rate limitStandard limits apply

Read-only. No granular scope; the Api-Token sees every contact the account holds.

Acts oncontact
Permission (capability)contacts: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Paginates with limit and offset, defaulting to 20 and capped at 100.

Acts oncontact
Permission (capability)contacts: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A core write. No granular scope; the Api-Token can update any contact.

Acts oncontact
Permission (capability)contacts: write
VersionAvailable since the API’s base version
Webhook eventupdate
Rate limitStandard limits apply

Email is the identifying key: a match updates the existing contact, otherwise a new one is created.

Acts oncontact
Permission (capability)contacts: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Imports run asynchronously and can subscribe contacts to lists in the same call.

Acts oncontact
Permission (capability)contacts: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Irreversible; removes the contact and its associated history.

Acts oncontact
Permission (capability)contacts: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Lists

Create a list, retrieve one, list all of them, and subscribe or unsubscribe a contact from a list.4

A core write. No granular scope; the Api-Token can manage any list.

Acts onlist
Permission (capability)lists: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onlist
Permission (capability)lists: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Paginates with limit and offset, defaulting to 20.

Acts onlist
Permission (capability)lists: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Status 1 subscribes and status 2 unsubscribes; re-subscribing a manually unsubscribed contact is possible.

Acts oncontactList
Permission (capability)lists: write
VersionAvailable since the API’s base version
Webhook eventsubscribe
Rate limitStandard limits apply

Tags

List all tags, create a tag, apply a tag to a contact, and remove a tag from a contact.4

Read-only.

Acts ontag
Permission (capability)tags: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Creates the tag definition; applying it to a contact is a separate call.

Acts ontag
Permission (capability)tags: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Creates the association between a tag and a contact, which can move the contact in or out of automations.

Acts oncontactTag
Permission (capability)tags: write
VersionAvailable since the API’s base version
Webhook eventcontact_tag_added
Rate limitStandard limits apply

Removes the association, not the tag itself. The association id comes from a contact's contactTags.

Acts oncontactTag
Permission (capability)tags: write
VersionAvailable since the API’s base version
Webhook eventcontact_tag_removed
Rate limitStandard limits apply

Deals (CRM)

Create a deal, retrieve one, list all deals, and update a deal in the CRM pipeline.4

A core CRM write. Sets fields like contact, value, owner, stage, and status.

Acts ondeal
Permission (capability)deals: write
VersionAvailable since the API’s base version
Webhook eventdeal_add
Rate limitStandard limits apply

Read-only.

Acts ondeal
Permission (capability)deals: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Paginates with limit and offset.

Acts ondeal
Permission (capability)deals: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Can change contact, account, currency, group, owner, stage, status, title, value, and custom fields.

Acts ondeal
Permission (capability)deals: write
VersionAvailable since the API’s base version
Webhook eventdeal_update
Rate limitStandard limits apply

Custom fields

List custom contact fields, retrieve one, and create a new custom field definition.3

Read-only.

Acts onfield
Permission (capability)fields: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onfield
Permission (capability)fields: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Defines a field used across every contact in the account.

Acts onfield
Permission (capability)fields: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Campaigns

Create a campaign that sends email to contacts.1

Requires a name and type. Creates an outbound email campaign that can reach real recipients.

Acts oncampaign
Permission (capability)campaigns: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Automations

List all automations, add a contact to an automation, list the automations a contact is in, and remove a contact from one.4

Read-only.

Acts onautomation
Permission (capability)automations: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Enrolls a contact in an automated workflow that may send messages or apply tags.

Acts oncontactAutomation
Permission (capability)automations: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts oncontactAutomation
Permission (capability)automations: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Ends the contact's enrollment in that workflow.

Acts oncontactAutomation
Permission (capability)automations: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Accounts (CRM)

List all CRM accounts and create a new account record for a business.2

Read-only.

Acts onaccount
Permission (capability)accounts: read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A core CRM write.

Acts onaccount
Permission (capability)accounts: write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

ActiveCampaign can notify an app or AI agent when something happens in an account, like a contact subscribing, a tag being added, or a deal moving stage, instead of the app repeatedly asking. ActiveCampaign posts the event to a webhook URL registered for the chosen event types.

EventWhat it signalsTriggered by
subscribeA contact subscribed to a list./api/3/contacts
/api/3/contactLists
unsubscribeA contact unsubscribed from a list./api/3/contactLists
updateA contact's details were updated./api/3/contacts/:id
contact_tag_addedA tag was applied to a contact./api/3/contactTags
contact_tag_removedA tag was removed from a contact./api/3/contactTags/:id
deal_addA new deal was created in the CRM./api/3/deals
deal_updateAn existing deal changed, like its stage, owner, or value./api/3/deals/:id
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

ActiveCampaign limits how fast an app or AI agent can call, by a request rate measured per second across the whole account rather than per method.

Request rate

ActiveCampaign meters requests by rate across the whole account, not by a per-method cost. An account allows 5 requests per second, reported on each response through a RateLimit-Limit header (for example RateLimit-Limit: 5) and a RateLimit-Remaining header. Going over returns HTTP 429 Too Many Requests with a Retry-After header (for example Retry-After: 30) naming how long to wait. Accounts with high demand can arrange a custom rate limit with ActiveCampaign.

Pagination

List endpoints page with two query parameters: limit sets the page size, defaulting to 20 and capped at 100, and offset is a zero-based starting index. To walk a full collection, increment offset by limit each request; the response meta.total field gives the size of the whole collection. Results can be ordered with an orders parameter and narrowed with a filters parameter, whose match behaviour (equals or contains) varies by endpoint.

Request size

A list endpoint returns at most 100 records per page, the maximum value of limit. Larger reads are made by paging through with offset rather than raising the cap.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
401UnauthorizedNo valid API key was supplied in the Api-Token header.Send a valid key from the account's Developer tab, and confirm the request uses the account-specific base URL.
403ForbiddenThe key is valid but the request is not permitted, for example the wrong account host.Confirm the API URL from the user's Developer tab and that the key belongs to that account.
404Not FoundThe requested resource does not exist or is not visible to this account.Verify the resource id and that it belongs to the same account.
422Unprocessable EntityValidation failed, for example a missing required field or a duplicate contact email.Read the returned error messages, fix the parameters, and resend.
429Too Many RequestsThe account exceeded its rate of 5 requests per second. The response carries a Retry-After header.Back off and retry after the period named in the Retry-After header, and smooth the request rate.
Versioning & freshness

Version history.

ActiveCampaign runs a single current version of its REST API, version 3, and ships a dated developer changelog for new endpoints and behaviour changes rather than minting new version numbers.

Version history

What changed, and when

Latest versionv3
v3Current version
API version 3 (current)

Version 3 is the current REST API, signalled by the /api/3 path. It is structured around REST, HTTP, and JSON, authenticates with the Api-Token header, and supports every documented endpoint except events and site tracking. ActiveCampaign does not pin a version per account; new endpoints and behaviour changes are published in a dated developer changelog.

What changed
  • Hosted Remote MCP server made available, exposing ActiveCampaign tools to MCP clients over OAuth.
  • Account-level rate limit of 5 requests per second, reported via RateLimit-Limit and RateLimit-Remaining headers.
v1 (deprecated)
Legacy API version 1

The original v1 API is deprecated in favour of v3. New integrations use v3, and the v1 surface is no longer recommended.

There is one current version to call, so an integration tracks the changelog rather than pinning a version.

ActiveCampaign developer changelog ↗
Questions

ActiveCampaign API, answered.

How does an app authenticate to the ActiveCampaign API?+
Each request sends the account's API key in an Api-Token header. The key is found in the account's Settings under the Developer tab, where each user has their own unique key. Requests go to an account-specific base URL of the form https://{youraccountname}.api-us1.com/api/3, and the exact host should be read from that Developer tab rather than assumed, because the regional subdomain varies by account.
Does ActiveCampaign support OAuth or scoped API keys?+
The v3 REST API authenticates only with the account's Api-Token, and there are no granular scopes, so a key reaches everything its account can. OAuth appears in one place: connecting the hosted Remote MCP server, where an MCP client like Claude or ChatGPT authenticates through OAuth to the account. For direct REST calls there is no OAuth and no per-area permission, so scoping has to be enforced by a layer in front of the key.
What are the rate limits?+
An account is limited to 5 requests per second, shared across the whole account rather than per method. Each response reports the limit and remaining count through RateLimit-Limit and RateLimit-Remaining headers, and going over returns HTTP 429 with a Retry-After header naming how long to wait. Accounts with high volume can arrange a custom limit with ActiveCampaign.
How does the API version work?+
There is one current version, version 3, signalled by the /api/3 path. ActiveCampaign does not pin a version per account or take a version header, and ships changes through a dated developer changelog instead of minting new version numbers. The older v1 API is deprecated, and all v3 endpoints are supported except events and site tracking.
How do I add or remove a tag on a contact?+
Tags are applied through an association object. To add a tag, POST to /api/3/contactTags with the contact id and tag id, which creates the association. To remove it, fetch the association id from the contact's contactTags and DELETE /api/3/contactTags/{id}; this removes the link between the contact and the tag, not the tag definition itself.
Does ActiveCampaign have an MCP server for AI agents?+
Yes. ActiveCampaign publishes a hosted Remote MCP server that exposes its tools to MCP clients like Claude, ChatGPT, and Cursor. Each account gets its own Remote MCP URL from the Developer settings, and the client connects through OAuth. The tools cover reading and updating contacts, managing lists, tags, and custom fields, pulling campaign and account insights, and triggering automations.
Related

More marketing API guides for agents

What is Bollard AI?

Control what every AI agent can do in ActiveCampaign.

Bollard AI sits between a team's AI agents and ActiveCampaign. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared ActiveCampaign key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
ActiveCampaign
Marketing Agent
Read contacts and lists ResourceOffReadFull use
Add and tag contacts ActionOffReadFull use
Send campaigns ActionOffReadFull use
Per-agent access, set in Bollard AI, not in ActiveCampaign