Skip to main content

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.

May 26 2026 — Authentication
Authentication

🔧 POST /oauth/revoke now performs full partner-side cleanup

When a partner revokes a Kit-issued OAuth token, Kit now tears down the linked install state in the same request:
  • Any partner credentials Kit had stored for that account are queued for deletion.
  • The Kit-side installation record is marked uninstalled, so the app no longer appears as installed for that account.
Previously, revoking a token only invalidated the access grant — installation state and stored credentials lingered until the next sync. App developers who treat /oauth/revoke as a clean teardown signal can now rely on it as a single call.The HTTP contract of /oauth/revoke is unchanged; both the request and the success response remain identical.Full reference: OAuth token revocation
May 26 2026 — Broadcasts
API

🚀 Broadcast status field and ?status= filter on broadcast list endpoints

Every V4 broadcast response now includes a status field with one of draft, scheduled, sending, completed, or aborted. This removes the need to infer broadcast state from a mix of send_at, published_at, and other fields.GET /v4/broadcasts and GET /v4/broadcasts/stats also accept a new optional ?status= query parameter that filters to broadcasts in the given lifecycle state. Passing an unknown value returns 422 Unprocessable Entity with the list of accepted statuses. Omitting status preserves existing behaviour.Full reference: List broadcasts · Get stats for a list of broadcasts
May 21 2026 — Subscribers
API

🚀 slim query parameter on /v4/subscribers and /v4/forms/:form_id/subscribers

Two more list endpoints now accept ?slim=true, extending the slim mode introduced for GET /v4/broadcasts and GET /v4/tags/:tag_id/subscribers on May 20. In slim mode, the fields object (custom field values) is omitted from each subscriber record and the underlying query skips the custom field join entirely, making large list responses noticeably faster.Default behaviour is unchanged — pass slim=true explicitly to opt in. On /v4/subscribers, slim composes with the existing include= parameter — the requested includes still resolve, slim only skips the fields block. /v4/forms/:form_id/subscribers doesn’t accept include=.Full reference: List subscribers · List subscribers for a form
May 21 2026 — Filters
API

🚀 New subscriber_state filter on /v4/subscribers/filter

POST /v4/subscribers/filter accepts a new filter type: subscriber_state. Provide a states array of one or more lifecycle values — active, inactive, bounced, cancelled, or complained — and the filter returns subscribers whose current state matches any value in the array.subscriber_state composes with engagement, subscribed, and tags filters in the same request. since / before and any don’t apply to this type and are ignored when present.Most workflows want states: ["active"] — that mirrors the default scope of most other subscriber-facing queries in Kit.Full reference: Filter subscribers based on engagement
May 20 2026 — Authentication
Authentication

🔧 OAuth refresh token rotation

Refresh tokens are now single-use. Each call to POST /oauth/token with grant_type=refresh_token issues a new refresh token and revokes the previous one. Reusing an old refresh token returns invalid_grant.This affects every OAuth client connected to Kit — including App Store integrations and MCP clients. If you store the refresh token from the original authorisation flow and reuse it across multiple sessions, update your client to store and use the latest refresh token from each refresh response instead. Mainstream OAuth clients handle rotation natively; custom integrations that cache refresh tokens will need a small update.Public OAuth clients (Dynamic Client Registration with confidential: false) no longer receive client_secret or client_secret_expires_at in the DCR registration response. The token_endpoint_auth_method field is now none for public clients. The .well-known/oauth-authorization-server discovery document now advertises token_endpoint_auth_methods_supported: ["client_secret_post", "none"]. Existing well-formed DCR clients work without changes — this aligns the response with what the server already accepted.Full reference: OAuth refresh token flow
May 20 2026 — API
API

🚀 New fields on V4 sequence responses

GET /v4/sequences and GET /v4/sequences/{id} now return two new fields: email_count and subscriber_count. email_count reflects published email templates only (drafts don’t count); subscriber_count reflects active subscribers. Both are available to all V4 callers (API key and OAuth) — no changes required on your end.

🚀 New slim query parameter on heavy list endpoints

