Everything an AI agent can do with the Drip API.

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

Endpoints35
API versionv2
Last updated23 June 2026
Orientation

How the Drip API works.

The Drip API is how an app or AI agent works with a Drip account: adding and updating subscribers, applying and removing tags, recording events, subscribing people to campaigns and workflows, and sending broadcasts. Access is granted through an API token or an OAuth connection, and that credential reaches everything in the accounts it belongs to, because Drip has no granular per-endpoint permissions. Drip can also push subscriber activity, like a tag being applied or an email being clicked, to a registered webhook.

35Endpoints
10Capability groups
16Read
19Write
0Permissions
Authentication
Drip authenticates in two ways. A private-integration API token is sent with HTTP Basic auth, as the username with an empty password, for calls to an account the integration owns. A public integration uses the OAuth 2.0 authorization-code flow to connect to accounts it does not own, and Drip states the resulting token does not expire. Both routes are kept server-side and must be protected, since either reaches everything in the accounts it can see.
Permissions
Drip access is account-level, with no granular per-endpoint scopes. A token that can reach an account can call every endpoint on it, read and write alike, from listing subscribers to deleting them or sending email. There is no way inside Drip to limit a token to, for example, read-only or to a single resource type, so the access boundary has to be set outside Drip.
Versioning
Drip versions its API in the URL path rather than by date or header. Most resources answer under v2, while the newer shopper-activity endpoints for orders, carts, and products answer under v3. An integration calls whichever path a given resource is published under, and there is no per-account version pin to manage.
Data model
Drip is resource-oriented JSON over HTTPS, organized around the subscriber. Most paths nest under an account, as /v2/:account_id/, covering subscribers, events, tags, campaigns, workflows, broadcasts, custom fields, and webhooks, while a few account-level reads sit at /v2/accounts. Tags, events, and campaign membership drive automations, and Drip can push subscriber activity to a webhook.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Drip determines what it can reach. There is a route for making calls and a route for receiving events, each governed by the token behind it. A Drip token reaches everything in the accounts it belongs to, because access is account-level, so the boundary is set outside Drip.

Ways to connect

REST API

The REST API answers at https://api.getdrip.com over HTTPS, taking JSON request bodies and returning JSON. Most resources sit under the v2 path, while the newer shopper-activity endpoints for orders, carts, and products sit under v3. A call authenticates with an API token or an OAuth 2.0 token.

Best forConnecting an app or AI agent to Drip.
Governed byThe token and the accounts it can reach.
Docs ↗

Webhooks

Drip posts a JSON payload to a registered URL when a chosen subscriber event happens, such as a tag being applied or an email being clicked. Webhooks are created through the API or in the Drip settings, and are filtered to the events they should receive.

Best forReceiving Drip events at an app or AI agent.
Governed byThe URL and events registered on the webhook.
Docs ↗
Authentication

API token

A private-integration API token authenticates with HTTP Basic auth, sent as the username with an empty password. The token reaches every account and resource it belongs to, because Drip has no granular per-endpoint permissions. It is meant for server-side calls and must be kept secret.

TokenAPI token (HTTP Basic, token as username)
Best forServer-side calls to an account the integration owns.
Docs ↗

OAuth 2.0

A public integration uses the OAuth 2.0 authorization-code flow at getdrip.com to connect to accounts it does not own, exchanging the code for a Bearer access token. Drip states the token does not expire. The grant is account-level, with no per-resource scopes to narrow it.

TokenOAuth 2.0 Bearer access token
Best forPublic integrations connecting to accounts they don't own.
Docs ↗
Capability map

What an AI agent can do in Drip.

The Drip API is split into areas an agent can act on, like subscribers, events, tags, campaigns, workflows, and orders. Each area has its own methods, and writes in some areas send email to real people or remove subscriber records.

Subscribers

6 endpoints

List subscribers, fetch one, create or update a subscriber, delete a subscriber, and unsubscribe people in bulk.

Writes here change real subscriber records, and a delete removes a person permanently.
View endpoints

Events

3 endpoints

Record a custom event for a subscriber, record events in bulk, and list the custom event actions an account has seen.

Writes here record real activity that can trigger automations.
View endpoints

Tags

3 endpoints

List the tags in an account, apply a tag to a subscriber, and remove a tag from a subscriber.

