Kit Webhooks API
The Webhooks API from Kit — 2 operation(s) for webhooks.
Operations 3
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
The Webhooks API from Kit — 2 operation(s) for webhooks.
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/convertkit:convertkit-webhooks-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Kit Webhooks API
version: '4.0'
servers:
- url: https://api.kit.com
tags:
- name: Webhooks
paths:
/v4/webhooks:
get:
summary: List webhooks
description: 'Webhooks are automations that will receive subscriber data when a subscriber event is triggered, such as when a subscriber completes a sequence.
When a webhook is triggered, a `POST` request will be made to your URL with a JSON payload.'
tags:
- Webhooks
security:
- API Key: []
- OAuth2: []
parameters:
- name: after
description: To fetch next page of results, use `?after=<end_cursor>`
in: query
required: false
schema: {}
- name: before
description: To fetch previous page of results, use `?before=<start_cursor>`
in: query
required: false
schema: {}
- name: include_total_count
description: Set to `true` to include the `total_count` in the response. This option can cause slow responses; if paging through results, request it only on the first page and reuse the value for subsequent pages.
in: query
required: false
schema:
type: boolean
example: false
- name: per_page
description: Number of results per page. Default 500, maximum 1000.
in: query
required: false
schema: {}
responses:
'200':
description: Returns a paginated list of webhooks
content:
application/json:
schema:
type: object
properties:
webhooks:
type: array
items:
type: object
properties:
id:
type: integer
account_id:
type: integer
event:
type: object
properties:
name:
type: string
description: Product name
tag_id:
type:
- integer
- 'null'
form_id:
type:
- integer
- 'null'
required:
- name
target_url:
type: string
required:
- id
- account_id
- event
- target_url
pagination:
type: object
properties:
has_previous_page:
type: boolean
has_next_page:
type: boolean
start_cursor:
type: string
end_cursor:
type: string
per_page:
type: integer
required:
- has_previous_page
- has_next_page
- start_cursor
- end_cursor
- per_page
required:
- webhooks
- pagination
example:
webhooks:
- id: 2
account_id: 1617
event:
name: tag_add
tag_id: 44
target_url: http://example.convertkit.dev/tags
- id: 1
account_id: 1617
event:
name: form_subscribe
form_id: 10
target_url: http://example.convertkit.dev/
pagination:
has_previous_page: false
has_next_page: false
start_cursor: WzJd
end_cursor: WzFd
per_page: 500
'401':
description: Returns a 401 if the token and/or account cannot be authenticated
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- The access token is invalid
x-mcp:
enabled: true
operationId: getV4Webhooks
x-operation-id-source: derived
post:
summary: Create a webhook
description: 'Available event types:
- `subscriber.subscriber_activate`
- `subscriber.subscriber_unsubscribe`
- `subscriber.subscriber_bounce`
- `subscriber.subscriber_complain`
- `subscriber.form_subscribe`, required parameter `form_id` [Integer]
- `subscriber.course_subscribe`, required parameter `sequence_id` [Integer]
- `subscriber.course_complete`, required parameter `sequence_id` [Integer]
- `subscriber.link_click`, required parameter `initiator_value` [String] as a link URL
- `subscriber.product_purchase`, required parameter `product_id` [Integer]
- `subscriber.tag_add`, required parameter `tag_id` [Integer]
- `subscriber.tag_remove`, required parameter `tag_id` [Integer]
- `purchase.purchase_create`
- `custom_field.field_created`
- `custom_field.field_deleted`
- `custom_field.field_value_updated`, required parameter `custom_field_id` [Integer]'
tags:
- Webhooks
security:
- API Key: []
- OAuth2: []
parameters: []
responses:
'201':
description: Creates the webhook
content:
application/json:
schema:
type: object
properties:
webhook:
type: object
properties:
id:
type: integer
account_id:
type: integer
event:
type: object
properties:
name:
type: string
description: Product name
initiator_value: {}
required:
- name
- initiator_value
target_url:
type: string
required:
- id
- account_id
- event
- target_url
required:
- webhook
example:
webhook:
id: 9
account_id: 1643
event:
name: subscriber_activate
initiator_value: null
target_url: https://example.convertkit.dev/
'401':
description: Returns a 401 if the token and/or account cannot be authenticated
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- The access token is invalid
'422':
description: Returns an error when missing required params
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- '`event` and `target` parameters must be provided'
requestBody:
content:
application/json:
schema:
type: object
properties:
target_url:
type: string
event:
type: object
properties:
name:
type: string
form_id: {}
tag_id: {}
sequence_id: {}
product_id: {}
initiator_value: {}
custom_field_id: {}
required:
- name
- form_id
- tag_id
- sequence_id
- product_id
- initiator_value
required:
- target_url
- event
example:
target_url: https://example.convertkit.dev/
event:
name: subscriber.subscriber_activate
form_id: null
tag_id: null
sequence_id: null
product_id: null
initiator_value: null
custom_field_id: null
x-mcp:
enabled: true
operationId: postV4Webhooks
x-operation-id-source: derived
/v4/webhooks/{id}:
delete:
summary: Delete a webhook
tags:
- Webhooks
security:
- API Key: []
- OAuth2: []
parameters:
- name: id
in: path
required: true
schema:
type: integer
example: 31
responses:
'204':
description: Deletes the webhook
'401':
description: Returns a 401 if the token and/or account cannot be authenticated
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- The access token is invalid
'404':
description: Returns a 404 when the provided id does not exist
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- Not Found
'422':
description: Returns a 422 when the webhook cannot be deleted
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- Unable to destroy the webhook.
x-mcp:
enabled: true
operationId: deleteV4WebhooksById
x-operation-id-source: derived
components:
securitySchemes:
API_Key:
description: Authenticate API requests via an API Key
type: apiKey
in: header
name: X-Kit-Api-Key
OAuth2:
description: Authenticate API requests via an OAuth token
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://api.kit.com/v4/oauth/authorize
tokenUrl: https://api.kit.com/v4/oauth/token
refreshUrl: https://api.kit.com/v4/oauth/token
scopes:
read: Read access to Kit API v4
write: Write access to Kit API v4
x-mint:
mcp:
enabled: true