GET /v4/broadcasts and GET /v4/tags/:tag_id/subscribers now accept ?slim=true to skip expensive fields and database queries. For broadcasts, slim mode omits content, public_url, email_address, email_template, and subscriber_filter. For tag subscribers, it omits custom field values. Default behaviour is unchanged — pass slim=true explicitly to opt in.Full reference: List broadcasts · List subscribers for a tag · Get a sequence
May 14 2026
Kit App StoreAutomation

🚀 Visual Automation templates for all app developers

App developers can now build, submit, and publish Visual Automation templates directly from the developer portal — pre-built automations that creators preview and adopt the moment they install your app.
  • Templates move through Draft → In review → Approved → Published states, managed from your app’s Templates tab.
  • Template review runs alongside app review — bundled with app review for unpublished apps, template-only for published apps.
  • Editing a published template’s name, description, feature labels, or source automation auto-unpublishes it and sends it back for re-review. The last-approved version stays live for creators until re-approval.
  • Deleting a template removes it from your catalogue; creators who’ve already adopted it keep their working copy.
  • Once a creator adopts a published template, the automation editor is locked — they can see it but can’t change it.
Visual Automation templates
May 13 2026
PluginsAutomation

🚀 Dynamic content blocks and Visual Automation context are now available to all developers

Two related capabilities are out of limited release and available to every Kit app developer.Dynamic content blocks — content block plugins that return a Liquid template instead of static HTML, so the rendered output is personalized per subscriber at send time. Configure your event plugin’s Sample data JSON on the Context card, link a content block to it via related_plugin_id, and reference subscriber data in Liquid as {{ automation.<app>.<event>.* }}. Full guide: Dynamic content blocks.Visual Automation context — event plugins can now attach an optional context object to each event, and Kit makes that context available everywhere downstream:
  • In sequence email Liquid (body, button URLs, links): {{ automation.<app>.<event>.<field> }}.
  • On dynamic content block previews and per-subscriber renders.
  • On action plugin request bodies as subscribers[].context.apps.<app>.<event>.* — your action endpoint receives the same context your event plugin (or another app’s event plugin) attached upstream, with no extra lookup.
Limits: 64 KB per subscriber context row, 32 distinct app namespaces, 64 keys per app. Over-limit data is dropped silently rather than blocking the VA.See automation node plugin configuration → Event context and Receiving VA context on action payloads.
May 8 2026 — Broadcast Stats
API

🚀 GET /v4/broadcasts/stats — enriched response and date filtering

GET /v4/broadcasts/stats now returns subject and send_at on every row by default. This eliminates the need for a follow-up GET /v4/broadcasts/:id call per row when building subject-line or send-time analyses.The endpoint also accepts two new optional query parameters:
  • sent_after — filter to broadcasts sent after this ISO 8601 datetime
  • sent_before — filter to broadcasts sent before this ISO 8601 datetime
Omitting both preserves existing response behaviour — no breaking change. Cursor pagination via per_page / after continues to work as documented.Plan gating: this endpoint requires a Pro plan or special developer authorisation. Requests from free accounts return 403.Full reference: /api-reference/broadcasts/get-stats-for-a-list-of-broadcasts
May 8 2026
API

🚀 Sequence Emails CRUD API

Full CRUD for the individual emails inside a sequence is now available on the V4 API:
  • GET /v4/sequences/:sequence_id/emails — list emails in send order. content is omitted by default; pass include_content=true to include it.
  • GET /v4/sequences/:sequence_id/emails/:id — fetch a single email, always with full content.
  • POST /v4/sequences/:sequence_id/emails — create an email (published: false by default so it doesn’t go out until you flip it).
  • PUT /v4/sequences/:sequence_id/emails/:id — update subject, content, timing, send days, position, or publish state.
  • DELETE /v4/sequences/:sequence_id/emails/:id — remove an email; subscribers already queued for it will skip it.
