Everything an AI agent can do with the Kit API.

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

Endpoints28
API versionv4
Last updated23 June 2026
Orientation

How the Kit API works.

The Kit API is how an app or AI agent works with a creator's email marketing account: listing and creating subscribers, tagging people, adding them to a sequence or form, and sending a broadcast. Access is granted through an OAuth token or a personal API key, and that credential carries either read or write across the whole account rather than per-resource permissions. Kit can also push events to a webhook when something happens, like a subscriber being tagged or a purchase being made.

28Endpoints
8Capability groups
14Read
14Write
2Permissions
Authentication
Kit v4 accepts two credentials. An OAuth 2.0 access token, sent as a Bearer token, is for apps that act on behalf of other creators and is required to publish an app for public install; it supports the authorization code grant, refresh tokens, and PKCE. A v4 API key, sent in the X-Kit-Api-Key header, is for a developer automating their own account. Some endpoints, such as parts of bulk and purchase creation, require OAuth and reject an API key.
Permissions
OAuth currently carries two coarse scopes, read and write. Read covers every list and get method; write covers anything that creates, updates, tags, subscribes, or deletes. There is no per-resource scope yet, so a write token can change every area of the account; Kit states finer-grained scopes are coming soon. A v4 API key is not scoped at all and acts with the account's own access.
Rate limits
Kit applies a rolling 60-second request quota per credential: 600 requests per minute with OAuth, and 120 per minute with a v4 API key. Going over returns a 429, and the guidance is to retry with exponential backoff. Bulk and async jobs run on a separate queue and return a 413 when too many are enqueued at once.
Data model
The v4 API is resource-oriented JSON at https://api.kit.com/v4, replacing the v3 API at api.convertkit.com. Core resources are subscribers, tags, sequences, forms, broadcasts, and custom fields, with most writes nesting under a parent, such as /v4/tags/{tag_id}/subscribers/{id}. All list endpoints use cursor-based paging, and event-push webhooks complement the REST methods.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Kit determines what it can reach. There are a few routes, each governed by the key or token behind it and whether that credential carries read or write access.

Ways to connect

REST API (v4)

The v4 REST API answers at https://api.kit.com/v4. It uses cursor-based paging and returns a consistent error shape, and it replaced the v3 API at api.convertkit.com.

Best forConnecting an app or AI agent to Kit.
Governed byThe key or OAuth token and whether it carries read or write access.
Docs ↗

MCP server (Model Context Protocol)

Kit runs a first-party MCP server at https://app.kit.com/mcp that lets an AI client read and act on a creator's account through OAuth, exposing 65+ tools across audience, content, and commerce. A separate developer-docs MCP at https://developers.kit.com/mcp answers questions about the API itself.

Best forConnecting an AI assistant to Kit with no code.
Governed byThe OAuth permissions approved when the account is connected.
Docs ↗

Webhooks

Webhooks deliver the chosen events to a receiver URL, so an app learns about a new subscriber, a tag change, or a purchase without polling.

Best forReceiving subscriber, purchase, and custom field events.
Governed byThe key or OAuth token used to register the webhook.
Docs ↗
Authentication

OAuth 2.0

OAuth 2.0 is the method for apps that act on behalf of other creators, and it is required to publish an app for public install. It supports the authorization code grant, refresh tokens, and PKCE for single-page and mobile apps. Today it carries two coarse scopes, read and write, with finer-grained scopes stated as coming soon. OAuth-authenticated calls also get the higher 600-per-minute rate limit.

TokenOAuth access token (Bearer)
Best forApps acting for other creators, and public App Store listing
Docs ↗

v4 API key

A v4 API key is sent in the X-Kit-Api-Key header and is meant for a developer automating their own account, not for a published app. It is limited to 120 requests per minute and cannot call the endpoints that require OAuth, such as some bulk and purchase-creation methods.

Tokenv4 API key (X-Kit-Api-Key header)
Best forAutomating a single personal account
Docs ↗
Capability map

What an AI agent can do in Kit.

The Kit API is split into areas an agent can act on, such as subscribers, tags, sequences, forms, and broadcasts. Each area has its own methods, and writing to any of them sends real email or changes a creator's audience.

Subscribers

6 endpoints

List and read subscribers, create or update one, read the tags on a subscriber, and unsubscribe a subscriber.

Writes here change a creator's real audience records.
View endpoints

