Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Activate an automation. New events matching its triggers will start enrolling contacts. Confirm with the user first: once active it can start emailing contacts straight away.
Automation ID
Send16 API key (overrides SEND16_API_KEY env var)
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Activate an automation. New events matching its triggers will start enrolling contacts. Confirm with the user first: once active it can start emailing contacts straight away.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| automationId* | string | Automation ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"automationId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"automationId": {
"type": "string",
"description": "Automation ID"
}
}
}Add contacts (by ID) to an audience.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| audienceId* | string | Audience ID |
| contactIds* | array | Contact IDs to add |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId",
"contactIds"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"audienceId": {
"type": "string",
"description": "Audience ID"
},
"contactIds": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 1000,
"minItems": 1,
"description": "Contact IDs to add"
}
}
}Add a private internal note on a conversation. Notes are visible only to workspace members.
| Argument | Type | Description |
|---|---|---|
| body* | string | Note body (markdown supported) |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| convoId* | string | Conversation ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"convoId",
"body"
],
"properties": {
"body": {
"type": "string",
"minLength": 1,
"description": "Note body (markdown supported)"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"convoId": {
"type": "string",
"description": "Conversation ID"
}
}
}Register a new sending domain. Returns the DNS records the user must add to their DNS provider, after which they should call check_domain_health to verify.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| domain* | string | FQDN to register (e.g. 'mail.example.com') |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"domain": {
"type": "string",
"maxLength": 255,
"minLength": 3,
"description": "FQDN to register (e.g. 'mail.example.com')"
}
}
}Add an email to the suppression list. Future sends to this address will be blocked.
| Argument | Type | Description |
|---|---|---|
| email* | string | |
| notes | string | |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| reason | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"notes": {
"type": "string"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"reason": {
"enum": [
"bounce",
"complaint",
"unsubscribe",
"manual"
],
"type": "string",
"default": "manual"
}
}
}Check the DNS health of a specific domain, including DKIM, SPF, DMARC, and MX record verification status. Triggers a fresh DNS lookup.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| domainId* | string | Domain ID to check health for |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domainId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"domainId": {
"type": "string",
"description": "Domain ID to check health for"
}
}
}Check a registrant in at the door (or undo it). Use the registration ID from list_event_registrations.
| Argument | Type | Description |
|---|---|---|
| undo | boolean | Undo a check-in made by mistake |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| eventId* | string | Event ID |
| registrationId* | string | Registration ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"eventId",
"registrationId"
],
"properties": {
"undo": {
"type": "boolean",
"description": "Undo a check-in made by mistake"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"eventId": {
"type": "string",
"description": "Event ID"
},
"registrationId": {
"type": "string",
"description": "Registration ID"
}
}
}Create an Action that maps an event name to a transactional template. Each matching event sends one email to the contact.
| Argument | Type | Description |
|---|---|---|
| name* | string | Display name |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| enabled | boolean | |
| sendOnce | boolean | Only send once per contact regardless of how many times the event fires |
| eventName* | string | Event name to match (e.g. 'order.placed') |
| delaySeconds | integer | Delay before sending |
| templateSlug* | string | Transactional template slug to send |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"eventName",
"templateSlug"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Display name"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"enabled": {
"type": "boolean",
"default": true
},
"sendOnce": {
"type": "boolean",
"description": "Only send once per contact regardless of how many times the event fires"
},
"eventName": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Event name to match (e.g. 'order.placed')"
},
"delaySeconds": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Delay before sending"
},
"templateSlug": {
"type": "string",
"description": "Transactional template slug to send"
}
}
}Create a new audience.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| description | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"description": {
"type": "string",
"maxLength": 500
}
}
}Create a new email campaign as a draft: optionally with full HTML content and recipients (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll) so it's ready to test and send. Nothing is sent until schedule_campaign.
| Argument | Type | Description |
|---|---|---|
| html | string | Full HTML body for the email (skip to design later) |
| name* | string | Campaign name (internal label) |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| tagIds | array | Target contacts with these tag IDs |
| replyTo | string | Reply-to email address |
| subject* | string | Email subject line |
| fromName* | string | Sender display name |
| fromEmail* | string | Sender email (must be from a verified domain) |
| segmentId | string | Target this segment (see list_segments) |
Add a single new contact, optionally straight into audiences and/or with tags; e.g. 'add this person from my email into the newsletter list'. Contacts are subscribed by default. For more than a handful of people, use import_contacts instead.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tag NAMES to assign; matched case-insensitively, created if missing |
| email* | string | Contact email address |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| lastName | string | Contact last name |
| firstName | string | Contact first name |
| audienceIds | array | Add the contact to these audience IDs (see list_audiences) |
| customFields | object | Custom field key-value pairs |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag NAMES to assign; matched case-insensitively, created if missing"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Contact email address"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"lastName": {
"type": "string",
"maxLength": 255,
"description": "Contact last name"
},
"firstName": {
"type": "string",
"maxLength": 255,
"description": "Contact first name"
},
"audienceIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Add the contact to these audience IDs (see list_audiences)"
},
"customFields": {
"type": "object",
"description": "Custom field key-value pairs",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
}
}Create a new subscription topic. Contacts opt into topics individually via the preference center.
| Argument | Type | Description |
|---|---|---|
| name* | string | Display name shown to contacts |
| slug | string | URL-safe slug (auto-derived from name if omitted) |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| isDefault | boolean | Auto-subscribe new contacts to this topic |
| description | string | Description shown in the preference center |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Display name shown to contacts"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]+$",
"maxLength": 100,
"minLength": 1,
"description": "URL-safe slug (auto-derived from name if omitted)"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"isDefault": {
"type": "boolean",
"description": "Auto-subscribe new contacts to this topic"
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Description shown in the preference center"
}
}
}Register an outgoing webhook endpoint. Send16 POSTs event JSON to this URL with an HMAC-SHA256 signature. Outgoing webhooks are a plan feature.
| Argument | Type | Description |
|---|---|---|
| url* | string | HTTPS endpoint to receive events |
| name* | string | A label for this endpoint |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| events* | array | Event types to subscribe to |
| enabled | boolean | Whether the endpoint is active (default true) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"url",
"events"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "HTTPS endpoint to receive events"
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "A label for this endpoint"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"events": {
"type": "array",
"items": {
"enum": [
"contact.created",
"contact.updated",
"contact.deleted",
"contact.subscribed",
"contact.unsubscribed",
"campaign.sent",
"campaign.completed",
"email.delivered",
"email.opened",
"email.clicked",
"email.bounced",
"email.complained",
"form.submitted"
],
"type": "string"
},
"minItems": 1,
"description": "Event types to subscribe to"
},
"enabled": {
"type": "boolean",
"description": "Whether the endpoint is active (default true)"
}
}
}Delete an Action.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| actionId* | string | Action ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"actionId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"actionId": {
"type": "string",
"description": "Action ID"
}
}
}Delete an audience (list). Contacts are not deleted; only the list and its memberships are removed.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| audienceId* | string | Audience ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"audienceId": {
"type": "string",
"description": "Audience ID"
}
}
}Delete a draft campaign. Sent campaigns cannot be deleted (only archived).
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| campaignId* | string | Campaign ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"campaignId": {
"type": "string",
"description": "Campaign ID"
}
}
}Delete a contact and all associated events. Irreversible.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| contactId* | string | Contact ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contactId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"contactId": {
"type": "string",
"description": "Contact ID"
}
}
}Delete a subscription topic. All subscribers will be detached.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| topicId* | string | Topic ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topicId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"topicId": {
"type": "string",
"description": "Topic ID"
}
}
}Delete an outgoing webhook endpoint.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| webhookId* | string | Webhook ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"webhookId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"webhookId": {
"type": "string",
"description": "Webhook ID"
}
}
}Use AI to generate a complete email HTML template based on a description. Returns ready-to-use HTML that can be sent or used in campaigns.
| Argument | Type | Description |
|---|---|---|
| type* | string | Type of email template to generate |
| style* | string | Visual style/aesthetic for the template |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| brandColor | string | Primary brand color as hex code (e.g. "#4F46E5") |
| companyName | string | Company or brand name to include in the template |
| description* | string | Detailed description of the email content and purpose (e.g. 'Welcome email for a SaaS product with feature highlights and CTA to start trial') |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"type",
"style",
"description"
],
"properties": {
"type": {
"enum": [
"marketing",
"transactional",
"newsletter",
"announcement",
"welcome",
"promotional"
],
"type": "string",
"description": "Type of email template to generate"
},
"style": {
"enum": [
"minimal",
"modern",
"bold",
"elegant",
"playful",
"corporate"
],
"type": "string",
"description": "Visual style/aesthetic for the template"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"brandColor": {
"type": "string",
"description": "Primary brand color as hex code (e.g. \"#4F46E5\")"
},
"companyName": {
"type": "string",
"description": "Company or brand name to include in the template"
},
"description": {
"type": "string",
"maxLength": 1000,
"minLength": 10,
"description": "Detailed description of the email content and purpose (e.g. 'Welcome email for a SaaS product with feature highlights and CTA to start trial')"
}
}
}Duplicate a campaign (template, content, and settings) as a new draft; works on sent campaigns too, so this is the way to re-use a past campaign's design. Optionally rename and retarget in the same call (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll). NOTE: without retargeting, the copy keeps the ORIGINAL campaign's recipients.
| Argument | Type | Description |
|---|---|---|
| name | string | Name for the new draft (default: original name + ' (Copy)') |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| tagIds | array | Retarget the new draft to contacts with these tag IDs |
| segmentId | string | Retarget the new draft to this segment |
| sendToAll | boolean | Retarget the new draft to all subscribed contacts |
| campaignId* | string | Campaign ID to duplicate |
| contactIds | array | Retarget the new draft to these contact IDs |
| audienceIds | array | Retarget the new draft to these audience IDs (see list_audiences) |
Manually enroll a contact in an active automation. The automation must be in 'active' status. Use send_event for event-driven enrollment. Confirm with the user first: the automation can start emailing the contact straight away.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| contactId* | string | Contact UUID (use search_contacts to look up by email first) |
| automationId* | string | Automation ID to enroll into |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"automationId",
"contactId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"contactId": {
"type": "string",
"description": "Contact UUID (use search_contacts to look up by email first)"
},
"automationId": {
"type": "string",
"description": "Automation ID to enroll into"
}
}
}Scrape a URL (e.g. a launch blog post or product page) and generate an email draft from its content. Returns subject, preview text, and HTML body.
| Argument | Type | Description |
|---|---|---|
| url* | string | Public URL to scrape and turn into an email |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| instructions | string | Additional guidance; e.g. 'announcement style, focus on the new feature' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public URL to scrape and turn into an email"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"instructions": {
"type": "string",
"description": "Additional guidance; e.g. 'announcement style, focus on the new feature'"
}
}
}Get a single Action with its trigger config and template binding.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| actionId* | string | Action ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"actionId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"actionId": {
"type": "string",
"description": "Action ID"
}
}
}Get a single automation by ID, including its trigger, steps, and current status.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| automationId* | string | Automation ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"automationId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"automationId": {
"type": "string",
"description": "Automation ID"
}
}
}Get aggregate analytics for an automation: total enrollments, completed, exited, open/click rates per step.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| automationId* | string | Automation ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"automationId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"automationId": {
"type": "string",
"description": "Automation ID"
}
}
}Get the workspace's brand settings: colors, logo, fonts, and the DESIGN.md spec injected into AI generation prompts.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Get detailed performance statistics for a specific campaign including open rate, click rate, bounce rate, and delivery metrics.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| campaignId* | string | Campaign ID to get stats for |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"campaignId": {
"type": "string",
"description": "Campaign ID to get stats for"
}
}
}Get a contact's 0-100 health score based on recent engagement (opens, clicks, replies).
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| contactId* | string | Contact ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contactId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"contactId": {
"type": "string",
"description": "Contact ID"
}
}
}Get a contact's full activity timeline: emails received, events fired, opens, clicks, automation enrollments, topic changes.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| cursor | string | Pagination cursor |
| contactId* | string | Contact ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contactId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Page size"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"cursor": {
"type": "string",
"description": "Pagination cursor"
},
"contactId": {
"type": "string",
"description": "Contact ID"
}
}
}Get a single conversation with its full thread of posts (incoming + outgoing).
| Argument | Type | Description |
|---|---|---|
| id* | string | Conversation ID |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Conversation ID"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Get your workspace's deliverability summary: sending reputation, domain authentication status, and recent bounce/complaint health. (Deliverability Hub plan feature.)
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Who registered and who came for one event: counts, no-show rate, where people came from (city and state), first-timers vs returning, organisations and registrations over time. Without an eventId, returns insights across every event: regulars and their attendance streaks, cohort retention and the regions growing fastest.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| eventId | string | Event ID (see list_events). Leave out for insights across all events. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"eventId": {
"type": "string",
"description": "Event ID (see list_events). Leave out for insights across all events."
}
}
}Fetch a single message with its full event timeline (created → sent → delivered → opened → clicked → ...).
| Argument | Type | Description |
|---|---|---|
| id* | string | Message ID |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Message ID"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Get just the delivery event timeline for a message: no body or recipient details.
| Argument | Type | Description |
|---|---|---|
| id* | string | Message ID |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Message ID"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Get a single starter template by ID, including its EmailContent JSON.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| templateId* | string | Template ID (slug) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"templateId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"templateId": {
"type": "string",
"description": "Template ID (slug)"
}
}
}Get the current workspace (the one the API key belongs to).
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Get the current month's send count, contact count, and plan limits.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Bulk import contacts from CSV data (min column: email), optionally straight into audiences and/or with tags. This is the tool for cross-app flows; e.g. pulling people out of Gmail, a CRM, or a spreadsheet and landing them in a Send16 audience in one call. Set updateExisting for upsert semantics (safe to re-run). Requires consentConfirmed: true, so confirm with the user that everyone on the list opted in before calling.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tag NAMES to apply to all imported contacts; matched case-insensitively, created if missing |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| csvData* | string | CSV string with headers. Required column: "email". Optional: "firstName", "lastName" |
| audienceIds | array | Add all imported contacts to these audience IDs (see list_audiences / create_audience) |
| updateExisting | boolean | Whether to update contacts that already exist |
| consentConfirmed | boolean | Required, must be true. Set it only after the user has confirmed every person on this list opted in to hear from them. Never set it for bought, rented or scraped lists. If you haven't asked, ask first. |
List Actions. Actions fire a transactional template when a custom event arrives: simple 'event_name → template' pairings, lighter than full automations.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List audiences (lists). An audience is a static, manually-managed group of contacts.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List active and historical enrollments for an automation.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number |
| state | string | |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| pageSize | integer | Results per page (max 100) |
| automationId* | string | Automation ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"automationId"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number"
},
"state": {
"enum": [
"active",
"completed",
"exited",
"paused"
],
"type": "string"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"pageSize": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (max 100)"
},
"automationId": {
"type": "string",
"description": "Automation ID"
}
}
}List all automations in the workspace, including draft/active/paused status and trigger types.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List email campaigns, newest first. Use `search` to find a past campaign the user describes vaguely ('the invite one', 'that July newsletter'); it matches name and subject case-insensitively; try distinctive words from their description and broaden if no hits.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| search | string | Case-insensitive substring match on campaign name or subject |
| status | string | Filter campaigns by status |
| pageSize | integer | Results per page (max 100) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"search": {
"type": "string",
"maxLength": 200,
"description": "Case-insensitive substring match on campaign name or subject"
},
"status": {
"enum": [
"draft",
"scheduled",
"sending",
"sent",
"paused"
],
"type": "string",
"description": "Filter campaigns by status"
},
"pageSize": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page (max 100)"
}
}
}List all contacts with optional filtering by subscription status and tag. Supports pagination.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number |
| tagId | string | Filter by tag ID |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| pageSize | integer | Results per page (max 100) |
| subscribed | string | Filter by subscription status |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number"
},
"tagId": {
"type": "string",
"description": "Filter by tag ID"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"pageSize": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page (max 100)"
},
"subscribed": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "Filter by subscription status"
}
}
}List inbox conversations. Filter by state, mailbox, label, screener status, or full-text search. Send16's unified inbox combines transactional reply threading with team-managed shared inboxes.
| Argument | Type | Description |
|---|---|---|
| label | string | Filter by label slug (comma-separate for multiple) |
| limit | integer | Page size (default 50) |
| state | string | Conversation status |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| search | string | Full-text search across subject + body |
| mailboxId | string | Filter to one mailbox |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"label": {
"type": "string",
"description": "Filter by label slug (comma-separate for multiple)"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Page size (default 50)"
},
"state": {
"enum": [
"open",
"closed",
"archived",
"snoozed"
],
"type": "string",
"description": "Conversation status"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"search": {
"type": "string",
"description": "Full-text search across subject + body"
},
"mailboxId": {
"type": "string",
"description": "Filter to one mailbox"
}
}
}List all sending domains configured in your Send16 workspace, including their verification status and DNS records.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List the people registered for an event, with status (registered, waitlisted, attended, no_show, cancelled), company, city and check-in time.
| Argument | Type | Description |
|---|---|---|
| q | string | Search name, email or company |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| status | string | |
| eventId* | string | Event ID (see list_events) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"eventId"
],
"properties": {
"q": {
"type": "string",
"description": "Search name, email or company"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"status": {
"enum": [
"registered",
"waitlisted",
"attended",
"no_show",
"cancelled"
],
"type": "string"
},
"eventId": {
"type": "string",
"description": "Event ID (see list_events)"
}
}
}List the workspace's events (meetups, workshops, conferences) with registered, attended and no-show counts and each event's public registration page.
| Argument | Type | Description |
|---|---|---|
| scope | string | Which events (default all) |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"scope": {
"enum": [
"upcoming",
"past",
"all"
],
"type": "string",
"description": "Which events (default all)"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Get unread/total counts per category and label for the inbox sidebar (newsletter, transactional, marketing, calendar, social, cold).
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List messages from the unified send log (transactional + campaign). Filter by recipient, sender, status, date range, or source.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size (default 50) |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| offset | integer | Page offset |
| source | string | Restrict to one message source |
| status | string | Delivery status filter |
| to_email | string | Recipient email filter |
| from_email | string | Sender email filter |
| created_after | string | ISO-8601 timestamp lower bound |
| created_before | string | ISO-8601 timestamp upper bound |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size (default 50)"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Page offset"
},
"source": {
"enum": [
"transactional",
"campaign"
],
"type": "string",
"description": "Restrict to one message source"
},
"status": {
"enum": [
"queued",
"sent",
"delivered",
"opened",
"clicked",
"bounced",
"failed"
],
"type": "string",
"description": "Delivery status filter"
},
"to_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Recipient email filter"
},
"from_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Sender email filter"
},
"created_after": {
"type": "string",
"description": "ISO-8601 timestamp lower bound"
},
"created_before": {
"type": "string",
"description": "ISO-8601 timestamp upper bound"
}
}
}List dynamic segments. Segments compute their members from a filter expression at send time.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List suppressed email addresses (bounces, complaints, unsubscribes, manual).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| offset | integer | |
| reason | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"reason": {
"enum": [
"bounce",
"complaint",
"unsubscribe",
"manual"
],
"type": "string"
}
}
}List starter-gallery email templates available to every workspace.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List subscription topics. Topics are granular categories contacts can subscribe to (e.g. 'product-updates', 'weekly-digest'). Campaigns and automations can be gated to subscribers of a specific topic.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List configured outgoing webhooks (your endpoints that Send16 POSTs delivery events to). Outgoing webhooks are a plan feature.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List the templates saved in the user's own Send16 workspace (their template library, including ones saved with save_template). For the shared starter gallery use list_templates.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}List workspaces the authenticated user has access to (owner or member).
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Mark a conversation as read for the current viewer.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| convoId* | string | Conversation ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"convoId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"convoId": {
"type": "string",
"description": "Conversation ID"
}
}
}Pause an automation. Existing enrollments freeze in place; no new contacts enroll.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| automationId* | string | Automation ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"automationId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"automationId": {
"type": "string",
"description": "Automation ID"
}
}
}Pause a sending campaign. Already-sent messages are unaffected; remaining sends halt.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| campaignId* | string | Campaign ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"campaignId": {
"type": "string",
"description": "Campaign ID"
}
}
}Run an AI pre-send review on an email's HTML before sending. Surfaces tone issues, broken links, missing alt text, spam triggers, and accessibility problems.
| Argument | Type | Description |
|---|---|---|
| html* | string | Full HTML body to review |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| subject* | string | Email subject line |
| audience | string | Short description of the audience (helps tone analysis) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subject",
"html"
],
"properties": {
"html": {
"type": "string",
"description": "Full HTML body to review"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"subject": {
"type": "string",
"description": "Email subject line"
},
"audience": {
"type": "string",
"description": "Short description of the audience (helps tone analysis)"
}
}
}Preview the recipient set for a campaign before sending. Returns count + sample list.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| campaignId* | string | Campaign ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"campaignId": {
"type": "string",
"description": "Campaign ID"
}
}
}Preview the contacts that match a segment without sending.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| segmentId* | string | Segment ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"segmentId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"segmentId": {
"type": "string",
"description": "Segment ID"
}
}
}Rotate the HMAC signing secret for an outgoing webhook endpoint. Returns the new secret once.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| webhookId* | string | Webhook ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"webhookId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"webhookId": {
"type": "string",
"description": "Webhook ID"
}
}
}Register someone for an event. They get the event's confirmation email with their QR ticket unless the organiser switched it off, so confirm the person and the event with the user first. Registering doesn't subscribe them to marketing unless marketingOptIn is true because they asked.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| email* | string | |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| company | string | |
| eventId* | string | Event ID (see list_events) |
| lastName | string | |
| firstName | string | |
| marketingOptIn | boolean | Only when the person asked to hear about future events |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"eventId",
"email"
],
"properties": {
"city": {
"type": "string"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"company": {
"type": "string"
},
"eventId": {
"type": "string",
"description": "Event ID (see list_events)"
},
"lastName": {
"type": "string"
},
"firstName": {
"type": "string"
},
"marketingOptIn": {
"type": "boolean",
"description": "Only when the person asked to hear about future events"
}
}
}Remove a contact from an audience.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| contactId* | string | Contact ID |
| audienceId* | string | Audience ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId",
"contactId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"contactId": {
"type": "string",
"description": "Contact ID"
},
"audienceId": {
"type": "string",
"description": "Audience ID"
}
}
}Remove an email from the suppression list. Use only when you've confirmed the recipient wants to receive mail again.
| Argument | Type | Description |
|---|---|---|
| email* | string | |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}Compile an EmailContent JSON object (the shape used by the Send16 builder + templates) into HTML using the platform's authoritative renderer. Returns the exact HTML the API would send. Useful for previews and post-processing.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| content* | object | EmailContent JSON (from get_template or the builder) |
| variables | object | Variable replacements (e.g. {firstName:'Alice'}) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"content"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"content": {
"type": "object",
"description": "EmailContent JSON (from get_template or the builder)",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"variables": {
"type": "object",
"description": "Variable replacements (e.g. {firstName:'Alice'})",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
}
}Resume a paused campaign. Confirm with the user first: the remaining recipients start receiving the campaign straight away. The sending limits and pauses described on schedule_campaign still apply.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| campaignId* | string | Campaign ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"campaignId": {
"type": "string",
"description": "Campaign ID"
}
}
}Save an email design as a reusable template in the user's Send16 workspace. Use this when the user has designed an email (for example in a Claude artifact) and wants it in Send16. Pass the complete email HTML. Send16 hosts every image (remote URLs and inline data: images), converts merge tags like {{first_name}} to Send16's format, and stores the HTML exactly as designed. For best results across Gmail, Outlook and Apple Mail the HTML should be email-safe: table-based layout around 600px wide, inline styles, PNG/JPG/GIF images in <img> tags (not SVG or CSS backgrounds), web-safe font fallbacks, and alt text on images. Returns the template id; follow up with send_template_test to send a preview.
| Argument | Type | Description |
|---|---|---|
| html* | string | The complete email HTML (a full <html> document or a body fragment) |
| mode | string | hybrid (default): keep the exact HTML, convertible to editable blocks later. html: exact HTML only. blocks: convert to editable builder blocks now (lossy for complex designs). |
| name* | string | Template name, e.g. 'October newsletter' |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| category | string | Library category, e.g. newsletter, onboarding, announcement, ecommerce, transactional. Defaults to custom. |
| hostImages | boolean | Copy every image onto Send16 hosting so it can't break later (default true) |
Schedule (or send immediately) an existing draft campaign to an audience/segment/topic. Before calling, confirm with the user: show them the recipients (or the recipient count), the sender and the subject, and wait for a clear yes. Send16 can refuse a send. 429 SEND_RAMP_LIMIT: new and free workspaces have hourly and daily sending limits while they build reputation; the error details give the window, the limit and how many remain. Tell the user how many can go now and that the rest can go once the window resets (or after upgrading), and do not split the send or retry in a loop to get around it. 403 SENDING_PAUSED: sending from the workspace is paused while the Send16 team reviews it. Nothing was sent. Tell the user to check the workspace owner's email or contact support, and do not retry. 422 MESSAGE_NEEDS_REVIEW: the content looked like it might be impersonating a government agency, bank, toll operator or delivery company, so it was held and not sent. Tell the user it is held for review and they can contact support if it is legitimate. Do not reword it and try again; repeated flags pause the workspace.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| topicId | string | |
| segmentId | string | |
| audienceId | string | |
| campaignId* | string | Campaign ID |
| scheduleAt |
Decide a pending screener conversation (first-time sender). 'allow' lets future emails through, 'reject' blocks, 'cold' marks as cold outreach.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| convoId* | string | Conversation ID |
| decision* | string | Screener decision |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"convoId",
"decision"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"convoId": {
"type": "string",
"description": "Conversation ID"
},
"decision": {
"enum": [
"allow",
"reject",
"cold"
],
"type": "string",
"description": "Screener decision"
}
}
}Search contacts by email address or name. Returns matching contacts with their tags and subscription status.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number |
| query* | string | Search query (matches against email, first name, last name) |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| pageSize | integer | Results per page (max 100) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number"
},
"query": {
"type": "string",
"minLength": 1,
"description": "Search query (matches against email, first name, last name)"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"pageSize": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Results per page (max 100)"
}
}
}One-shot broadcast: create a campaign and immediately schedule it to send, in a single call. Pass either an audienceId, segmentId, topicId, or fully-qualified filter. Provide html OR templateSlug. Before calling, confirm with the user: show them the recipients (or the recipient count), the sender and the subject, and wait for a clear yes. Send16 can refuse a send. 429 SEND_RAMP_LIMIT: new and free workspaces have hourly and daily sending limits while they build reputation; the error details give the window, the limit and how many remain. Tell the user how many can go now and that the rest can go once the window resets (or after upgrading), and do not split the send or retry in a loop to get around it. 403 SENDING_PAUSED: sending from the workspace is paused while the Send16 team reviews it. Nothing was sent. Tell the user to check the workspace owner's email or contact support, and do not retry. 422 MESSAGE_NEEDS_REVIEW: the content looked like it might be impersonating a government agency, bank, toll operator or delivery company, so it was held and not sent. Tell the user it is held for review and they can contact support if it is legitimate. Do not reword it and try again; repeated flags pause the workspace.
| Argument | Type | Description |
|---|---|---|
| html | string | Full HTML body (one of html/templateSlug required) |
| name* | string | Internal campaign name |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| replyTo | string | |
| subject* |
Send a test email for an existing campaign to preview how it will look in recipients' inboxes. Confirm the test address with the user first. Can be refused with 403 SENDING_PAUSED (workspace under review, nothing was sent, tell the user to contact support).
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| testEmail* | string | Email address to send the test to |
| campaignId* | string | Campaign ID to send test for |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId",
"testEmail"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"testEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Email address to send the test to"
},
"campaignId": {
"type": "string",
"description": "Campaign ID to send test for"
}
}
}Send a transactional email through Send16. Provide `html`, `text`, or both (text-only is fine for OTPs/receipts/alerts). `from_email` must belong to a domain that is verified in the workspace; call `whoami` for the account and `list_domains` to see which senders are allowed; a send from an unverified domain returns a clear error, not a silent failure. For a zero-setup first send, use from_email `[email protected]`; the sandbox sender delivers with no DNS, but only to your own account email. Before calling, confirm with the user: show them the recipients (or the recipient count), the sender and the subject, and wait for a clear yes. Send16 can refuse a send. 429 SEND_RAMP_LIMIT: new and free workspaces have hourly and daily sending limits while they build reputation; the error details give the window, the limit and how many remain. Tell the user how many can go now and that the rest can go once the window resets (or after upgrading), and do not split the send or retry in a loop to get around it. 403 SENDING_PAUSED: sending from the workspace is paused while the Send16 team reviews it. Nothing was sent. Tell the user to check the workspace owner's email or contact support, and do not retry. 422 MESSAGE_NEEDS_REVIEW: the content looked like it might be impersonating a government agency, bank, toll operator or delivery company, so it was held and not sent. Tell the user it is held for review and they can contact support if it is legitimate. Do not reword it and try again; repeated flags pause the workspace.
| Argument | Type | Description |
|---|---|---|
| to* | any | Recipient email address or array of addresses (max 50) |
| html | string | HTML body content |
| text | string | Plain text body content |
Fire a custom event for a contact. Automations whose trigger is `{type:'custom_event', eventName:'<name>'}` will enroll the contact and start running. Payload is exposed to condition steps as `event.<key>`. Confirm with the user first if the event could start an automation that emails the contact.
| Argument | Type | Description |
|---|---|---|
| name* | string | Event name (e.g. 'trial_started', 'order.placed') |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| payload | object | Arbitrary JSON metadata available to automation conditions |
| contactId | string | Contact UUID (provide either this or contactEmail) |
| occurredAt | string | ISO-8601 timestamp; defaults to now |
| contactEmail | string | Contact email (provide either this or contactId) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"pattern": "^[a-z0-9_.-]+$",
"maxLength": 100,
"minLength": 1,
"description": "Event name (e.g. 'trial_started', 'order.placed')"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"payload": {
"type": "object",
"description": "Arbitrary JSON metadata available to automation conditions",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"contactId": {
"type": "string",
"description": "Contact UUID (provide either this or contactEmail)"
},
"occurredAt": {
"type": "string",
"description": "ISO-8601 timestamp; defaults to now"
},
"contactEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Contact email (provide either this or contactId)"
}
}
}Reply to an inbox conversation. The reply is sent from the original recipient address (the alias the convo arrived on) and threaded back to the contact. Show the user the reply text and get a clear yes first: it goes to a real person and cannot be unsent. Can be refused with 403 SENDING_PAUSED (workspace under review, nothing was sent, tell the user to contact support).
| Argument | Type | Description |
|---|---|---|
| html | string | HTML body of the reply |
| text | string | Plain text body of the reply |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| convoId* | string | Conversation ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"convoId"
],
"properties": {
"html": {
"type": "string",
"description": "HTML body of the reply"
},
"text": {
"type": "string",
"description": "Plain text body of the reply"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"convoId": {
"type": "string",
"description": "Conversation ID"
}
}
}Send a preview of a saved workspace template to one email address, so the user can see it in a real inbox. It arrives from [email protected] with a small 'Template test preview' banner and uses sample merge values (first name 'Test'). Only send to the user's own address unless they ask otherwise. Confirm the test address with the user first. Can be refused with 403 SENDING_PAUSED (workspace under review, nothing was sent, tell the user to contact support).
| Argument | Type | Description |
|---|---|---|
| email* | string | Where to send the preview |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| templateId* | string | Template id from save_template or list_workspace_templates |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"templateId",
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Where to send the preview"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"templateId": {
"type": "string",
"description": "Template id from save_template or list_workspace_templates"
}
}
}Update an Action (toggle enabled, change template, change event name).
| Argument | Type | Description |
|---|---|---|
| name | string | |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| enabled | boolean | |
| actionId* | string | Action ID |
| sendOnce | boolean | |
| eventName | string | |
| delaySeconds | integer | |
| templateSlug | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"actionId"
],
"properties": {
"name": {
"type": "string"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"enabled": {
"type": "boolean"
},
"actionId": {
"type": "string",
"description": "Action ID"
},
"sendOnce": {
"type": "boolean"
},
"eventName": {
"type": "string"
},
"delaySeconds": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"templateSlug": {
"type": "string"
}
}
}Update workspace brand settings. The designSpec field is a Markdown DESIGN.md document fed into AI generation system prompts; use it to encode voice, do/don't lists, and visual rules. companyName/websiteUrl/companyAddress also fill the matching merge tags in templates.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| logoUrl | string | |
| designSpec | string | Markdown DESIGN.md spec for AI generation |
| fontFamily | string | Body font family |
| websiteUrl | string | Fills {{websiteUrl}} |
| companyName | string | Fills {{companyName}} |
| primaryColor | string | Hex color (e.g. '#4F46E5') |
| companyAddress | string | Physical postal address. Fills {{companyAddress}} and is appended to the unsubscribe footer on campaigns lacking one; required by anti-spam law in several markets. |
| secondaryColor | string | Hex color |
Update a draft campaign: name, subject, preview text, sender info, HTML content, and/or recipients. Retarget with exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll, then verify with preview_campaign_recipients before sending. Only drafts can be edited.
| Argument | Type | Description |
|---|---|---|
| html | string | |
| name | string | Campaign name (internal label) |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| tagIds | array | Retarget to contacts with these tag IDs |
| replyTo | string | |
| subject | string | |
| fromName | string | |
| fromEmail | string | |
| segmentId | string | Retarget to this segment (see list_segments) |
| sendToAll | boolean | Retarget to all subscribed contacts in the workspace |
Update a contact's profile fields, custom fields, or subscription state.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| lastName | string | |
| contactId* | string | Contact ID |
| firstName | string | |
| subscribed | boolean | |
| customFields | object |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"contactId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"lastName": {
"type": "string"
},
"contactId": {
"type": "string",
"description": "Contact ID"
},
"firstName": {
"type": "string"
},
"subscribed": {
"type": "boolean"
},
"customFields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}Update conversation status (open/closed/archived/snoozed) or assignee.
| Argument | Type | Description |
|---|---|---|
| state | string | New status |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| convoId* | string | Conversation ID |
| assigneeId | string | null | Workspace member user ID, or null to unassign |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"convoId"
],
"properties": {
"state": {
"enum": [
"open",
"closed",
"archived",
"snoozed"
],
"type": "string",
"description": "New status"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"convoId": {
"type": "string",
"description": "Conversation ID"
},
"assigneeId": {
"type": [
"string",
"null"
],
"description": "Workspace member user ID, or null to unassign"
}
}
}Update a subscription topic (name, description, default).
| Argument | Type | Description |
|---|---|---|
| name | string | |
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
| topicId* | string | Topic ID |
| isDefault | boolean | |
| description | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"topicId"
],
"properties": {
"name": {
"type": "string"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"topicId": {
"type": "string",
"description": "Topic ID"
},
"isDefault": {
"type": "boolean"
},
"description": {
"type": "string"
}
}
}Verify the API key and return the authenticated workspace: name, plan, email quota (used/limit), and owner. Call this first to confirm the key works before sending. Pair with list_domains to see which `from` addresses are allowed.
| Argument | Type | Description |
|---|---|---|
| apiKey | string | Send16 API key (overrides SEND16_API_KEY env var) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
}
}
}| sendToAll |
| boolean |
| Target all subscribed contacts in the workspace |
| contactIds | array | Target these specific contact IDs |
| audienceIds | array | Target these audience IDs (see list_audiences) |
| previewText | string | Preview text shown in inbox alongside subject |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"subject",
"fromName",
"fromEmail"
],
"properties": {
"html": {
"type": "string",
"description": "Full HTML body for the email (skip to design later)"
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Campaign name (internal label)"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"tagIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target contacts with these tag IDs"
},
"replyTo": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Reply-to email address"
},
"subject": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Email subject line"
},
"fromName": {
"type": "string",
"maxLength": 100,
"description": "Sender display name"
},
"fromEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Sender email (must be from a verified domain)"
},
"segmentId": {
"type": "string",
"description": "Target this segment (see list_segments)"
},
"sendToAll": {
"type": "boolean",
"description": "Target all subscribed contacts in the workspace"
},
"contactIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target these specific contact IDs"
},
"audienceIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Target these audience IDs (see list_audiences)"
},
"previewText": {
"type": "string",
"maxLength": 200,
"description": "Preview text shown in inbox alongside subject"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Name for the new draft (default: original name + ' (Copy)')"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"tagIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Retarget the new draft to contacts with these tag IDs"
},
"segmentId": {
"type": "string",
"description": "Retarget the new draft to this segment"
},
"sendToAll": {
"type": "boolean",
"description": "Retarget the new draft to all subscribed contacts"
},
"campaignId": {
"type": "string",
"description": "Campaign ID to duplicate"
},
"contactIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Retarget the new draft to these contact IDs"
},
"audienceIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Retarget the new draft to these audience IDs (see list_audiences)"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"csvData"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag NAMES to apply to all imported contacts; matched case-insensitively, created if missing"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"csvData": {
"type": "string",
"description": "CSV string with headers. Required column: \"email\". Optional: \"firstName\", \"lastName\""
},
"audienceIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Add all imported contacts to these audience IDs (see list_audiences / create_audience)"
},
"updateExisting": {
"type": "boolean",
"default": false,
"description": "Whether to update contacts that already exist"
},
"consentConfirmed": {
"type": "boolean",
"description": "Required, must be true. Set it only after the user has confirmed every person on this list opted in to hear from them. Never set it for bought, rented or scraped lists. If you haven't asked, ask first."
}
}
}| description | string | Short description shown in the template library |
| convertMergeTags | boolean | Convert common merge tags ({{first_name}}, *|FNAME|*) to Send16 tags (default true) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"html"
],
"properties": {
"html": {
"type": "string",
"minLength": 1,
"description": "The complete email HTML (a full <html> document or a body fragment)"
},
"mode": {
"enum": [
"hybrid",
"html",
"blocks"
],
"type": "string",
"default": "hybrid",
"description": "hybrid (default): keep the exact HTML, convertible to editable blocks later. html: exact HTML only. blocks: convert to editable builder blocks now (lossy for complex designs)."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Template name, e.g. 'October newsletter'"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"category": {
"type": "string",
"maxLength": 50,
"description": "Library category, e.g. newsletter, onboarding, announcement, ecommerce, transactional. Defaults to custom."
},
"hostImages": {
"type": "boolean",
"default": true,
"description": "Copy every image onto Send16 hosting so it can't break later (default true)"
},
"description": {
"type": "string",
"description": "Short description shown in the template library"
},
"convertMergeTags": {
"type": "boolean",
"default": true,
"description": "Convert common merge tags ({{first_name}}, *|FNAME|*) to Send16 tags (default true)"
}
}
}| string |
| ISO-8601 future datetime; omit to send immediately |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"topicId": {
"type": "string"
},
"segmentId": {
"type": "string"
},
"audienceId": {
"type": "string"
},
"campaignId": {
"type": "string",
"description": "Campaign ID"
},
"scheduleAt": {
"type": "string",
"description": "ISO-8601 future datetime; omit to send immediately"
}
}
}| string |
| topicId | string | Send to all subscribers of this topic |
| fromName* | string |
| fromEmail* | string | Must be a verified domain |
| segmentId | string | Send to all contacts matching this segment |
| audienceId | string | Send to all contacts in this audience |
| scheduleAt | string | ISO-8601 future datetime; omit to send immediately |
| previewText | string |
| templateSlug | string | Workspace template slug to use |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"subject",
"fromName",
"fromEmail"
],
"properties": {
"html": {
"type": "string",
"description": "Full HTML body (one of html/templateSlug required)"
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Internal campaign name"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"replyTo": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"subject": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"topicId": {
"type": "string",
"description": "Send to all subscribers of this topic"
},
"fromName": {
"type": "string",
"maxLength": 255
},
"fromEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Must be a verified domain"
},
"segmentId": {
"type": "string",
"description": "Send to all contacts matching this segment"
},
"audienceId": {
"type": "string",
"description": "Send to all contacts in this audience"
},
"scheduleAt": {
"type": "string",
"description": "ISO-8601 future datetime; omit to send immediately"
},
"previewText": {
"type": "string",
"maxLength": 255
},
"templateSlug": {
"type": "string",
"description": "Workspace template slug to use"
}
}
}| apiKey |
| string |
| Send16 API key (overrides SEND16_API_KEY env var) |
| subject* | string | Email subject line |
| reply_to | string | Reply-to email address |
| template | string | Transactional template slug to use instead of inline content |
| from_name | string | Sender display name (e.g. "Acme Co") |
| variables | object | Template variables for merge tags |
| from_email | string | Sender email address (must be from a verified domain) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"to",
"subject"
],
"properties": {
"to": {
"anyOf": [
{
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
{
"type": "array",
"items": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"maxItems": 50,
"minItems": 1
}
],
"description": "Recipient email address or array of addresses (max 50)"
},
"html": {
"type": "string",
"description": "HTML body content"
},
"text": {
"type": "string",
"description": "Plain text body content"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"subject": {
"type": "string",
"maxLength": 255,
"description": "Email subject line"
},
"reply_to": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Reply-to email address"
},
"template": {
"type": "string",
"description": "Transactional template slug to use instead of inline content"
},
"from_name": {
"type": "string",
"maxLength": 255,
"description": "Sender display name (e.g. \"Acme Co\")"
},
"variables": {
"type": "object",
"description": "Template variables for merge tags",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"from_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Sender email address (must be from a verified domain)"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"logoUrl": {
"type": "string",
"format": "uri"
},
"designSpec": {
"type": "string",
"description": "Markdown DESIGN.md spec for AI generation"
},
"fontFamily": {
"type": "string",
"description": "Body font family"
},
"websiteUrl": {
"type": "string",
"format": "uri",
"description": "Fills {{websiteUrl}}"
},
"companyName": {
"type": "string",
"maxLength": 100,
"description": "Fills {{companyName}}"
},
"primaryColor": {
"type": "string",
"description": "Hex color (e.g. '#4F46E5')"
},
"companyAddress": {
"type": "string",
"maxLength": 500,
"description": "Physical postal address. Fills {{companyAddress}} and is appended to the unsubscribe footer on campaigns lacking one; required by anti-spam law in several markets."
},
"secondaryColor": {
"type": "string",
"description": "Hex color"
}
}
}| campaignId* |
| string |
| Campaign ID |
| contactIds | array | Retarget to these specific contact IDs |
| audienceIds | array | Retarget to these audience IDs (see list_audiences). Sets recipient type 'lists'. |
| previewText | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"campaignId"
],
"properties": {
"html": {
"type": "string"
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Campaign name (internal label)"
},
"apiKey": {
"type": "string",
"description": "Send16 API key (overrides SEND16_API_KEY env var)"
},
"tagIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Retarget to contacts with these tag IDs"
},
"replyTo": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"subject": {
"type": "string"
},
"fromName": {
"type": "string"
},
"fromEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"segmentId": {
"type": "string",
"description": "Retarget to this segment (see list_segments)"
},
"sendToAll": {
"type": "boolean",
"description": "Retarget to all subscribed contacts in the workspace"
},
"campaignId": {
"type": "string",
"description": "Campaign ID"
},
"contactIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Retarget to these specific contact IDs"
},
"audienceIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Retarget to these audience IDs (see list_audiences). Sets recipient type 'lists'."
},
"previewText": {
"type": "string"
}
}
}