Writes here change a subscriber's tags, which can start or stop automations.
View endpoints

Campaigns

5 endpoints

List and read email-series campaigns, subscribe a person to one, and list or remove its subscribers.

Writes here subscribe real people to an email series that sends to them.
View endpoints

Workflows

4 endpoints

List and read workflows, start a subscriber in one, and remove a subscriber from one.

Writes here move real people through automations that act on them.
View endpoints

Broadcasts

6 endpoints

List, read, create, update, and delete single-email campaigns, and send a test of one.

Writes here create and change emails that get sent to real people.
View endpoints

Custom fields

1 endpoint

List the custom field identifiers an account uses on its subscribers.

Reads here expose the custom data attached to subscribers.
View endpoints

Orders (ecommerce)

1 endpoint

Record orders for subscribers in bulk through the shopper-activity API.

Writes here record real purchase data tied to subscribers.
View endpoints

Webhooks

4 endpoints

List and read an account's webhooks, create a webhook, and delete one.

Writes here change where Drip sends a copy of account activity.
View endpoints

Accounts

2 endpoints

List the accounts a token can reach and fetch a single account's details.

Reads here show which accounts the token is able to act on.
View endpoints
Endpoint reference

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

Subscribers

List subscribers, fetch one, create or update a subscriber, delete a subscriber, and unsubscribe people in bulk.6

Drip access is account-level, so any valid token for the account can read its subscribers; there is no per-endpoint scope.

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

Returns the subscriber's email, custom fields, tags, and status. Account-level access, no per-endpoint scope.

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

A single create-or-update call; sets custom fields, tags, and status in one request. Account-level access, no per-endpoint scope.

Acts onsubscriber
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscriber.created
Rate limitStandard limits apply

Processed asynchronously and counted against the separate 50-per-hour batch quota. Account-level access, no per-endpoint scope.

Acts onsubscriber
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitBatch quota: 50 requests per hour, up to 1,000 records each

Marks people as unsubscribed from email marketing rather than deleting them. Counted against the batch quota. Account-level access, no per-endpoint scope.

Acts onsubscriber
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscriber.unsubscribed_all
Rate limitBatch quota: 50 requests per hour, up to 1,000 records each

Irreversible; removes the person and their history. Account-level access, no per-endpoint scope.

Acts onsubscriber
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscriber.deleted
Rate limitStandard limits apply

Events

Record a custom event for a subscriber, record events in bulk, and list the custom event actions an account has seen.3

An event can start a workflow or campaign that acts on the subscriber. Account-level access, no per-endpoint scope.

Acts onevent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscriber.performed_custom_event
Rate limitStandard limits apply

Processed asynchronously and counted against the batch quota. Account-level access, no per-endpoint scope.

Acts onevent
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitBatch quota: 50 requests per hour, up to 1,000 records each

Account-level access, no per-endpoint scope.

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

Tags

List the tags in an account, apply a tag to a subscriber, and remove a tag from a subscriber.3

Account-level access, no per-endpoint scope.

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

Applying a tag can start or stop an automation. Account-level access, no per-endpoint scope.

Acts ontag
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscriber.applied_tag
Rate limitStandard limits apply

Account-level access, no per-endpoint scope.

Acts ontag
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscriber.removed_tag
Rate limitStandard limits apply

Campaigns

List and read email-series campaigns, subscribe a person to one, and list or remove its subscribers.5

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

Adds a real person to an email series that will send to them. Account-level access, no per-endpoint scope.

Acts oncampaign
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventsubscriber.subscribed_to_campaign
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

A campaign_id parameter limits the removal to one campaign; without it the person is removed from all campaigns. Account-level access, no per-endpoint scope.

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

Workflows

List and read workflows, start a subscriber in one, and remove a subscriber from one.4

Account-level access, no per-endpoint scope.

Acts onworkflow
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 onworkflow
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Moves a real person into an automation that acts on them. Account-level access, no per-endpoint scope.

Acts onworkflow
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 onworkflow
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Broadcasts

List, read, create, update, and delete single-email campaigns, and send a test of one.6

Account-level access, no per-endpoint scope.

Acts onbroadcast
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 onbroadcast
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Creates an email that can be sent to real people. Account-level access, no per-endpoint scope.