Tags

6 endpoints

List and create tags, list the subscribers on a tag, and add or remove a tag on a subscriber by id or by email address.

Tagging often triggers automations, so a write here can start real email sends.
View endpoints

Sequences

3 endpoints

List sequences, list the subscribers in a sequence, and add a subscriber to a sequence.

Adding a subscriber to a sequence starts an automated email series for that person.
View endpoints

Forms

4 endpoints

List forms, list the subscribers on a form, and add a subscriber to a form by id or by email address.

Adding a subscriber to a form can subscribe a real person and fire its automations.
View endpoints

Broadcasts

3 endpoints

List, read, and create broadcasts, the one-off emails sent to a creator's list.

A broadcast sends real email to subscribers once it is published and scheduled.
View endpoints

Custom fields

2 endpoints

List and create the custom fields that store extra data against each subscriber.

Writes here change the shape of every subscriber record in the account.
View endpoints

Webhooks

3 endpoints

List the webhooks on an account, create a new one for chosen events, and delete a webhook.

Writes here change where Kit sends event data about subscribers and purchases.
View endpoints

Account

1 endpoint

Read the authenticated account, including its plan and primary email address.

Reads here expose account-level details about the creator.
View endpoints
Endpoint reference

Every Kit 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 and read subscribers, create or update one, read the tags on a subscriber, and unsubscribe a subscriber.6

OAuth scope read, or a v4 API key. v4 currently has two coarse scopes, read and write, and read covers every list and get method.

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

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key. Creating an already-existing subscriber updates the first name rather than failing.

Acts onsubscriber
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventsubscriber-activate
Rate limitStandard limits apply

OAuth scope write, or a v4 API key.

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

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key. This sets the subscriber's state to unsubscribed for the whole account.

Acts onsubscriber
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventsubscriber-unsubscribe
Rate limitStandard limits apply

Tags

List and create tags, list the subscribers on a tag, and add or remove a tag on a subscriber by id or by email address.6

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key.

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

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key. A tag is the most common trigger for an automation, so this can start a sequence of emails.

Acts ontag
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventtag-add
Rate limitStandard limits apply

OAuth scope write, or a v4 API key. The email address is sent in the request body, which avoids a separate lookup for the subscriber id.

Acts ontag
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventtag-add
Rate limitStandard limits apply

OAuth scope write, or a v4 API key.

Acts ontag
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventtag-remove
Rate limitStandard limits apply

Sequences

List sequences, list the subscribers in a sequence, and add a subscriber to a sequence.3

OAuth scope read, or a v4 API key. Kit calls these sequences in the API and courses in some webhook event names.

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

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key. This begins real email delivery on the sequence's schedule.

Acts onsequence
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventcourse-subscribe
Rate limitStandard limits apply

Forms

List forms, list the subscribers on a form, and add a subscriber to a form by id or by email address.4

OAuth scope read, or a v4 API key.

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

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key. Adding a subscriber to a form can fire that form's automations.

Acts onform
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventform-subscribe
Rate limitStandard limits apply

OAuth scope write, or a v4 API key. The email address is sent in the request body, which creates the subscriber if it does not already exist.

Acts onform
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventform-subscribe
Rate limitStandard limits apply

Broadcasts

List, read, and create broadcasts, the one-off emails sent to a creator's list.3

OAuth scope read, or a v4 API key.

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

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key. A broadcast created with a send or schedule time delivers real email to subscribers.

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

Custom fields

List and create the custom fields that store extra data against each subscriber.2

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key.

Acts oncustom field
Permission (capability)write
VersionAvailable since the API’s base version
Webhook eventfield-created
Rate limitStandard limits apply

Webhooks

List the webhooks on an account, create a new one for chosen events, and delete a webhook.3

OAuth scope read, or a v4 API key.

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

OAuth scope write, or a v4 API key. The chosen event and its target, such as a tag id or form id, are set in the request body.

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

OAuth scope write, or a v4 API key.

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

Account

Read the authenticated account, including its plan and primary email address.1

OAuth scope read, or a v4 API key. This is the simplest call to confirm a credential is valid.

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

Webhook events.

Kit can notify an app or AI agent when something happens in an account, instead of the app repeatedly asking. Kit posts the event payload to a webhook URL that has been registered for the chosen subscriber, purchase, or custom field events.

