Everything an AI agent can do with the Mailchimp API.

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

Endpoints36
API version3.0
Last updated23 June 2026
Orientation

How the Mailchimp API works.

The Mailchimp API is how an app or AI agent works with a Mailchimp account: adding and updating contacts in an audience, creating and sending campaigns, running automations, and reading how sends performed. Access is granted through an API key or an OAuth 2.0 token, and either one carries the full access of the account it belongs to, because Mailchimp grants access at the account level rather than per area. Mailchimp can also push events to a webhook when something happens in an audience, like a contact subscribing or unsubscribing.

36Endpoints
9Capability groups
14Read
22Write
0Permissions
Authentication
Mailchimp authenticates a call with either an API key or an OAuth 2.0 access token, and both are sent the same way, through HTTP Basic auth or a Bearer header. An API key ends in a data-center suffix, like -us19, that decides which subdomain a call goes to; an OAuth token's data center comes from the metadata endpoint instead. An API key is for an account's own data, while OAuth is for connecting to accounts the app does not own. OAuth tokens do not expire unless the user revokes them.
Permissions
Mailchimp does not use granular per-endpoint scopes. A key or an OAuth token carries the full access of the account it belongs to, so it can reach every area that account can, audiences, contacts, campaigns, automations, templates, reports, and ecommerce alike. There is no way to grant an integration read-only or one-area access at the Mailchimp layer; narrowing what an agent can do has to happen outside Mailchimp. A 403 reflects the account's own permissions or plan, not a scope on the key.
Versioning
The Marketing API runs one current version, 3.0, in every call path, like /3.0/lists. Mailchimp does not mint new version numbers for changes; it publishes dated release notes when it adds endpoints or changes behavior, such as the August 2025 beta endpoints for adding SMS-only contacts. An integration tracks the release notes rather than pinning a version.
Data model
The API is resource-oriented JSON over HTTPS at a per-account data-center subdomain. An audience (a list) holds contacts (members), addressed by the MD5 hash of the lowercased email, plus its segments and merge fields. Campaigns, classic automations, and templates produce the emails sent to an audience; reports return how those sends performed; ecommerce stores tie purchase data back to contacts. A subscribe, unsubscribe, or campaign-send can push an event to a webhook.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Mailchimp determines what it can reach. There is a route for making calls and a route for receiving events, each governed by the key or token behind it.

Ways to connect

REST API

The Marketing API answers at https://.api.mailchimp.com/3.0/, where is the account's data center, like us19, taken from the suffix on an API key or from the OAuth metadata endpoint. A call authenticates with an API key or an OAuth 2.0 token, sent the same way through HTTP Basic auth or a Bearer header.

Best forConnecting an app or AI agent to Mailchimp.
Governed byThe key or token and the account it belongs to.
Docs ↗

Webhooks

Mailchimp POSTs form-encoded event data to a receiver URL registered on an audience. Each event carries a type, like subscribe or unsubscribe, a fired_at timestamp, and a data object. Webhooks require a Standard or Premium plan to enable.

Best forReceiving Mailchimp audience events at an app or AI agent.
Governed byThe receiver URL registered on the audience.
Docs ↗
Authentication

API key

An API key authenticates a first-party call to the account that issued it. The key ends in a data-center suffix, like -us19, which sets the subdomain a call goes to. It is sent through HTTP Basic auth, with any username and the key as the password, or as a Bearer token, and it carries the full access of the account, not a narrowed scope.

TokenAPI key (ends in -us19 style data-center suffix)
Best forServer-side access to the account's own data.
Docs ↗

OAuth 2.0

OAuth 2.0 is for connecting to a Mailchimp account an app does not own. A user authorizes the app at login.mailchimp.com, and the app exchanges the returned code for an access token, then reads the account's data center from the metadata endpoint. There are no scopes to choose: authorizing grants the app account-level access, and the token does not expire unless the user revokes it.

TokenOAuth 2.0 access token (non-expiring, account-level)
Best forConnecting to other users' Mailchimp accounts.
Docs ↗
Capability map

What an AI agent can do in Mailchimp.

The Mailchimp API is split into areas an agent can act on, like audiences, contacts, campaigns, automations, templates, reports, and ecommerce stores. Each area has its own methods, and a key or token reaches every area its account can, because access is granted at the account level rather than per area.

Audiences (lists)

5 endpoints

List the account's audiences, read one, create an audience, update its settings, and remove one.