Two delay modes: delay_unit: "days" follows the sequence schedule, delay_unit: "hours" bypasses it and fires once the delay elapses (checked every 15 minutes). Per-email send_days overrides the sequence-level schedule (days mode only) — pass send_days: null to revert to inheriting it.Snippets are referenced inside content via {{ snippet.<key> }} and resolve at send time, so editing a snippet automatically updates every email referencing it without re-publishing.Full reference: /api-reference/sequence-emails/list-sequence-emails · /api-reference/sequence-emails/get-a-sequence-email · /api-reference/sequence-emails/create-a-sequence-email · /api-reference/sequence-emails/update-a-sequence-email · /api-reference/sequence-emails/delete-a-sequence-email
April 29 2026
API

🚀 GET /v4/subscribers now supports opt-in enrichment via include=

GET /v4/subscribers now accepts an include= query parameter that returns additional fields alongside the base subscriber record. Pass a comma-separated list of any of the following values:
  • include=attribution — referrer, UTM parameters, and Kit source data per subscriber
  • include=tags — array of {id, name} tag objects
  • include=location — city, state, country, lat, and lng
  • include=canceled_at — ISO 8601 cancellation timestamp; requires status=cancelled (returns 422 otherwise)
Values can be combined (e.g. include=tags,location,canceled_at). Omitting include= leaves existing response shape and performance unchanged. Invalid values return 422 with the full list of accepted options.Full reference: /api-reference/subscribers/list-subscribers
April 28 2026
API

🚀 Snippets CRUD API

Snippets are now available on the V4 API:
  • GET /v4/snippets — list snippets, with snippet_type and archived filters. content and document are omitted by default — pass include_content=true to include them.
  • GET /v4/snippets/:id — fetch a single snippet (always includes content).
  • POST /v4/snippets — create a snippet.
  • PUT /v4/snippets/:id — rename, update content, or archive/restore (pass archived: true / false in the body).
Snippets come in two types: inline snippets store plain text with Liquid variable support in content, and block snippets store rich HTML in document_attributes[value_html]. A snippet’s type is set on creation and cannot be changed via PUT.Each response includes a key field — that’s the identifier used to reference a snippet from a broadcast or sequence email via Liquid ({{ snippet.key }}). The API also rejects circular references (a snippet nesting itself) with a clear validation error.Full reference: /api-reference/snippets/list-snippets · /api-reference/snippets/get-a-snippet · /api-reference/snippets/create-a-snippet · /api-reference/snippets/update-a-snippet
April 23 2026
Plugins
You can now use markdown formatting in the help field of all plugin component library. The following formatting is supported:
  • Hyperlinks: link text
  • Bold: bold
  • Italic: italic
Plugin Component Library
April 2026
API

🚀 Newsletter posts on the V4 API

Two new read-only endpoints expose newsletter posts on the V4 API — including drafts and web-only posts that weren’t reachable through broadcasts:
  • GET /v4/posts — cursor-paginated list (up to 1000 per page). Pass include_content=true to return the full HTML body (off by default to keep responses small).
  • GET /v4/posts/{id} — fetch a single post, always includes content.
Each response includes id, publication_id, title, slug, description, status, published_at, sent_at, thumbnail_url, is_paid, and public_url. Use publication_id to join a post back to its broadcast via GET /v4/broadcasts. Supports API key and OAuth2.Full reference: /api-reference/posts/list-posts · /api-reference/posts/get-a-post
April 2026
API

🚀 Sending addresses on the Account endpoint

The GET /v4/account response now includes a sending_addresses array listing every sending address configured on the account. Each entry contains email_address, from_name, status, is_default, is_verified, and is_dmarc_configured. These addresses can be used when creating or updating any email via the API. Unverified addresses are included and marked with is_verified: false.Full reference: /api-reference/accounts/get-current-account
April 2026
API

🚀 Sequences CRUD API

Full CRUD support for sequences is now available on the V4 API. Five endpoints shipped:
  • GET /v4/sequences — expanded to return the full sequence object (13 fields including send_days, time_zone, email_address, exclude_subscriber_sources)
  • GET /v4/sequences/:id — fetch a single sequence by ID
  • POST /v4/sequences — create a sequence programmatically
  • PUT /v4/sequences/:id — update sequence settings
  • DELETE /v4/sequences/:id — soft delete with background cleanup