Acts onbroadcast
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 onbroadcast
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 onbroadcast
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Sends a real email to the test addresses. Account-level access, no per-endpoint scope.

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

Custom fields

List the custom field identifiers an account uses on its subscribers.1

Custom field values themselves are set on the subscriber. Account-level access, no per-endpoint scope.

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

Orders (ecommerce)

Record orders for subscribers in bulk through the shopper-activity API.1

The newer shopper-activity order endpoint answers under v3. Processed asynchronously and counted against the batch quota. Account-level access, no per-endpoint scope.

Acts onorder
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitBatch quota: 50 requests per hour, up to 1,000 records each

Webhooks

List and read an account's webhooks, create a webhook, and delete one.4

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

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

Sets where Drip sends a copy of account activity. 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

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

Accounts

List the accounts a token can reach and fetch a single account's details.2

Not scoped to an account_id, since it lists the accounts the token belongs to. Account-level access, no per-endpoint scope.

Acts onaccount
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 onaccount
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.

Drip can notify an app or AI agent when something happens to a subscriber, like a tag being applied, an email being clicked, or a custom event being recorded. Drip posts a JSON payload to a webhook URL that has been registered for the chosen events.

EventWhat it signalsTriggered by
subscriber.createdFires when a subscriber is created in the account./v2/:account_id/subscribers
subscriber.deletedFires when a subscriber is permanently deleted./v2/:account_id/subscribers/:subscriber_id
subscriber.applied_tagFires when a tag is applied to a subscriber./v2/:account_id/subscribers/:subscriber_id/tags
subscriber.removed_tagFires when a tag is removed from a subscriber./v2/:account_id/subscribers/:subscriber_id/tags/:tag
subscriber.subscribed_to_campaignFires when a subscriber is subscribed to an email-series campaign./v2/:account_id/campaigns/:campaign_id/subscribers
subscriber.removed_from_campaignFires when a subscriber is removed from a campaign./v2/:account_id/subscribers/:subscriber_id/remove
subscriber.unsubscribed_allFires when a subscriber is unsubscribed from all of the account's email./v2/:account_id/unsubscribes/batches
subscriber.performed_custom_eventFires when a custom event is recorded for a subscriber./v2/:account_id/events
subscriber.opened_emailFires when a subscriber opens an email Drip sent them.In-app only
subscriber.clicked_emailFires when a subscriber clicks a link in an email Drip sent them.In-app only
subscriber.bouncedFires when an email to a subscriber bounces.In-app only
subscriber.updated_custom_fieldFires when a custom field on a subscriber changes.In-app only
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Drip limits how fast an app or AI agent can call, through an hourly request quota that is counted separately for batch endpoints and for every other endpoint.

Request rate

Drip counts requests per hour against two separate quotas. Regular endpoints allow 3,600 requests per hour, about one per second sustained. Batch endpoints, which take up to 1,000 records in a single call, have their own quota of 50 requests per hour, for up to 50,000 records an hour. The X-RateLimit-Limit and X-RateLimit-Remaining response headers report the current state, and exceeding either quota returns 429 with a message to try again in an hour.

Pagination

List endpoints return up to 100 records per page by default, which is also the maximum, and take a page parameter to move through the pages.

Request size

A batch request carries up to 1,000 records in one call. Batch calls are processed asynchronously, so a change may take a moment to appear after the API accepts the request.

Errors

Status codes & error handling.

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

StatusCodeMeaningWhat to do
401unauthorizedAuthentication failed, because the API token or OAuth token is missing, invalid, or expired.Send a valid token, as the Basic auth username for an API token or as a Bearer token for OAuth.
403authorization_errorThe request is authenticated but not permitted, for example acting on an account the token cannot reach, or a state transition that is not allowed.Confirm the token belongs to the account, and that the resource is in a state that allows the action.
404not_found_errorThe requested resource does not exist in the account.Check the account_id and resource id in the path.
422validation errorThe request was well-formed but a field is missing or invalid. The body holds an errors array with codes such as presence_error, email_error, length_error, and format_error.Read the errors array, correct the named field, and resend.
429rate limit exceededThe hourly request quota was exceeded, returning the message that the rate limit is reached and to try again in an hour.Wait for the quota to reset, and watch the X-RateLimit-Remaining header to stay under the limit.
Versioning & freshness