EventWhat it signalsTriggered by
subscriber.subscriber_activateFires when a subscriber becomes active, having confirmed their subscription./v4/subscribers
subscriber.subscriber_unsubscribeFires when a subscriber unsubscribes from the account./v4/subscribers/{id}/unsubscribe
subscriber.subscriber_bounceFires when email to a subscriber bounces.In-app only
subscriber.subscriber_complainFires when a subscriber marks an email as spam.In-app only
subscriber.form_subscribeFires when a subscriber is added to a chosen form, set by form_id when the webhook is created./v4/forms/{form_id}/subscribers/{id}
/v4/forms/{form_id}/subscribers
subscriber.course_subscribeFires when a subscriber is added to a chosen sequence, set by sequence_id when the webhook is created. Kit calls a sequence a course in this event./v4/sequences/{sequence_id}/subscribers/{id}
subscriber.course_completeFires when a subscriber completes a chosen sequence, set by sequence_id when the webhook is created.In-app only
subscriber.link_clickFires when a subscriber clicks a chosen tracked link, set by initiator_value when the webhook is created.In-app only
subscriber.product_purchaseFires when a subscriber purchases a chosen product, set by product_id when the webhook is created.In-app only
subscriber.tag_addFires when a chosen tag is added to a subscriber, set by tag_id when the webhook is created./v4/tags/{tag_id}/subscribers/{id}
/v4/tags/{tag_id}/subscribers
subscriber.tag_removeFires when a chosen tag is removed from a subscriber, set by tag_id when the webhook is created./v4/tags/{tag_id}/subscribers/{id}
purchase.purchase_createFires when a purchase is created on the account.In-app only
custom_field.field_createdFires when a custom field is created on the account./v4/custom_fields
custom_field.field_deletedFires when a custom field is deleted from the account.In-app only
custom_field.field_value_updatedFires when a chosen custom field's value changes on a subscriber, set by custom_field_id when the webhook is created.In-app only
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Kit limits how fast an app or AI agent can call, through a rolling per-minute request quota that depends on how the call is authenticated, and it returns a 429 when the quota is exceeded.

Request rate

Kit limits requests over a rolling 60-second window per credential. An OAuth-authenticated app gets up to 600 requests per minute; a v4 API key gets up to 120 per minute. Exceeding the window returns a 429, and the documented advice is to retry with exponential backoff until the window clears. Bulk and async operations run on a separate queue, and enqueuing too many at once returns a 413.

Pagination

All v4 list endpoints use cursor-based paging, not page numbers. A response carries a pagination object with has_previous_page, has_next_page, start_cursor, and end_cursor; the next page is fetched with the after parameter set to end_cursor, and the previous page with before set to start_cursor. The per_page parameter sets page size, defaulting to 500 and capped at 1000. A total count is returned only when include_total_count is set to true, which adds latency.

Request size

Requests and responses are JSON. The largest page is 1000 records, set with per_page. Bulk endpoints accept many records in one call and process them asynchronously off a queue rather than returning the full result inline.

Errors

Status codes & error handling.

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

StatusCodeMeaningWhat to do
401UnauthorizedAuthentication is missing or misconfigured: no credential was sent, the wrong method was used, or account access has lapsed.Send a valid v4 API key in the X-Kit-Api-Key header, or a valid OAuth Bearer token, and confirm the account is still active.
413Too many bulk requestsToo many bulk requests were enqueued at once. Kit processes bulk and async jobs on a queue and limits how many can be pending.Back off and retry, and avoid enqueuing many bulk jobs at the same time.
422Bad dataThe request was well-formed but a field contains bad data or a required field is missing.Read the errors array in the body, correct the named field, and resend.
429Rate limitedThe rolling per-minute request quota was exceeded: 600 per minute with OAuth, 120 per minute with a v4 API key.Slow down and retry with exponential backoff until the rolling 60-second window clears.
500Internal server errorThe server is overloaded or hit a bug.Retry after a short delay, and report it to Kit if it persists.
Versioning & freshness

Version history.

Kit numbers its API by major version in the path. The current version is v4, which replaced v3 with cursor-based paging and a single consistent error shape. The older v3 API still answers but is no longer the recommended target.

Version history

What changed, and when

Latest versionv4
v4Current version
v4 API on api.kit.com