Previously, the API only supported listing sequences with minimal fields and managing subscribers. Alongside the soon to be released sequence email endpoints, you can build full sequence management workflows — abandoned checkout flows, upsell journeys, automated templating — without manual intervention in the Kit UI.Docs: developers.kit.com/api-reference/sequences/list-sequences
April 2026
API

🚀 Broadcast date filtering

GET /v4/broadcasts now supports sent_after and sent_before query parameters for server-side date filtering. Use both together to define a date range, or omit both to preserve existing unfiltered behaviour. Filters are applied before pagination, so page sizes and cursor behaviour remain consistent. Invalid date values return 422 with descriptive error messages.This enables incremental sync patterns — instead of fetching your full broadcast history and filtering client-side, call GET /v4/broadcasts?sent_after=2026-04-16 to retrieve only what’s changed since your last run.Full reference: developers.kit.com/api-reference/broadcasts/list-broadcasts
April 2026
Plugins

🚀 Default values now supported across all plugin settings components

All plugin settings components now support an optional default property that pre-fills the setting value when a creator first adds the component. Previously only available on Radio Group, Slider, Toggle, and Textarea, it is now also supported on:The property is optional and nullable. Existing settings without default continue working unchanged.
March 2026
Kit App Store

🔧 Going-live checklist prompt added to app submission

The Submit for Approval modal now displays a pre-submission checklist when you click “Submit for approval” in the Distribution tab, with a direct link to the going-live checklist. No changes to the submission API or review process.
March 2026
Kit App Store
The Kit App Store now has free-text search. Creators can search by app name, category, or description with real-time debounced results and fuzzy/partial matching. The category filter has moved into a dropdown co-located with the search input. No API changes — this is an in-product UI feature available at app.kit.com under Automate > Apps. See the App Store overview and app details page for context on the App Store surface.
February 2026
APICommerce

🔧 Purchases endpoints now return subscriber_id

The List Purchases and Get Purchase endpoints now include subscriber_id in the response, eliminating the need for an extra API call to map a purchase to a subscriber.
February 2026
Documentation

🚀 Kit Developer Docs MCP server

Connect your AI coding agent directly to Kit’s developer documentation using the Kit Developer Docs MCP server. Supported clients can query the full API reference on demand, make live API calls on your behalf, and spin up local OAuth servers for testing.
February 2026
APIWebhooks

🚀 Custom Field Webhooks & Bulk Updates

  • Introduced 3 new webhook events for custom fields: custom_field.field_created, custom_field.field_deleted, and custom_field.field_value_updated, enabling real-time sync with third-party apps.
  • Added a bulk update endpoint (POST /v4/bulk/custom_fields/subscribers) to update multiple custom field values for multiple subscribers in a single API call.
  • Learn more about webhooks and bulk updates.
January 2026
Plugins

🚀 Transparent color option now available in color picker

The color picker component now supports an allow_transparent property that displays a “Transparent” toggle, allowing creators to set colors to transparent.
December 2025
Kit App Store

🚀 App Settings now live in Kit App Store

Developers can now set an external “App Settings” URL in their app settings, allowing Creators to be able to customize their app setup post-installation, reducing account bloat by controlling data creation and sync. Read about best practices of how to implement this here.
November 2025
Kit App Store

🔧 Improved Kit App Store Sorting

  • Default sorting now highlights the most popular apps by all-time installations.
  • Introduced a “Trending” category for apps gaining traction across our creators.
  • Renamed “Last added” to “Newest” for clarity.
October 2025
APIAnalytics

🚀 New API endpoints: “List stats for a subscriber” and “Filter subscribers based on engagement”

Developers can now use Kit’s API to filter subscribers by events like opened, clicked, sent, delivered, and subscribed with customizable date ranges and event counts. Explore the API to enhance subscriber engagement tracking. Additionally, the List stats endpoint now supports specifying date ranges for subscriber engagement data. Learn more.
October 2025
AutomationPlugins

🚀 Automation nodes app plugin environment launched