Version history.

Drip versions its API in the path. Most resources answer under v2, while the newer shopper-activity endpoints for orders, carts, and products answer under v3.

Version history

What changed, and when

Latest versionv2
v2Current version
Current REST API (v2, with v3 shopper activity)

The Drip REST API answers at api.getdrip.com. Most resources, including subscribers, events, tags, campaigns, workflows, broadcasts, custom fields, and webhooks, sit under the v2 path. The newer shopper-activity endpoints for orders, carts, and products sit under v3. Drip versions its API in the URL path rather than by date or header, so there is no per-account version to pin; dated changes ship through the product release notes.

What changed
  • v2 covers subscribers, events, tags, campaigns, workflows, broadcasts, custom fields, conversions, forms, and webhooks
  • v3 shopper-activity endpoints cover orders, carts, and products
  • Authentication is by API token (HTTP Basic) or OAuth 2.0
2026-05
April and May 2026 release notes

Drip added a new API endpoint that returns Single Email Campaign metrics, exposing the same delivery and revenue data shown on the dashboard, like sends, deliveries, unsubscribes, bounces, complaints, orders, and revenue. The Orders batch endpoint was improved for importing large collections of orders that would exceed the 3,600-per-hour regular limit, and a bug where a failed POST to the batches endpoint still returned a 201 Created response was fixed.

What changed
  • New API endpoint for Single Email Campaign metrics (delivery and revenue data)
  • Improved Orders batch endpoint for large order imports
  • Fixed failed batches POSTs that wrongly returned 201 Created

Most integrations use v2 and move individual ecommerce calls to v3 where Drip has published the newer endpoint.

Drip API reference ↗
Questions

Drip API, answered.

How does an agent authenticate to Drip, API token or OAuth?+
Both are supported. A private integration acting on an account it owns uses an API token, sent through HTTP Basic auth as the username with an empty password. A public integration connecting to accounts it does not own uses the OAuth 2.0 authorization-code flow and receives a Bearer access token, which Drip states does not expire. Either way, the credential reaches everything in the accounts it can see, so it has to be kept server-side.
Can a Drip token be limited to read-only or to one resource type?+
No. Drip access is account-level, with no granular per-endpoint permissions. A token that can reach an account can call every endpoint on it, so the same credential that reads subscribers can also delete them or send a broadcast. There is no setting inside Drip to scope a token down, which means the only place to enforce a narrower boundary is in front of the API.
What are the rate limits?+
Regular endpoints allow 3,600 requests per hour, roughly one per second. Batch endpoints have a separate quota of 50 requests per hour, and because a single batch call carries up to 1,000 records, that allows up to 50,000 records an hour. The X-RateLimit-Limit and X-RateLimit-Remaining response headers report the current state, and going over returns a 429 with a message to try again in an hour.
How does an agent receive Drip activity instead of polling?+
Drip posts a JSON payload to a registered webhook URL when a chosen subscriber event happens, such as subscriber.created, subscriber.applied_tag, subscriber.opened_email, or subscriber.performed_custom_event. Webhooks are created through the API or in Drip's settings and are filtered to the events they should receive, so an integration learns about activity without repeatedly asking.
What's the difference between v2 and v3 endpoints?+
Drip versions its API in the path. Most resources, including subscribers, events, tags, campaigns, workflows, broadcasts, and webhooks, answer under v2. The newer shopper-activity endpoints for orders, carts, and products answer under v3. An integration calls whichever path a given resource is published under, and there is no per-account version to pin.
How do batch endpoints work?+
A batch endpoint takes up to 1,000 records in one call, such as creating or updating subscribers, recording events, unsubscribing people, or recording orders. Batch calls are processed asynchronously, so a change may take a moment to appear after Drip accepts the request, and they count against a separate quota of 50 requests per hour rather than the 3,600-per-hour limit on regular endpoints.
Related

More marketing API guides for agents

What is Bollard AI?

Control what every AI agent can do in Drip.

Bollard AI sits between a team's AI agents and Drip. 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 Drip API token.
  • 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.
Drip
Marketing Agent
Read subscribers ResourceOffReadFull use
Apply tags ActionOffReadFull use
Send broadcasts ActionOffReadFull use
Delete subscribers ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Drip