Skip to main content
Use Kit through Corsair: one client, typed API calls. Create a key in Kit under Settings, Developer, API Keys. It is sent in the X-Kit-Api-Key header, not as a Bearer token; that header is the OAuth path and a key sent that way is refused. Things to know before you call:
  • Kit pages by cursor. A list answers a pagination block with end_cursor, start_cursor and has_next_page. Pass end_cursor back as after for the next page, or start_cursor as before for the previous one, and stop when has_next_page is false.
  • Only active subscribers are returned by default. subscribers.list takes status; pass all to widen it, or one of active, inactive, bounced, complained, cancelled.
  • canceled_at needs the cancelled status. Asking for it beside any other status is refused, and the plugin checks that before the call rather than letting Kit answer 422.
  • Creating a subscriber with an address already on the list returns the existing one, so a create is safe to repeat.
  • Custom field values go by key, not label. A subscriber’s fields map is keyed by the field’s key, such as last_name. An unknown key is ignored and named in the response warnings array rather than failing, so read warnings when a value seems missing.
  • Tag and form subscribes need an existing subscriber. tags.tagSubscriber and forms.subscribe find the subscriber by address and answer 404 when there is none, so call subscribers.create first for a new address. Subscribing through a form then applies the form’s incentive and records added_at.
  • No bulk routes. Kit only accepts its /v4/bulk/* routes with an OAuth token, and this plugin authenticates with an API key, so create subscribers one at a time with subscribers.create.
  • subscribers.unsubscribe cannot be undone from here. It stops every future send to that person, and only they can resubscribe.
  • Rate limits. Kit enforces two request windows and sends Retry-After on a 429, which the plugin honours before backing off.
  • Webhooks. The plugin does not receive Kit webhooks; Kit has a separate endpoint-management API that is not wrapped here.
What you get:
  • 16 typed API operations

Setup

1

Install

2

Add the plugin

corsair.ts
With multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.
3

Choose authentication

4

Connect a tenant

Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.

Example API calls

List the first page of active subscribers
Add a subscriber
See the full list on the API page.

What’s next

API reference

Every kit.api.* operation with input and output types.

Connect / OAuth

createLink, Hub delivery, and tenant connect flows.

Use with agents

Expose this plugin’s operations as MCP tools.