Developers can now integrate third-party apps with Kit Visual Automations using action and event nodes. This opens up powerful new ways for developers to build with Kit, and for creators to automate their workflows.
  • Event nodes trigger automations on conditions like “call booked” or “survey completed”.
  • Action nodes perform tasks in external systems such as “send an SMS” or “enroll a subscriber in a course”.
  • Apps like Shopify, Thinkific, and Calendly are already utilizing these nodes.
Explore more in our documentation.
October 2025
Kit App StoreAuthentication

🚀 Dynamic return URLs for app installations

Developers can now redirect users back to specific pages after completing an app install using the return_to query parameter in installation flows, enabling smoother integration experiences that originate from partner sites.
September 2025
Documentation

📖 Developer changelog now live

Developer changelog interface
Stay up to date with Kit’s latest developer platform updates through our new changelog featuring:
  • Emoji categories: 🚀 Added, 🔧 Changed, 🐛 Fixed, ⚠️ Breaking Changes
  • RSS subscription: Never miss an update with the RSS feed button
  • Smart filtering: Filter by product area including Kit App Store, Plugins, API, Authentication, and more
  • Copy functionality: Easily share updates with the copy page feature
Subscribe to updates to stay informed about the latest changes.
September 2025
API

🚀 New subscriber stats endpoint available

Get comprehensive engagement metrics for individual subscribers including sends, opens, clicks, bounce rates, and timestamps via the new subscriber stats API endpoint.
August 2025
Plugins

🚀 New plugin components and dependency support now available

August 2025
Kit App Store

🔧 Kit App Store and app management UX improvements

  • Entire app cards now clickable with streamlined navigation and consistent button hierarchy
  • New install button directly on Build tab for faster app testing workflows
  • In app settings (https://app.kit.com/apps/:app_id/auth), API and Plugin Authentication separated into distinct sections with clearer plugin type display
August 2025
Kit App StoreAuthentication

🚀 App Versioning now available for seamless authentication updates

Developers can now ensure creators have access to their latest functionality through app versioning:
  • Apps automatically create new versions when authentication requirements change
  • Creators receive smart notifications and can update permissions without reinstalling
  • Plugin-level scope control with cumulative permission tracking across all plugins
August 2025
AuthenticationAPI

🔧 OAuth flow now starts from api.kit.com

Kit’s OAuth flow is now initiated from api.kit.com/v4/oauth for consistency with other API endpoints, replacing the previous app.kit.com requirement.
June 2025
Kit App Store

🚀 Direct app installation URLs now available

Developers can now drive app installations directly from their websites using https://app.kit.com/apps/:app_id/install?k_app_id=k_:app_id without requiring users to first visit Kit App Store.
June 2025
Kit App Store

🔧 App icons now display consistently across the Kit App Store

App thumbnails now display as uniform squares (60x60px on detail pages, 40x40px elsewhere) with proper cropping and centering, ensuring professional appearance regardless of original image dimensions.
June 2025
Kit App StorePlugins

🚀 Plugin deletion now available for developers

Developers can now permanently delete plugins from their Kit apps to better manage their plugin inventory.
June 2025
DocumentationAPIKit App Store

🚀 Brand new developer documentation platform

We’ve completely rebuilt our developer documentation from the ground up, centralizing all developer resources in one comprehensive hub at developers.kit.com.

Key improvements include:

  • Unified resource center: All guides, tutorials, and API documentation now live in one carefully structured location
  • Updated content: Every piece of documentation has been refreshed and expanded, from app creation guides to OAuth implementation tutorials
  • Enhanced navigation: Improved site structure makes finding relevant information faster and more intuitive

🚀 New interactive features

API Sandbox

  • Test Kit’s V4 API directly in the documentation
  • Input your API key and make live requests without leaving the docs
  • Perfect for rapid prototyping and testing

Advanced Search & AI Support

  • Full-text search across all documentation
  • Built-in “Ask AI” functionality for instant answers
  • Industry-standard llms.txt and llms-full.txt support for AI integrations

🔧 Developer experience improvements

  • Dark mode support: Documentation now adapts to your preferred viewing mode
  • SEO optimized: Better discoverability for developers searching for Kit integration help
  • Quick action CTAs: Streamlined paths to sign up, join the developer community, and contact support
  • Mobile responsive: Optimized experience across all devices