Connection
- Authentication: API key (V4 API key).
Sign in at app.kit.com → Settings → Developer → Add a new key. Give it an internal name (e.g. “Atako”), then copy the V4 API key right away: Kit never shows it again. Use a V4 key, not a V3 API key or API secret. The key acts on your whole Kit account; API access depends on your Kit plan (see kit.com/pricing).See Kit’s documentation.
Read actions (9)
| Action | Description |
|---|---|
get_account | Get the Kit account the key belongs to: account id, name, plan type, primary email, timezone and sending addresses with their verification status. |
get_broadcast | Get one broadcast by id (broadcast_id: integer, from list_broadcasts): subject, HTML content, preview text, targeting, template, send_at and web-publishing details (no stats). |
get_subscriber | Get one subscriber by id (subscriber_id: integer, from list_subscribers): first name, email, state, creation date and custom field values. |
list_broadcasts | List broadcasts with their content and targeting (no stats). status: draft, scheduled, sending, completed or aborted; sent_after/sent_before: dates yyyy-mm-dd; slim: true omits content, public_url, email_address, email_template and subscriber_filter. Cursor pagination: pass pagination.end_cursor as after for the next page (before = start_cursor for the previous one); per_page 1 to 1000 (default 500). |
list_custom_fields | List custom fields (id, label, key): the key is what upsert_subscriber expects in fields. Cursor pagination: pass pagination.end_cursor as after for the next page (before = start_cursor for the previous one); per_page 1 to 1000 (default 500). |
list_forms | List forms and landing pages (only active ones by default; status: active, archived, trashed or all). type: “embed” for embedded forms, “hosted” for landing pages. include: “subscriber_count” adds each form’s subscriber count. Cursor pagination: pass pagination.end_cursor as after for the next page (before = start_cursor for the previous one); per_page 1 to 1000 (default 500). |
list_sequences | List sequences (automated email series) with their schedule and active/repeat/hold settings. include: “stats” adds deliverability counts and rates. Cursor pagination: pass pagination.end_cursor as after for the next page (before = start_cursor for the previous one); per_page 1 to 1000 (default 500). |
list_subscribers | List subscribers (only active ones by default; status: active, inactive, bounced, complained, cancelled or all). email_address finds one subscriber by exact email (the way to get a subscriber id from an email). created_after/created_before/updated_after/updated_before: dates yyyy-mm-dd. sort_field: id, created_at, updated_at, cancelled_at (with status cancelled) or engagement__sent/opens/clicks/open_rate/click_rate; sort_order: asc or desc. include: comma-separated among attribution, tags, location, canceled_at (canceled_at only with status cancelled, otherwise 422). slim: true omits custom field values. Cursor pagination: pass pagination.end_cursor as after for the next page (before = start_cursor for the previous one); per_page 1 to 1000 (default 500). |
list_tags | List the account’s tags (id, name, creation date). include: “subscriber_count” adds each tag’s subscriber count. Cursor pagination: pass pagination.end_cursor as after for the next page (before = start_cursor for the previous one); per_page 1 to 1000 (default 500). |
Write actions (7)
| Action | Description |
|---|---|
add_subscriber_to_form | Add an existing subscriber, found by email, to a form or landing page (create the subscriber first with upsert_subscriber). Arguments: form_id (integer, bare number, from list_forms); email_address (string, required); referrer (string or null, optional: the URL the subscriber signed up from). |
add_subscriber_to_sequence | Add an existing subscriber, found by email, to a sequence: they start receiving its emails (create the subscriber first with upsert_subscriber). Arguments: sequence_id (integer, bare number, from list_sequences); email_address (string, required). |
create_tag | Create a tag. Idempotent on name (case-insensitive): if the tag already exists, it is returned instead of duplicated. Argument: name (string, required). |
tag_subscriber | Apply a tag to an existing subscriber, found by email (create it first with upsert_subscriber). Arguments: tag_id (integer, bare number, from list_tags or create_tag); email_address (string, required). |
unsubscribe_subscriber | Unsubscribe a subscriber from all future emails (state becomes cancelled; record, history and tags are kept). Treat it as the subscriber’s own unsubscribe: only re-subscribe them with their explicit consent. Argument: subscriber_id (integer, bare number not a string, from list_subscribers with email_address). |
untag_subscriber | Remove a tag from a subscriber (the subscriber and their other tags stay). Arguments: tag_id (integer, bare number, from list_tags); subscriber_id (integer, bare number — not an email; get it from list_subscribers with email_address). |
upsert_subscriber | Create a subscriber, or update the first name and custom fields of the one that already has this email (upsert by email; it cannot change an email address nor the state of an existing subscriber). Arguments: email_address (string, required); first_name (string or null); state (one of active, cancelled, bounced, complained, inactive — only applied on creation, default active); fields (object: custom field key → string value, keys from list_custom_fields, e.g. {“last_name”: “Lamarr”}; unknown keys are ignored and reported in warnings). |
Permissions
Every action above must be explicitly granted to an agent before it can be used. See Permissions for the grant model and Security for how credentials are protected.Last reviewed against the provider API: September 2026.