Kit

Kit Posts API

The Posts API from Kit — 2 operation(s) for posts.

OpenAPI Specification

convertkit-posts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Kit Accounts Posts API
  version: '4.0'
servers:
- url: https://api.kit.com
tags:
- name: Posts
paths:
  /v4/posts:
    get:
      summary: List posts
      tags:
      - Posts
      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_content
        in: query
        required: false
        schema:
          type: boolean
        example: false
        description: To include the `content` field on each post in the response, use `true`. Omitted by default because it significantly increases response size and latency for large collections.
      - 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 posts for your account
          content:
            application/json:
              schema:
                type: object
                properties:
                  posts:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        publication_id:
                          type: integer
                          description: Identifier of the underlying publication. Posts that were also sent as broadcasts share the same `publication_id` — use it to match a post to its broadcast via `GET /v4/broadcasts`.
                        created_at:
                          type: string
                        title:
                          type: string
                        slug:
                          type: string
                          nullable: true
                        description:
                          nullable: true
                        meta_description:
                          nullable: true
                        status:
                          type: string
                        published_at:
                          type: string
                          nullable: true
                        sent_at:
                          type: string
                          nullable: true
                        thumbnail_alt:
                          nullable: true
                        thumbnail_url:
                          nullable: true
                        is_paid:
                          type: boolean
                        public_url:
                          type: string
                          nullable: true
                      required:
                      - id
                      - publication_id
                      - created_at
                      - title
                      - slug
                      - description
                      - meta_description
                      - status
                      - published_at
                      - sent_at
                      - thumbnail_alt
                      - thumbnail_url
                      - is_paid
                      - public_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:
                - posts
                - pagination
              example:
                posts:
                - id: 3
                  publication_id: 127
                  created_at: '2026-06-11T16:15:02Z'
                  title: Draft Post
                  slug: null
                  description: null
                  meta_description: null
                  status: draft
                  published_at: null
                  sent_at: null
                  thumbnail_alt: null
                  thumbnail_url: null
                  is_paid: false
                  public_url: null
                - id: 2
                  publication_id: 126
                  created_at: '2026-06-11T16:15:02Z'
                  title: Email and Web Post
                  slug: email-and-web-post
                  description: null
                  meta_description: null
                  status: published
                  published_at: '2026-06-09T16:15:02Z'
                  sent_at: '2026-06-11T16:15:02Z'
                  thumbnail_alt: null
                  thumbnail_url: null
                  is_paid: false
                  public_url: https://asdf.kit.com/posts/email-and-web-post
                - id: 1
                  publication_id: 125
                  created_at: '2026-06-11T16:15:02Z'
                  title: Web Only Post
                  slug: web-only-post
                  description: null
                  meta_description: null
                  status: published
                  published_at: '2026-06-10T16:15:02Z'
                  sent_at: null
                  thumbnail_alt: null
                  thumbnail_url: null
                  is_paid: false
                  public_url: https://asdf.kit.com/posts/web-only-post
                pagination:
                  has_previous_page: false
                  has_next_page: false
                  start_cursor: WzNd
                  end_cursor: WzFd
                  per_page: 500
      x-mcp:
        enabled: true
  /v4/posts/{id}:
    get:
      summary: Get a post
      tags:
      - Posts
      security:
      - API Key: []
      - OAuth2: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        example: 29
      responses:
        '200':
          description: Returns the post details
          content:
            application/json:
              schema:
                type: object
                properties:
                  post:
                    type: object
                    properties:
                      id:
                        type: integer
                      publication_id:
                        type: integer
                        description: Identifier of the underlying publication. Posts that were also sent as broadcasts share the same `publication_id` — use it to match a post to its broadcast via `GET /v4/broadcasts`.
                      created_at:
                        type: string
                      title:
                        type: string
                      slug:
                        type: string
                      description:
                        nullable: true
                      meta_description:
                        nullable: true
                      status:
                        type: string
                      published_at:
                        type: string
                      sent_at:
                        nullable: true
                      thumbnail_alt:
                        nullable: true
                      thumbnail_url:
                        nullable: true
                      is_paid:
                        type: boolean
                      public_url:
                        type: string
                      content:
                        type: string
                    required:
                    - id
                    - publication_id
                    - created_at
                    - title
                    - slug
                    - description
                    - meta_description
                    - status
                    - published_at
                    - sent_at
                    - thumbnail_alt
                    - thumbnail_url
                    - is_paid
                    - public_url
                    - content
                required:
                - post
              example:
                post:
                  id: 25
                  publication_id: 149
                  created_at: '2026-06-11T16:15:07Z'
                  title: My Newsletter Post
                  slug: my-newsletter-post
                  description: null
                  meta_description: null
                  status: published
                  published_at: '2026-06-10T16:15:07Z'
                  sent_at: null
                  thumbnail_alt: null
                  thumbnail_url: null
                  is_paid: false
                  public_url: https://asdf.kit.com/posts/my-newsletter-post
                  content: '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

                    <!-- -->

                    '
        '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
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