> ## Documentation Index
> Fetch the complete documentation index at: https://developers.kit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a sequence email

> Adds a single email to a sequence. Each sequence email represents one step subscribers receive on their journey through the sequence — its `position` determines order, and `delay_value` / `delay_unit` / `send_days` determine when it fires relative to either the previous email or the subscriber's entry.

`subject`, `delay_value`, and `delay_unit` are required. **Day-based** emails (`delay_unit: "days"`) follow the parent sequence's `send_days` and `send_hour`; their per-email `send_days` (e.g. `["monday", "wednesday"]`) overrides the sequence schedule for that one email. **Hour-based** emails (`delay_unit: "hours"`) ignore the sequence schedule and fire once the delay elapses — Kit checks for hour-delayed sends every 15 minutes — and always return `send_days` as `null`.

New emails are created in draft (`published: false`) so they don't go out until you flip the flag. `position` is auto-assigned to the end of the sequence if omitted. `content` accepts HTML and can embed snippets with `{{ snippet.<key> }}` — see [Create a snippet](/api-reference/snippets/create-a-snippet) — which Kit resolves at send time, so editing a snippet later updates every email referencing it without a re-publish.

**Note:** only the first email in a sequence can be an immediate send (`delay_value: 0` with `delay_unit: "days"`). Subsequent emails need a positive delay.

**Warning:** publishing an immediate first email, or inserting a new email at a `position` earlier than where existing subscribers sit, processes those subscribers and triggers a send right away. Plan around active sequences carefully.

For end-user context on how creators build sequences in the Kit UI, see the help article on [creating and sending a sequence](https://help.kit.com/en/articles/2502629-creating-and-sending-a-sequence-in-kit).



## OpenAPI

````yaml /api-reference/v4.json post /v4/sequences/{sequence_id}/emails
openapi: 3.0.3
info:
  title: Kit API
  version: '4.0'
servers:
  - url: https://api.kit.com
security: []
paths:
  /v4/sequences/{sequence_id}/emails:
    post:
      tags:
        - Sequence Emails
      summary: Create a sequence email
      description: >-
        Adds a single email to a sequence. Each sequence email represents one
        step subscribers receive on their journey through the sequence — its
        `position` determines order, and `delay_value` / `delay_unit` /
        `send_days` determine when it fires relative to either the previous
        email or the subscriber's entry.


        `subject`, `delay_value`, and `delay_unit` are required. **Day-based**
        emails (`delay_unit: "days"`) follow the parent sequence's `send_days`
        and `send_hour`; their per-email `send_days` (e.g. `["monday",
        "wednesday"]`) overrides the sequence schedule for that one email.
        **Hour-based** emails (`delay_unit: "hours"`) ignore the sequence
        schedule and fire once the delay elapses — Kit checks for hour-delayed
        sends every 15 minutes — and always return `send_days` as `null`.


        New emails are created in draft (`published: false`) so they don't go
        out until you flip the flag. `position` is auto-assigned to the end of
        the sequence if omitted. `content` accepts HTML and can embed snippets
        with `{{ snippet.<key> }}` — see [Create a
        snippet](/api-reference/snippets/create-a-snippet) — which Kit resolves
        at send time, so editing a snippet later updates every email referencing
        it without a re-publish.


        **Note:** only the first email in a sequence can be an immediate send
        (`delay_value: 0` with `delay_unit: "days"`). Subsequent emails need a
        positive delay.


        **Warning:** publishing an immediate first email, or inserting a new
        email at a `position` earlier than where existing subscribers sit,
        processes those subscribers and triggers a send right away. Plan around
        active sequences carefully.


        For end-user context on how creators build sequences in the Kit UI, see
        the help article on [creating and sending a
        sequence](https://help.kit.com/en/articles/2502629-creating-and-sending-a-sequence-in-kit).
      parameters:
        - name: sequence_id
          in: path
          required: true
          schema:
            type: integer
          example: 154
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - subject
                - delay_value
                - delay_unit
              properties:
                subject:
                  type: string
                  description: Subject line of the email
                preview_text:
                  type: string
                  nullable: true
                  description: >-
                    Preview text shown in email clients before the email is
                    opened
                content:
                  type: string
                  nullable: true
                  description: HTML body content of the email
                delay_value:
                  type: integer
                  description: >-
                    Number of days or hours to wait before sending this email
                    after the previous one
                delay_unit:
                  type: string
                  enum:
                    - days
                    - hours
                  description: >-
                    Unit for the send delay. Use `days` for schedule-aware
                    delivery, `hours` for a fixed hourly delay
                email_template_id:
                  type: integer
                  nullable: true
                  description: ID of the email template to use for layout and styling
                published:
                  type: boolean
                  description: >-
                    Whether the email is active and will be sent to subscribers.
                    Defaults to `false` (draft)
                send_days:
                  type: array
                  nullable: true
                  items:
                    type: string
                  description: >-
                    Days of the week this email may be sent. Defaults to all 7
                    days (inherits the sequence schedule). Pass a subset to
                    restrict delivery, or `null` to reset to all days
                position:
                  type: integer
                  nullable: true
                  description: >-
                    Zero-based position of the email in the sequence. Assigned
                    automatically after the last email if omitted
            example:
              subject: Welcome to the sequence
              delay_value: 1
              delay_unit: days
              preview_text: null
              content: null
              email_template_id: null
              published: null
              send_days: null
              position: null
      responses:
        '201':
          description: Creates a new sequence email
          content:
            application/json:
              schema:
                type: object
                properties:
                  email:
                    type: object
                    properties:
                      id:
                        type: integer
                      sequence_id:
                        type: integer
                      subject:
                        type: string
                      preview_text:
                        nullable: true
                      email_address:
                        type: string
                      email_template_id:
                        nullable: true
                      published:
                        type: boolean
                      position:
                        nullable: true
                      delay_value:
                        type: integer
                      delay_unit:
                        type: string
                      send_days:
                        type: array
                        items:
                          type: string
                      content:
                        nullable: true
                    required:
                      - id
                      - sequence_id
                      - subject
                      - preview_text
                      - email_address
                      - email_template_id
                      - published
                      - position
                      - delay_value
                      - delay_unit
                      - send_days
                      - content
                required:
                  - email
              example:
                email:
                  id: 35
                  sequence_id: 153
                  subject: Welcome to the sequence
                  preview_text: null
                  email_address: joe2493@ck.lol
                  email_template_id: null
                  published: false
                  position: null
                  delay_value: 1
                  delay_unit: days
                  send_days:
                    - monday
                    - tuesday
                    - wednesday
                    - thursday
                    - friday
                    - saturday
                    - sunday
                  content: null
        '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:
                  - subject can't be blank
      security:
        - API Key: []
        - OAuth2: []
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

````