v4 is the current major version, served at api.kit.com/v4. It replaced the v3 API at api.convertkit.com as part of the rename from ConvertKit to Kit. v4 switched all list endpoints to cursor-based paging, standardized errors to a single JSON object with an errors array of strings, and introduced OAuth 2.0 for apps alongside API keys sent in the X-Kit-Api-Key header. v4 API keys are not compatible with v3, so credentials have to be regenerated when migrating.

What changed
  • New host and path: api.kit.com/v4, replacing api.convertkit.com/v3
  • Pagination changed from page and offset to cursor-based, using before and after with start_cursor and end_cursor
  • Errors standardized to a JSON object with a single errors array of strings
  • OAuth 2.0 added for apps, alongside the X-Kit-Api-Key header for personal API keys
  • OAuth scopes read and write introduced, with finer-grained scopes stated as coming soon
v3
v3 API on api.convertkit.com (predecessor)

v3 is the predecessor API, served at api.convertkit.com under the ConvertKit name. It used page and offset pagination and varied error responses, and it authenticated with v3 API keys and secrets. v3 still answers but is no longer the recommended target, and its keys do not work against v4.

What changed
  • Served at api.convertkit.com/v3
  • Page and offset based pagination
  • Varied error response shapes across endpoints
  • Authenticated with a v3 API key and API secret

An integration on v3 moves to v4 by switching host and path and adopting cursor paging.

Kit API v4 upgrade notes ↗
Questions

Kit API, answered.

What is the difference between an API key and OAuth in Kit v4?+
A v4 API key is sent in the X-Kit-Api-Key header and is meant for a developer automating their own Kit account. OAuth 2.0 is for an app that acts on behalf of other creators and is required to publish an app for public install. OAuth also gets a higher rate limit, 600 requests per minute against 120 for an API key, and some endpoints, such as parts of bulk and purchase creation, require OAuth and reject an API key.
What OAuth scopes does Kit v4 support?+
Today there are two coarse scopes, read and write. Read covers every list and get method, and write covers anything that creates, updates, tags, subscribes, or deletes. There is no per-resource scope yet, so a write token can change any area of the account. Kit's documentation states that finer-grained access control through scopes is coming soon.
What are the rate limits?+
Kit limits requests over a rolling 60-second window per credential: up to 600 requests per minute with OAuth and up to 120 per minute with a v4 API key. Exceeding the window returns a 429, and the documented advice is to retry with exponential backoff until the window clears. Bulk and async jobs use a separate queue and return a 413 if too many are enqueued at once.
How does pagination work in v4?+
All v4 list endpoints use cursor-based paging rather than page numbers. Each response includes a pagination object with start_cursor and end_cursor and the flags has_previous_page and has_next_page. The next page is fetched with the after parameter set to end_cursor and the previous page with before set to start_cursor. The per_page parameter sets page size, defaulting to 500 and capped at 1000.
How do I receive events instead of polling?+
Webhooks deliver events to a receiver URL. A webhook is registered with POST /v4/webhooks for a chosen event, such as subscriber.subscriber_activate, subscriber.tag_add, subscriber.form_subscribe, subscriber.course_subscribe, or purchase.purchase_create. Some events take a target, like a tag_id, form_id, or sequence_id, so the webhook fires only for that tag, form, or sequence. Kit then posts the event payload when it fires, which avoids polling the list endpoints.
Does Kit have an official MCP server for AI tools?+
Yes. Kit runs a first-party MCP server at app.kit.com/mcp that lets an AI client, such as Claude or ChatGPT, read and act on a creator's account after an OAuth sign-in, exposing more than 65 tools across audience, content, and commerce. A separate developer-docs MCP at developers.kit.com/mcp answers questions about the API itself and can make live calls in supported clients.
How is v4 different from the older v3 API?+
v4 moves the host and path from api.convertkit.com/v3 to api.kit.com/v4, replaces page and offset paging with cursor-based paging, and returns one consistent error shape, a JSON object with an errors array of strings. v4 also adds OAuth for apps alongside API keys. v4 API keys are not compatible with v3, so a credential has to be regenerated when moving over.
Related

More marketing API guides for agents

What is Bollard AI?

Control what every AI agent can do in Kit.

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

  • Set read, write, or full access per agent, never a shared Kit 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.
Kit
Newsletter Agent
Read subscribers ResourceOffReadFull use
Tag subscribers ActionOffReadFull use
Send broadcasts ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Kit