Writes here change real audience data.
View endpoints

Contacts (list members)

7 endpoints

List and read contacts in an audience, add a contact, add or update one, change a contact, and archive or permanently delete one.

Writes here change real contact data and can permanently delete personal data.
View endpoints

Segments & merge fields

4 endpoints

List and create segments in an audience, and list and create the merge fields that store contact attributes.

Writes here change real segment and field data.
View endpoints

Campaigns

7 endpoints

List, read, create, update, and delete campaigns, set their content, send a test, and schedule or send them.

Sending a campaign emails real contacts and cannot be recalled.
View endpoints

Automations

3 endpoints

List and read classic automations, and start or pause all the emails in one.

Starting automation emails sends to real contacts.
View endpoints

Templates

3 endpoints

List, read, create, update, and delete the templates that lay out a campaign.

Writes here change real template data.
View endpoints

Reports

2 endpoints

Read campaign performance reports across the account and for a single campaign.

Read-only; reports return recipient activity such as opens and clicks.
View endpoints

Ecommerce stores

3 endpoints

List, read, create, update, and delete connected stores, and add the orders that drive purchase-based marketing.

Writes here change real store and order data.
View endpoints

Webhooks

2 endpoints

List and create the webhooks on an audience that push events to a receiver URL.

Writes here change real webhook data.
View endpoints
Endpoint reference

Every Mailchimp 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

Audiences (lists)

List the account's audiences, read one, create an audience, update its settings, and remove one.5

Mailchimp grants account-level access, so any valid key or OAuth token can call this; there is no per-endpoint scope.

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

Account-level access; no per-endpoint scope.

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

Account-level access; any key or token can write. An account has a cap on how many audiences it can hold, set by plan.

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

Account-level access; no per-endpoint scope.

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

Removes the audience and its contacts. Account-level access; no per-endpoint scope.

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

Contacts (list members)

List and read contacts in an audience, add a contact, add or update one, change a contact, and archive or permanently delete one.7

Returns contacts' email addresses and profile data. Account-level access; no per-endpoint scope.

Acts onlist member
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The subscriber_hash is the MD5 hash of the lowercased email address. Account-level access; no per-endpoint scope.

Acts onlist member
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Fails if the contact already exists; the add-or-update method below is idempotent. Account-level access; no per-endpoint scope.

Acts onlist member
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscribe
Rate limitStandard limits apply

The idempotent way to sync a contact. A status of subscribed counts as an opt-in. Account-level access; no per-endpoint scope.

Acts onlist member
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscribe
Rate limitStandard limits apply

Setting status to unsubscribed unsubscribes the contact. Account-level access; no per-endpoint scope.

Acts onlist member
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventprofile
Rate limitStandard limits apply

Archiving is reversible; the permanent-delete action below is not. Account-level access; no per-endpoint scope.

Acts onlist member
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Irreversible, and the same email cannot be re-imported afterward. Account-level access; no per-endpoint scope.

Acts onlist member
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Segments & merge fields

List and create segments in an audience, and list and create the merge fields that store contact attributes.4

Account-level access; no per-endpoint scope.

Acts onsegment
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A segment can be a saved set of conditions or a fixed (static) list of contacts. Account-level access; no per-endpoint scope.

Acts onsegment
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Merge fields are the columns that store contact attributes, like first name. Account-level access; no per-endpoint scope.

Acts onmerge field
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Account-level access; no per-endpoint scope.

Acts onmerge field
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Campaigns

List, read, create, update, and delete campaigns, set their content, send a test, and schedule or send them.7

Account-level access; no per-endpoint scope.

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

Account-level access; no per-endpoint scope.

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

Creates the campaign as a draft; content and sending are separate calls. Account-level access; no per-endpoint scope.

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

Account-level access; no per-endpoint scope.

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

Emails only the test recipients, not the audience. Account-level access; no per-endpoint scope.

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

The scheduled send still emails the audience when it fires. Account-level access; no per-endpoint scope.

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

Emails real contacts and cannot be recalled once it begins. Account-level access; no per-endpoint scope.

Acts oncampaign
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventcampaign
Rate limitStandard limits apply

Automations

List and read classic automations, and start or pause all the emails in one.3

Covers classic automations; newer Customer Journeys are managed in the app. Account-level access; no per-endpoint scope.

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

Resumes sending to contacts who enter the workflow. Account-level access; no per-endpoint scope.

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

