Kit Sequences API
The Sequences API from Kit — 4 operation(s) for sequences.
Documentation
Documentation
https://developers.kit.com/docs
Authentication
https://developers.kit.com/api-reference/authentication
The Sequences API from Kit — 4 operation(s) for sequences.
openapi: 3.0.3
info:
title: Kit Accounts Sequences API
version: '4.0'
servers:
- url: https://api.kit.com
tags:
- name: Sequences
paths:
/v4/sequences:
get:
summary: List sequences
description: 'Returns every sequence on the account. A sequence is a self-contained set of automated emails — subscribers join, then receive each email in order, governed by per-email `delay_value` / `delay_unit` and the sequence''s overall `send_days`, `send_hour`, and `time_zone` schedule.
Each entry carries the schedule defaults plus three behavioural toggles: `active` (whether the sequence is delivering), `repeat` (whether subscribers can re-enter), and `hold` (whether subscribers stay active after receiving every published email — an evergreen pattern). See [Create a sequence](/api-reference/sequences/create-a-sequence) for the full sequence model.
Once you have a sequence''s `id`, [List sequence emails](/api-reference/sequence-emails/list-sequence-emails) returns the individual emails inside it.
For end-user context on how creators build sequences, see the help articles on [creating and sending a sequence](https://help.kit.com/en/articles/2502629-creating-and-sending-a-sequence-in-kit) and [evergreen content](https://help.kit.com/en/articles/2502575-what-is-evergreen-content).'
tags:
- Sequences
security:
- API Key: []
- OAuth2: []
parameters:
- name: after
description: To fetch next page of results, use `?after=<end_cursor>`
in: query
required: false
schema:
nullable: true
- name: before
description: To fetch previous page of results, use `?before=<start_cursor>`
in: query
required: false
schema:
nullable: true
- 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:
nullable: true
responses:
'200':
description: Returns a paginated list of all sequences for your account
content:
application/json:
schema:
type: object
properties:
sequences:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
hold:
type: boolean
repeat:
type: boolean
created_at:
type: string
updated_at:
type: string
email_address:
nullable: true
email_template_id:
nullable: true
send_days:
type: array
items:
type: string
send_hour:
type: integer
time_zone:
type: string
active:
type: boolean
exclude_subscriber_sources:
type: array
items: {}
email_count:
type: integer
subscriber_count:
type: integer
required:
- id
- name
- hold
- repeat
- created_at
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:
- sequences
- pagination
example:
sequences:
- id: 1
name: Evergreen sequence
hold: false
repeat: false
created_at: '2023-02-17T11:43:55Z'
updated_at: '2023-02-17T11:43:55Z'
email_address: null
email_template_id: null
email_count: 0
subscriber_count: 0
send_days:
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
send_hour: 11
time_zone: America/New_York
active: true
exclude_subscriber_sources: []
pagination:
has_previous_page: false
has_next_page: false
start_cursor: WzFd
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
post:
summary: Create a sequence
description: 'Creates an empty sequence — the container that holds sequence emails. After creating the shell, use [Create a sequence email](/api-reference/sequence-emails/create-a-sequence-email) to populate it.
Only `name` is required. Every other field has a sensible default: Kit fills in the account''s default sending address, a daily send schedule, and the account time zone — and any of these can be tuned later via [Update a sequence](/api-reference/sequences/update-a-sequence).
Two behavioural toggles worth flagging up front. `repeat` controls whether a subscriber can re-enter the sequence: by default a subscriber receives the emails once and is marked complete, but with `repeat: true`, re-adding the same subscriber via a Visual Automation, Rule, Bulk Action, or Import resets their position to the start. Filters and exclusions still apply across restarts. `hold` (evergreen) keeps subscribers active in the sequence after they''ve received every published email — useful when you plan to add more emails later. Without `hold`, subscribers transition to Completed and won''t pick up future additions.
`exclude_subscriber_sources` lets you exclude subscribers acquired via specific tags, sequences, forms, or segments — they''ll skip this sequence entirely.
For end-user context, see the help articles on [creating and sending a sequence](https://help.kit.com/en/articles/2502629-creating-and-sending-a-sequence-in-kit), [restarting a sequence](https://help.kit.com/en/articles/5022528-restart-a-sequence), and [holding subscribers in evergreen sequences](https://help.kit.com/en/articles/5192801-how-to-hold-subscribers-in-evergreen-sequences).'
tags:
- Sequences
security:
- API Key: []
- OAuth2: []
parameters: []
responses:
'201':
description: Creates a new sequence
content:
application/json:
schema:
type: object
properties:
sequence:
type: object
properties:
id:
type: integer
name:
type: string
hold:
type: boolean
repeat:
type: boolean
created_at:
type: string
updated_at:
type: string
email_address:
type: string
email_template_id:
type: integer
send_days:
type: array
items:
type: string
send_hour:
type: integer
time_zone:
type: string
active:
type: boolean
exclude_subscriber_sources:
type: array
items:
type: object
properties:
type:
type: string
ids:
type: array
items:
type: integer
required:
- type
- ids
email_count:
type: integer
subscriber_count:
type: integer
required:
- id
- name
- hold
- repeat
- created_at
- updated_at
- email_address
- email_template_id
- send_days
- send_hour
- time_zone
- active
- exclude_subscriber_sources
required:
- sequence
example:
sequence:
id: 30
name: Full Series
hold: true
repeat: true
created_at: '2026-06-11T16:15:56Z'
updated_at: '2026-06-11T16:15:56Z'
email_address: joe1010@ck.lol
email_template_id: 38
send_days:
- monday
- wednesday
- friday
send_hour: 9
time_zone: America/Los_Angeles
active: true
exclude_subscriber_sources:
- type: sequence
ids:
- 29
- type: tag
ids:
- 2
email_count: 0
subscriber_count: 0
'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
'403':
description: Returns a 403 with an error message if the current account is unauthorized to create a sequence
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- You do not have sufficient permissions to access this resource. Please contact support.
'422':
description: Returns a 422 with an error message when one or more of the parameters were invalid
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- send_hour must be an integer between 0 and 23
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The name of the sequence.
email_address:
type: string
description: The sending email address to use. Uses the account's sending email address if not provided.
email_template_id:
type: integer
description: Id of the email template to use.
send_days:
type: array
items:
type: string
description: 'The days of the week to send the sequence on. Must be one of: `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`, `sunday`.'
send_hour:
type: integer
description: The hour of the day to send the sequence at. Must be an integer between 0 and 23.
time_zone:
type: string
description: The timezone to use for the sequence. Must be a valid IANA timezone string.
active:
type: boolean
description: '`true` to activate the sequence, `false` to deactivate it.'
repeat:
type: boolean
description: When `true`, subscribers can restart the sequence multiple times.
hold:
type: boolean
description: When `true`, subscribers added via Visual Automations stay in the sequence after receiving the last email.
exclude_subscriber_sources:
type: array
description: The subscriber sources to exclude from the sequence.
items:
type: object
properties:
type:
type: string
description: 'The type of subscriber source to exclude. Must be one of: `tag`, `sequence`, `form`, `segment`.'
ids:
type: array
items:
type: integer
description: The ids of the subscriber sources to exclude.
required:
- type
- ids
example:
name: Full Series
email_address: joe1010@ck.lol
email_template_id: 38
send_days:
- monday
- wednesday
- friday
send_hour: 9
time_zone: America/Los_Angeles
active: true
repeat: true
hold: true
exclude_subscriber_sources:
- type: tag
ids:
- 2
- type: sequence
ids:
- 29
x-mcp:
enabled: true
/v4/sequences/{id}:
delete:
summary: Delete a sequence
description: 'Soft-deletes a sequence. The sequence is removed from active delivery immediately, with cleanup of associated state happening in the background.
**Warning:** deleting a sequence with active subscribers stops deliveries to those subscribers — they will not receive remaining emails, and any Visual Automations referencing the sequence will need to be updated. Confirm the sequence is not in active use before deleting.
If you want to pause rather than delete, use [Update a sequence](/api-reference/sequences/update-a-sequence) with `active: false` instead.'
tags:
- Sequences
security:
- API Key: []
- OAuth2: []
parameters:
- name: id
in: path
required: true
schema:
type: integer
example: 81
responses:
'204':
description: Deletes the sequence
'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
x-mcp:
enabled: true
get:
summary: Get a sequence
description: 'Fetches a single sequence by `id`. Use this when you need the current schedule, the `active` / `repeat` / `hold` flags, the configured `email_address` and `email_template_id`, or `exclude_subscriber_sources` for a known sequence — for example, to confirm settings before adding subscribers or to render an editor.
For the individual emails inside the sequence, use [List sequence emails](/api-reference/sequence-emails/list-sequence-emails). For the sequence model and field semantics, see [Create a sequence](/api-reference/sequences/create-a-sequence).'
tags:
- Sequences
security:
- API Key: []
- OAuth2: []
parameters:
- name: id
in: path
required: true
schema:
type: integer
example: 23
responses:
'200':
description: Returns the sequence details
content:
application/json:
schema:
type: object
properties:
sequence:
type: object
properties:
id:
type: integer
name:
type: string
hold:
type: boolean
repeat:
type: boolean
created_at:
type: string
updated_at:
type: string
email_address:
nullable: true
email_template_id:
nullable: true
send_days:
type: array
items:
type: string
send_hour:
type: integer
time_zone:
type: string
active:
type: boolean
exclude_subscriber_sources:
type: array
items: {}
email_count:
type: integer
subscriber_count:
type: integer
required:
- id
- name
- hold
- repeat
- created_at
- updated_at
- email_address
- email_template_id
- send_days
- send_hour
- time_zone
- active
- exclude_subscriber_sources
required:
- sequence
example:
sequence:
id: 22
name: Welcome sequence
hold: false
repeat: false
created_at: '2023-02-17T11:43:55Z'
updated_at: '2023-02-17T11:43:55Z'
email_address: null
email_template_id: null
send_days:
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
send_hour: 11
time_zone: America/New_York
active: true
exclude_subscriber_sources: []
email_count: 0
subscriber_count: 0
'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
x-mcp:
enabled: true
put:
summary: Update a sequence
description: 'Updates any sequence settings — `name`, `email_address`, schedule (`send_days`, `send_hour`, `time_zone`), `email_template_id`, `exclude_subscriber_sources`, or the `active` / `repeat` / `hold` flags. Only fields included in the request body change; everything else is preserved.
Some changes have user-visible side effects on subscribers already in the sequence:
**Note:** flipping `active` from `false` to `true` resumes delivery for queued subscribers. Flipping it back to `false` pauses the sequence — subscribers stay in their current position but no new emails are sent until it''s reactivated.
**Note:** changing the schedule (`send_days`, `send_hour`, or `time_zone`) only affects future sends. It does not retroactively reschedule emails already queued for delivery.
**Warning:** turning off `repeat` while subscribers are mid-sequence does not stop them from finishing — but they won''t be re-eligible to start over after completing.
See [Create a sequence](/api-reference/sequences/create-a-sequence) for the full sequence model and what each field controls.'
tags:
- Sequences
security:
- API Key: []
- OAuth2: []
parameters:
- name: id
in: path
required: true
schema:
type: integer
example: 60
responses:
'200':
description: Updates the sequence and returns its details
content:
application/json:
schema:
type: object
properties:
sequence:
type: object
properties:
id:
type: integer
name:
type: string
hold:
type: boolean
repeat:
type: boolean
created_at:
type: string
updated_at:
type: string
email_address:
type: string
email_template_id:
type: integer
send_days:
type: array
items:
type: string
send_hour:
type: integer
time_zone:
type: string
active:
type: boolean
exclude_subscriber_sources:
type: array
items:
type: object
properties:
type:
type: string
ids:
type: array
items:
type: integer
required:
- type
- ids
email_count:
type: integer
subscriber_count:
type: integer
required:
- id
- name
- hold
- repeat
- created_at
- updated_at
- email_address
- email_template_id
- send_days
- send_hour
- time_zone
- active
- exclude_subscriber_sources
required:
- sequence
example:
sequence:
id: 49
name: New Name
hold: true
repeat: true
created_at: '2026-06-11T16:16:00Z'
updated_at: '2026-06-11T16:16:00Z'
email_address: joe1040@ck.lol
email_template_id: 40
send_days:
- tuesday
- thursday
send_hour: 14
time_zone: America/Chicago
active: false
exclude_subscriber_sources:
- type: sequence
ids:
- 48
- type: tag
ids:
- 3
email_count: 0
subscriber_count: 0
'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 with an error message when one or more of the parameters were invalid
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: string
required:
- errors
example:
errors:
- name can't be blank
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The name of the sequence.
email_address:
type: string
description: The sending email address to use. Uses the account's sending email address if not provided.
email_template_id:
type: integer
description: Id of the email template to use.
send_days:
type: array
items:
type: string
description: 'The days of the week to send the sequence on. Must be one of: `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`, `sunday`.'
send_hour:
type: integer
description: The hour of the day to send the sequence at. Must be an integer between 0 and 23.
time_zone:
type: string
description: The timezone to use for the sequence. Must be a valid IANA timezone string.
active:
type: boolean
description: '`true` to activate the sequence, `false` to deactivate it.'
repeat:
type: boolean
description: When `true`, subscribers can restart the sequence multiple times.
hold:
type: boolean
description: When `true`, subscribers added via Visual Automations stay in the sequence after receiving the last email.
exclude_subscriber_sources:
type: array
description: The subscriber sources to exclude from the sequence.
items:
type: object
properties:
type:
type: string
description: 'The type of subscriber source to exclude. Must be one of: `tag`, `sequence`, `form`, `segment`.'
ids:
type: array
items:
type: integer
description: The ids of the subscriber sources to exclude.
required:
- type
- ids
example:
name: New Name
email_address: joe1040@ck.lol
email_template_id: 40
send_days:
- tuesday
- thursday
send_hour: 14
time_zone: America/Chicago
active: false
repeat: true
hold: true
exclude_subscriber_sources:
- type: tag
ids:
- 3
- type: sequence
ids:
- 48
x-mcp:
enabled: true
/v4/sequences/{sequence_id}/subscribers:
get:
summary: List subscribers for a sequence
tags:
- Sequences
security:
- API Key: []
- OAuth2: []
parameters:
- name: added_after
description: Filter subscribers who have been added to the form after this date (format yyyy-mm-dd)
in: query
required: false
schema:
nullable: true
type: string
example: '2023-02-14T11:43:55Z'
- name: added_before
description: Filter subscribers who have been added to the form before this date (format yyyy-mm-dd)
in: query
required: false
schema:
nullable: true
type: string
example: '2023-02-18T11:43:55Z'
# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/convertkit/refs/heads/main/openapi/convertkit-sequences-api-openapi.yml