Account-level access; no per-endpoint scope.

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

Templates

List, read, create, update, and delete the templates that lay out a campaign.3

Account-level access; no per-endpoint scope.

Acts ontemplate
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Only classic templates are supported here. Account-level access; no per-endpoint scope.

Acts ontemplate
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Account-level access; no per-endpoint scope.

Acts ontemplate
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reports

Read campaign performance reports across the account and for a single campaign.2

Account-level access; no per-endpoint scope.

Acts onreport
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reports include opens, clicks, and bounces by recipient. Account-level access; no per-endpoint scope.

Acts onreport
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Ecommerce stores

List, read, create, update, and delete connected stores, and add the orders that drive purchase-based marketing.3

Account-level access; no per-endpoint scope.

Acts onstore
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A store links purchase data to an audience. Account-level access; no per-endpoint scope.

Acts onstore
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

An order's campaign_id is overwritten to match Mailchimp's attribution model. Account-level access; no per-endpoint scope.

Acts onorder
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Webhooks

List and create the webhooks on an audience that push events to a receiver URL.2

Account-level access; no per-endpoint scope.

Acts onwebhook
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The events object toggles which event types fire, like subscribe and unsubscribe. Account-level access; no per-endpoint scope.

Acts onwebhook
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Mailchimp can notify an app or AI agent when something happens in an audience, like a contact subscribing or unsubscribing, instead of the app repeatedly asking. Mailchimp posts the event to a webhook URL that has been registered on a list for the chosen event types.

EventWhat it signalsTriggered by
subscribeFires when a contact subscribes to an audience./lists/{list_id}/members
/lists/{list_id}/members/{subscriber_hash}
unsubscribeFires when a contact unsubscribes from an audience, whether they opt out or are removed./lists/{list_id}/members/{subscriber_hash}
profileFires when a contact's profile is updated, like a changed merge field value./lists/{list_id}/members/{subscriber_hash}
/lists/{list_id}/members/{subscriber_hash}
upemailFires when a contact changes the email address on their record.In-app only
cleanedFires when an address is cleaned from the audience, after it hard-bounces or is flagged for abuse.In-app only
campaignFires when a campaign finishes sending to the audience./campaigns/{campaign_id}/actions/send
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Mailchimp limits how many requests an app or AI agent can run at once, through a cap on simultaneous connections per key rather than a request-per-second quota.

Request rate

Mailchimp meters by how many requests run at once, not by a per-second or per-method quota. The Marketing API allows 10 simultaneous connections per API key, and a request over that returns HTTP 429. A separate cap holds 500 pending webhook deliveries before further events are dropped, which also surfaces as a 429. Long-running bulk work is meant to go through the batch-operations endpoint rather than many parallel calls.

Pagination

List endpoints page through offset and count query parameters, where count sets the page size, up to 1000, and offset sets where the page starts. A total_items field in each response gives the full count so a caller knows when to stop. The fields and exclude_fields parameters trim the response to only the parts needed, which keeps large list responses small.

Request size

A list endpoint returns at most 1000 items per page through the count parameter. Bulk changes across many records are meant to run through the batch-operations endpoint, which queues the work and returns the results as a downloadable file rather than in the response body.

Errors

Status codes & error handling.

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

StatusCodeMeaningWhat to do
400Bad Request / Invalid Resource / JSON Parse ExceptionThe request could not be processed: it was malformed, a field failed validation, or the JSON body could not be parsed.Read the detail field and the per-field errors array, correct the request, and resend.
401API Key InvalidThe API key is missing, invalid, or disabled, or the OAuth token is not valid.Send a valid key or token, and confirm the call is going to the right data center subdomain.
403ForbiddenAccess is denied because of the user's account permissions, a deactivated account, or a pricing-plan restriction on the feature.Confirm the account has the permission and plan the feature needs.
404Resource Not FoundThe requested resource does not exist or is not visible to this account.Check the path and the resource id, such as the list_id or subscriber_hash.
405Method Not AllowedThe endpoint does not support the HTTP method used in the request.Use the method the endpoint documents, such as PATCH rather than PUT to update.
422Invalid Method OverrideThe X-HTTP-Method-Override header was used on a request that was not a POST, which is the only method it works with.Only send the method-override header on POST requests.
429Too Many RequestsA limit was hit: either the 10 simultaneous connections per key, or the cap of 500 pending webhook deliveries.Lower how many requests run at once, then retry after the in-flight ones finish.
500Internal Server ErrorAn error occurred on Mailchimp's side.Retry after a short wait, and contact Mailchimp support if it persists.
Versioning & freshness

Version history.

Mailchimp runs a single current version of its Marketing API, 3.0, and ships dated release notes for new endpoints and behavior changes rather than minting new version numbers.

Version history

What changed, and when

Latest version3.0
3.0Current version
Marketing API 3.0 (current)

The Marketing API runs one current version, 3.0, in every call path, like /3.0/lists. Mailchimp does not issue new version numbers for changes; instead it publishes dated release notes when endpoints or behavior change, and an integration tracks those notes rather than pinning a version.

What changed
  • Single current version, 3.0, with no dated version strings to pin
  • RFC 7807 problem+json error responses, with type, title, status, detail, and instance fields
  • Account-level access for both API keys and OAuth 2.0 tokens, with no per-endpoint scopes
2025-08-07Feature update
New Audiences endpoints (beta)

Mailchimp added alternative Audiences endpoints that let a contact be added with just an SMS number, without an email address, which the standard members endpoints had required.

What changed
  • Beta Audiences endpoints accept SMS-only contacts
  • Removes the prior requirement that every contact carry an email address
2024-12-06Feature update
Order attribution change

Mailchimp began overwriting the campaign_id and outreach_id fields on ecommerce orders so they align with Mailchimp's native attribution model, and advised developers to drop any custom logic that set those fields.

What changed
  • campaign_id and outreach_id on orders are overwritten to match Mailchimp attribution
  • Custom logic for those fields should be deprecated

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

Mailchimp release notes ↗
Questions

Mailchimp API, answered.

Does Mailchimp let me give an integration read-only or single-area access?+
Not at the Mailchimp layer. Both an API key and an OAuth token carry the full access of the account they belong to, with no per-endpoint scopes to narrow them. Any valid key or token can read and write every area the account can reach, from contacts to campaigns to ecommerce. To limit what an agent can do, the control has to sit in front of Mailchimp, not inside it.
What's the difference between an API key and OAuth 2.0?+
An API key authenticates calls to the account that issued it, so it suits an app working with its own Mailchimp data. OAuth 2.0 is for connecting to accounts owned by other users: the user authorizes the app, and the app gets a token tied to that account. Both authenticate the same way once issued, and neither offers a choice of scopes, the access is account-level either way.
How do I know which data center to call?+
Every account lives in a data center, like us19, and a call must go to that subdomain, such as https://us19.api.mailchimp.com/3.0/. With an API key, the data center is the suffix after the dash in the key. With OAuth, it comes from the metadata endpoint, which returns the dc for the account the token belongs to.
What are the rate limits?+
Mailchimp limits concurrency rather than request rate. A single API key may hold 10 simultaneous connections, and a request over that returns HTTP 429. A separate cap allows 500 pending webhook deliveries before more are dropped. Work that touches many records is meant to go through the batch-operations endpoint, which queues the operations instead of running many parallel calls.
How do I add or update a contact without creating a duplicate?+
Use the add-or-update method, which is a PUT to /lists/{list_id}/members/{subscriber_hash}, where the subscriber_hash is the MD5 hash of the contact's lowercased email. It creates the contact if the email is new and updates it if the email already exists, so re-running it is safe. The plain add method, a POST, fails if the contact already exists.
How do I receive events instead of polling?+
Register a webhook on an audience with a POST to /lists/{list_id}/webhooks, choosing event types in the events object, such as subscribe, unsubscribe, profile, upemail, cleaned, and campaign. Mailchimp then POSTs form-encoded event data to the receiver URL when each chosen event fires. Webhooks require a Standard or Premium plan to enable.
What does sending a campaign actually do?+
A POST to /campaigns/{campaign_id}/actions/send emails the campaign to its whole audience right away, and it cannot be recalled once it starts. Creating a campaign and setting its content are separate, earlier steps that change nothing for contacts; only the send action emails them. The schedule action does the same thing at a chosen later time.
Related

More marketing API guides for agents

What is Bollard AI?

Control what every AI agent can do in Mailchimp.

Bollard AI sits between a team's AI agents and Mailchimp. 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 Mailchimp 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.
Mailchimp
Marketing Agent
Read audiences and reports ResourceOffReadFull use
Add and update contacts ActionOffReadFull use
Send campaigns ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Mailchimp