Complete API catalog

Customer operations, request validators, authentication, and matching MCP tools generated from the backend.

This catalog covers customer data operations and session-authenticated account operations. It does not turn administrator routes or provider callbacks into a public API. See Coverage & Permissions for the classification of every backend route.

This reference is generated from the API’s routes and request validators. Download the OpenAPI specification. JSON bodies go directly to the API; MCP tools use a body object and a query object.

Generated request examples contain placeholders. Replace addresses, URLs, resource IDs and other placeholder values before sending. Conditional rules and refinements are enforced by the API at runtime.

POST/ai/compose

compose (ai)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: ai_compose

Request body: application/json

FieldRequiredType / constraints
promptNo / conditionalJSON
toneNo / conditionalJSON
emailTypeNo / conditionalJSON
existingHtmlNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "prompt": {},
    "tone": {},
    "emailType": {},
    "existingHtml": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/ai/rewrite

rewrite (ai)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: ai_rewrite

Request body: application/json

FieldRequiredType / constraints
htmlNo / conditionalJSON
modeNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "html": {},
    "mode": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/ai/subject-lines

subject Lines (ai)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: ai_subject_lines

Request body: application/json

FieldRequiredType / constraints
emailHtmlNo / conditionalJSON
campaignNameNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "emailHtml": {},
    "campaignName": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/ai/preview-text

preview Text (ai)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: ai_preview_text

Request body: application/json

FieldRequiredType / constraints
emailHtmlNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "emailHtml": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/ai/spam-check

spam Check (ai)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: ai_spam_check

Request body: application/json

FieldRequiredType / constraints
subjectNo / conditionalJSON
htmlNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "subject": {},
    "html": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/ai/segment-rules

segment Rules (ai)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: ai_segment_rules

Request body: application/json

FieldRequiredType / constraints
promptNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "prompt": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/ai/campaign-debrief

campaign Debrief (ai)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: ai_campaign_debrief

Request body: application/json

FieldRequiredType / constraints
campaignIdNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "campaignId": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/ai/send-time

send Time (ai)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: ai_send_time

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/v1/track

track (v1)

Authentication: Public tracking key; never use a secret key in browser code.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
eventYesstring
emailYesstring, email
subscribedNo / conditionalboolean
dataNo / conditionalunion
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "event": {
      "type": "string",
      "minLength": 1
    },
    "email": {
      "type": "string",
      "format": "email"
    },
    "subscribed": {
      "type": "boolean"
    },
    "data": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            },
            {
              "enum": [
                "null"
              ],
              "nullable": true
            },
            {
              "type": "string",
              "format": "date-time"
            }
          ]
        },
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "object",
          "additionalProperties": {}
        }
      ]
    }
  },
  "required": [
    "event",
    "email"
  ],
  "additionalProperties": false
}

Browser tracking only; not a private project API. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/v1/send

send (v1)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: send_email

Request body: application/json

FieldRequiredType / constraints
toYesunion
subjectNo / conditionalstring
bodyNo / conditionalstring
templateNo / conditionalstring, uuid
subscribedNo / conditionalboolean
nameNo / conditionalstring
fromNo / conditionalunion
replyNo / conditionalstring, email
ccNo / conditionalunion
bccNo / conditionalunion
textNo / conditionalstring
headersNo / conditionalobject
dataNo / conditionalunion
attachmentsNo / conditionalarray
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "to": {
      "anyOf": [
        {
          "type": "string",
          "format": "email"
        },
        {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "pattern": "^[^\\r\\n]*$"
            },
            "email": {
              "type": "string",
              "format": "email"
            }
          },
          "required": [
            "email"
          ],
          "additionalProperties": false
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "pattern": "^[^\\r\\n]*$"
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              }
            ]
          }
        }
      ]
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 998,
      "pattern": "^[^\\r\\n]*$"
    },
    "body": {
      "type": "string",
      "minLength": 1
    },
    "template": {
      "type": "string",
      "format": "uuid"
    },
    "subscribed": {
      "type": "boolean"
    },
    "name": {
      "type": "string"
    },
    "from": {
      "anyOf": [
        {
          "type": "string",
          "format": "email"
        },
        {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "pattern": "^[^\\r\\n]*$"
            },
            "email": {
              "type": "string",
              "format": "email"
            }
          },
          "required": [
            "email"
          ],
          "additionalProperties": false
        }
      ]
    },
    "reply": {
      "type": "string",
      "format": "email"
    },
    "cc": {
      "anyOf": [
        {
          "type": "string",
          "format": "email"
        },
        {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "email": {
              "type": "string",
              "format": "email"
            }
          },
          "required": [
            "email"
          ],
          "additionalProperties": false
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              }
            ]
          }
        }
      ]
    },
    "bcc": {
      "anyOf": [
        {
          "type": "string",
          "format": "email"
        },
        {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "email": {
              "type": "string",
              "format": "email"
            }
          },
          "required": [
            "email"
          ],
          "additionalProperties": false
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              }
            ]
          }
        }
      ]
    },
    "text": {
      "type": "string"
    },
    "headers": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "maxLength": 998,
        "pattern": "^[^\\r\\n]*$"
      }
    },
    "data": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            },
            {
              "enum": [
                "null"
              ],
              "nullable": true
            },
            {
              "type": "string",
              "format": "date-time"
            }
          ]
        },
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "object",
          "additionalProperties": {}
        }
      ]
    },
    "attachments": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[^\\r\\n\"]+$"
          },
          "content": {
            "type": "string",
            "minLength": 1
          },
          "contentType": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          },
          "contentId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[^<>\\r\\n]+$"
          },
          "disposition": {
            "type": "string",
            "enum": [
              "attachment",
              "inline"
            ],
            "default": "attachment"
          }
        },
        "required": [
          "filename",
          "content",
          "contentType"
        ],
        "additionalProperties": false
      },
      "maxItems": 10
    }
  },
  "required": [
    "to"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/v1/verify

verify (v1)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: actions_verify

Request body: application/json

FieldRequiredType / constraints
emailYesstring, email
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/activity

get Activities (activity)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: activity_get_activities

ParameterLocationRequiredType
limitqueryNostring
cursorqueryNostring
contactIdqueryNostring
startDatequeryNostring
endDatequeryNostring
typesqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/activity/stats

get Stats (activity)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: activity_get_stats

ParameterLocationRequiredType
startDatequeryNostring
endDatequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/activity/recent-count

get Recent Count (activity)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: activity_get_recent_count

ParameterLocationRequiredType
minutesqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/activity/types

get Types (activity)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: activity_get_types

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/activity/upcoming

get Upcoming (activity)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: activity_get_upcoming

ParameterLocationRequiredType
limitqueryNostring
daysAheadqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/analytics/timeseries

get Time Series (analytics)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: analytics_get_time_series

ParameterLocationRequiredType
startDatequeryNostring
endDatequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/analytics/top-campaigns

get Top Campaigns (analytics)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: analytics_get_top_campaigns

ParameterLocationRequiredType
limitqueryNostring
startDatequeryNostring
endDatequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/analytics/campaign-stats

get Campaign Stats (analytics)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: analytics_get_campaign_stats

ParameterLocationRequiredType
startDatequeryNostring
endDatequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/analytics/top-events

get Top Events (analytics)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: analytics_get_top_events

ParameterLocationRequiredType
limitqueryNostring
startDatequeryNostring
endDatequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/api-keys

list (api-keys)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/api-keys

create (api-keys)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
nameYesstring
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/api-keys/usage

usage (api-keys)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/api-keys/:id

revoke (api-keys)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/auth/login

login (auth)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
emailYesstring, email
passwordYesstring
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    },
    "password": {
      "type": "string",
      "minLength": 6
    }
  },
  "required": [
    "email",
    "password"
  ],
  "additionalProperties": false
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/auth/signup

signup (auth)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
emailYesstring, email
passwordYesstring
firstNameYesstring
lastNameYesstring
companyYesstring
cf-turnstile-responseNo / conditionalstring
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    },
    "password": {
      "type": "string",
      "minLength": 6
    },
    "firstName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "lastName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    },
    "company": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "cf-turnstile-response": {
      "type": "string"
    }
  },
  "required": [
    "email",
    "password",
    "firstName",
    "lastName",
    "company"
  ],
  "additionalProperties": false
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/auth/logout

logout (auth)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/auth/oauth-config

oauth Config (auth)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/auth/verify-email

verify Email (auth)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
tokenNo / conditionalstring
codeNo / conditionalstring
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "minLength": 64,
      "maxLength": 64
    },
    "code": {
      "type": "string",
      "minLength": 6,
      "maxLength": 6,
      "pattern": "^\\d{6}$"
    }
  },
  "additionalProperties": false
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/auth/request-verification

request Verification (auth)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/auth/request-password-reset

request Password Reset (auth)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
emailYesstring, email
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/auth/reset-password

reset Password (auth)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
tokenYesstring
newPasswordYesstring
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "minLength": 64,
      "maxLength": 64
    },
    "newPassword": {
      "type": "string",
      "minLength": 6
    }
  },
  "required": [
    "token",
    "newPassword"
  ],
  "additionalProperties": false
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/campaigns

create (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: create_campaign

Request body: application/json

FieldRequiredType / constraints
nameYesstring
descriptionNo / conditionalstring
subjectYesstring
bodyYesstring
fromYesstring, email
fromNameNo / conditionalstring, nullable
replyToNo / conditionalstring, email, nullable
typeNo / conditionalstring (TRANSACTIONAL, MARKETING, HEADLESS)
audienceTypeYesstring (ALL, FILTERED, SEGMENT)
audienceConditionNo / conditionalobject
segmentIdNo / conditionalstring, uuid
isABTestNo / conditionalboolean
abVariantSubjectNo / conditionalstring
abVariantBodyNo / conditionalstring
abSplitPercentNo / conditionalinteger
abTestDurationNo / conditionalinteger
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1
    },
    "description": {
      "type": "string"
    },
    "subject": {
      "type": "string",
      "minLength": 1
    },
    "body": {
      "type": "string",
      "minLength": 1
    },
    "from": {
      "type": "string",
      "format": "email"
    },
    "fromName": {
      "type": "string",
      "maxLength": 100,
      "nullable": true
    },
    "replyTo": {
      "type": "string",
      "format": "email",
      "nullable": true
    },
    "type": {
      "type": "string",
      "enum": [
        "TRANSACTIONAL",
        "MARKETING",
        "HEADLESS"
      ],
      "default": "MARKETING"
    },
    "audienceType": {
      "type": "string",
      "enum": [
        "ALL",
        "FILTERED",
        "SEGMENT"
      ]
    },
    "audienceCondition": {
      "type": "object",
      "properties": {
        "logic": {
          "type": "string",
          "enum": [
            "AND",
            "OR"
          ]
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "filters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string",
                      "minLength": 1
                    },
                    "operator": {
                      "type": "string",
                      "enum": [
                        "equals",
                        "notEquals",
                        "contains",
                        "notContains",
                        "greaterThan",
                        "lessThan",
                        "greaterThanOrEqual",
                        "lessThanOrEqual",
                        "exists",
                        "notExists",
                        "within",
                        "olderThan",
                        "triggered",
                        "triggeredWithin",
                        "triggeredOlderThan",
                        "notTriggered",
                        "notTriggeredWithin",
                        "memberOfSegment",
                        "notMemberOfSegment"
                      ]
                    },
                    "value": {},
                    "unit": {
                      "type": "string",
                      "enum": [
                        "days",
                        "hours",
                        "minutes"
                      ]
                    }
                  },
                  "required": [
                    "field",
                    "operator"
                  ],
                  "additionalProperties": false
                }
              },
              "conditions": {}
            },
            "required": [
              "filters"
            ],
            "additionalProperties": false
          },
          "minItems": 1
        }
      },
      "required": [
        "logic",
        "groups"
      ],
      "additionalProperties": false
    },
    "segmentId": {
      "type": "string",
      "format": "uuid"
    },
    "isABTest": {
      "type": "boolean"
    },
    "abVariantSubject": {
      "type": "string",
      "minLength": 1
    },
    "abVariantBody": {
      "type": "string",
      "minLength": 1
    },
    "abSplitPercent": {
      "type": "integer",
      "minimum": 1,
      "maximum": 99
    },
    "abTestDuration": {
      "type": "integer",
      "minimum": 1,
      "maximum": 168
    }
  },
  "required": [
    "name",
    "subject",
    "body",
    "from",
    "audienceType"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/campaigns

list (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_campaigns

ParameterLocationRequiredType
statusqueryNostring
searchqueryNostring
pagequeryNostring
pageSizequeryNostring
sortqueryNostring
dirqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/campaigns/bulk-update

bulk Update (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_bulk_update

Request body: application/json

FieldRequiredType / constraints
idsYesarray
deleteNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "minItems": 1,
      "maxItems": 1000
    },
    "delete": {
      "type": "boolean"
    }
  },
  "required": [
    "ids"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/campaigns/:id

get (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_campaign

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PUT/campaigns/:id

update (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_update

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalstring
descriptionNo / conditionalstring
subjectNo / conditionalstring
bodyNo / conditionalstring
fromNo / conditionalstring
fromNameNo / conditionalstring, nullable
replyToNo / conditionalstring, nullable
typeNo / conditionalstring (TRANSACTIONAL, MARKETING, HEADLESS)
audienceTypeNo / conditionalstring (ALL, FILTERED, SEGMENT)
audienceConditionNo / conditionalobject
segmentIdNo / conditionalstring
isABTestNo / conditionalboolean
abVariantSubjectNo / conditionalstring, nullable
abVariantBodyNo / conditionalstring, nullable
abSplitPercentNo / conditionalinteger
abTestDurationNo / conditionalinteger
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "subject": {
      "type": "string"
    },
    "body": {
      "type": "string"
    },
    "from": {
      "type": "string"
    },
    "fromName": {
      "type": "string",
      "maxLength": 100,
      "nullable": true
    },
    "replyTo": {
      "type": "string",
      "nullable": true
    },
    "type": {
      "type": "string",
      "enum": [
        "TRANSACTIONAL",
        "MARKETING",
        "HEADLESS"
      ]
    },
    "audienceType": {
      "type": "string",
      "enum": [
        "ALL",
        "FILTERED",
        "SEGMENT"
      ]
    },
    "audienceCondition": {
      "type": "object",
      "properties": {
        "logic": {
          "type": "string",
          "enum": [
            "AND",
            "OR"
          ]
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "filters": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "field": {
                      "type": "string",
                      "minLength": 1
                    },
                    "operator": {
                      "type": "string",
                      "enum": [
                        "equals",
                        "notEquals",
                        "contains",
                        "notContains",
                        "greaterThan",
                        "lessThan",
                        "greaterThanOrEqual",
                        "lessThanOrEqual",
                        "exists",
                        "notExists",
                        "within",
                        "olderThan",
                        "triggered",
                        "triggeredWithin",
                        "triggeredOlderThan",
                        "notTriggered",
                        "notTriggeredWithin",
                        "memberOfSegment",
                        "notMemberOfSegment"
                      ]
                    },
                    "value": {},
                    "unit": {
                      "type": "string",
                      "enum": [
                        "days",
                        "hours",
                        "minutes"
                      ]
                    }
                  },
                  "required": [
                    "field",
                    "operator"
                  ],
                  "additionalProperties": false
                }
              },
              "conditions": {}
            },
            "required": [
              "filters"
            ],
            "additionalProperties": false
          },
          "minItems": 1
        }
      },
      "required": [
        "logic",
        "groups"
      ],
      "additionalProperties": false
    },
    "segmentId": {
      "type": "string"
    },
    "isABTest": {
      "type": "boolean"
    },
    "abVariantSubject": {
      "type": "string",
      "minLength": 1,
      "nullable": true
    },
    "abVariantBody": {
      "type": "string",
      "minLength": 1,
      "nullable": true
    },
    "abSplitPercent": {
      "type": "integer",
      "minimum": 1,
      "maximum": 99
    },
    "abTestDuration": {
      "type": "integer",
      "minimum": 1,
      "maximum": 168
    }
  },
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/campaigns/:id

delete (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_delete

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/campaigns/:id/duplicate

duplicate (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_duplicate

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/campaigns/:id/send

send (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: send_campaign

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
scheduledForNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "scheduledFor": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/campaigns/:id/cancel

cancel (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: cancel_campaign

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/campaigns/:id/stats

stats (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_campaign_stats

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/campaigns/:id/pick-winner

pick Winner (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_pick_winner

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
variantYesstring (A, B)
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "variant": {
      "type": "string",
      "enum": [
        "A",
        "B"
      ]
    }
  },
  "required": [
    "variant"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/campaigns/:id/analytics

analytics (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_analytics

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/campaigns/:id/test

send Test (campaigns)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: campaigns_send_test

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
emailYesstring, email
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/config

get Config (config)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts

list (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_contacts

ParameterLocationRequiredType
limitqueryNostring
cursorqueryNostring
searchqueryNostring
subscribedqueryNostring
sortqueryNostring
dirqueryNostring
tagIdqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts

create (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: create_contact

Request body: application/json

FieldRequiredType / constraints
emailYesstring, email
dataNo / conditionalobject
subscribedNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    },
    "data": {
      "type": "object",
      "additionalProperties": {}
    },
    "subscribed": {
      "type": "boolean"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/export

export Contacts (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_export_contacts

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/fields

get Available Fields (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_get_available_fields

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/suppressions

list Suppressions (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_list_suppressions

ParameterLocationRequiredType
typequeryNostring
pagequeryNostring
pageSizequeryNostring
searchqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/suppressions

add Suppression (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_add_suppression

Request body: application/json

FieldRequiredType / constraints
emailNo / conditionalJSON
reasonNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {},
    "reason": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/contacts/suppressions/:contactId

remove Suppression (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_remove_suppression

ParameterLocationRequiredType
contactIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/suppressions/stats

suppression Stats (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_suppression_stats

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/suppressions/export

export Suppressions (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_export_suppressions

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/fields/:field/values

get Field Values (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_get_field_values

ParameterLocationRequiredType
fieldpathYesstring
limitqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/:id

get (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_contact

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/contacts/:id

update (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: update_contact

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
emailNo / conditionalstring, email
dataNo / conditionalobject
subscribedNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    },
    "data": {
      "type": "object",
      "additionalProperties": {}
    },
    "subscribed": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/contacts/:id

delete (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: delete_contact

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/:id/tags

add Tags (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_add_tags

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
tagIdsNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "tagIds": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/contacts/:id/tags/:tagId

remove Tag (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_remove_tag

ParameterLocationRequiredType
idpathYesstring
tagIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/:id/emails

get Emails (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_get_emails

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/public/:id

get Public (contacts)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/public/:id/subscribe

subscribe Public (contacts)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/public/:id/unsubscribe

unsubscribe Public (contacts)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/lookup

lookup (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_lookup

Request body: application/json

FieldRequiredType / constraints
emailsNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "emails": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/import

import Csv (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_import_csv

Request body: multipart/form-data

FieldRequiredType / constraints
fileYesstring, binary
Complete request JSON Schema
{
  "type": "object",
  "required": [
    "file"
  ],
  "properties": {
    "file": {
      "type": "string",
      "format": "binary"
    }
  }
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 202, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/import/:jobId

get Import Status (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_get_import_status

ParameterLocationRequiredType
jobIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/fields/:field/usage

get Field Usage (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_get_field_usage

ParameterLocationRequiredType
fieldpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/contacts/fields/:field

delete Field (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_delete_field

ParameterLocationRequiredType
fieldpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/bulk-subscribe

bulk Subscribe (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_bulk_subscribe

Request body: application/json

See the complete schema below for union/conditional input, or additional JSON fields. The server applies its runtime validation.

Complete request JSON Schema
{
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "ids"
          ]
        },
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid"
          },
          "minItems": 1,
          "maxItems": 1000
        }
      },
      "required": [
        "mode",
        "contactIds"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "query"
          ]
        },
        "filter": {
          "type": "object",
          "properties": {
            "search": {
              "type": "string",
              "maxLength": 255
            },
            "subscribed": {
              "type": "boolean"
            },
            "tagId": {
              "type": "string",
              "format": "uuid"
            }
          },
          "additionalProperties": false,
          "default": {}
        },
        "excludeIds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid"
          },
          "maxItems": 10000
        }
      },
      "required": [
        "mode"
      ],
      "additionalProperties": false
    }
  ]
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 202, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/bulk-unsubscribe

bulk Unsubscribe (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_bulk_unsubscribe

Request body: application/json

See the complete schema below for union/conditional input, or additional JSON fields. The server applies its runtime validation.

Complete request JSON Schema
{
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "ids"
          ]
        },
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid"
          },
          "minItems": 1,
          "maxItems": 1000
        }
      },
      "required": [
        "mode",
        "contactIds"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "query"
          ]
        },
        "filter": {
          "type": "object",
          "properties": {
            "search": {
              "type": "string",
              "maxLength": 255
            },
            "subscribed": {
              "type": "boolean"
            },
            "tagId": {
              "type": "string",
              "format": "uuid"
            }
          },
          "additionalProperties": false,
          "default": {}
        },
        "excludeIds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid"
          },
          "maxItems": 10000
        }
      },
      "required": [
        "mode"
      ],
      "additionalProperties": false
    }
  ]
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 202, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/contacts/bulk-delete

bulk Delete (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_bulk_delete

Request body: application/json

See the complete schema below for union/conditional input, or additional JSON fields. The server applies its runtime validation.

Complete request JSON Schema
{
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "ids"
          ]
        },
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid"
          },
          "minItems": 1,
          "maxItems": 1000
        }
      },
      "required": [
        "mode",
        "contactIds"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "query"
          ]
        },
        "filter": {
          "type": "object",
          "properties": {
            "search": {
              "type": "string",
              "maxLength": 255
            },
            "subscribed": {
              "type": "boolean"
            },
            "tagId": {
              "type": "string",
              "format": "uuid"
            }
          },
          "additionalProperties": false,
          "default": {}
        },
        "excludeIds": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid"
          },
          "maxItems": 10000
        }
      },
      "required": [
        "mode"
      ],
      "additionalProperties": false
    }
  ]
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 202, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/contacts/bulk/:jobId

get Bulk Action Status (contacts)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: contacts_get_bulk_action_status

ParameterLocationRequiredType
jobIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/dedicated-ips

list (dedicated-ips)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: dedicated_ips_list

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/dedicated-ips

create (dedicated-ips)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: dedicated_ips_create

Request body: application/json

FieldRequiredType / constraints
ipNo / conditionalJSON
notesNo / conditionalJSON
dailySendCapNo / conditionalJSON
warmupTargetNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "ip": {},
    "notes": {},
    "dailySendCap": {},
    "warmupTarget": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/dedicated-ips/:id

update (dedicated-ips)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: dedicated_ips_update

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
statusNo / conditionalJSON
notesNo / conditionalJSON
advanceDaysNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "status": {},
    "notes": {},
    "advanceDays": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/dedicated-ips/:id

remove (dedicated-ips)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: dedicated_ips_remove

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/developer/smtp/test

test Smtp Send (developer)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
projectIdYesJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "projectId": {}
  },
  "required": [
    "projectId"
  ],
  "additionalProperties": true
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/v2/domainTemplates/providers/sendbound.com/services/email-sending

get Email Template (v2/domainTemplates/providers/sendbound.com/services)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/domains

list Domains (domains)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_domains

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/domains

add Domain (domains)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: add_domain

Request body: application/json

FieldRequiredType / constraints
domainYesstring
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "maxLength": 253
    }
  },
  "required": [
    "domain"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/domains/project/:projectId

get Project Domains (domains)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: domains_get_project_domains

ParameterLocationRequiredType
projectIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/domains/:id

get Domain (domains)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: domains_get_domain

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/domains/:id

remove Domain (domains)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: domains_remove_domain

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/domains/:id/verify

check Verification (domains)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: verify_domain

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/domains/:id/dns-check

check Dns (domains)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: domains_check_dns

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/domains/:id/toggle

toggle Feature (domains)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: domains_toggle_feature

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
featureNo / conditionalJSON
enabledNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "feature": {},
    "enabled": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/emails/batch

batch Send (emails)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: batch_send_email

Request body: application/json

FieldRequiredType / constraints
emailsYesarray
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "emails": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "to": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "email"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "email": {
                          "type": "string",
                          "format": "email"
                        }
                      },
                      "required": [
                        "email"
                      ],
                      "additionalProperties": false
                    }
                  ]
                }
              }
            ]
          },
          "from": {
            "anyOf": [
              {
                "type": "string",
                "format": "email"
              },
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "email": {
                    "type": "string",
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              }
            ]
          },
          "subject": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "template": {
            "type": "string"
          },
          "data": {
            "type": "object",
            "additionalProperties": {}
          },
          "reply": {
            "type": "string",
            "format": "email"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "filename": {
                  "type": "string"
                },
                "content": {
                  "type": "string"
                },
                "contentType": {
                  "type": "string"
                }
              },
              "required": [
                "filename",
                "content",
                "contentType"
              ],
              "additionalProperties": false
            }
          },
          "subscribed": {
            "type": "boolean"
          }
        },
        "required": [
          "to",
          "from"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 100
    }
  },
  "required": [
    "emails"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/emails

list (emails)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_emails

ParameterLocationRequiredType
cursorqueryNostring
searchqueryNostring
statusqueryNostring
sourcequeryNostring
startDatequeryNostring
endDatequeryNostring
limitqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/emails/inbound

list Inbound (emails)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_inbound_emails

ParameterLocationRequiredType
cursorqueryNostring
searchqueryNostring
startDatequeryNostring
endDatequeryNostring
limitqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/emails/:id/attachments/:attachmentId

download Inbound Attachment (emails)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: download_inbound_attachment

ParameterLocationRequiredType
idpathYesstring
attachmentIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/emails/:id

get One (emails)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_email

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/events/track

track (events)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: events_track

Request body: application/json

FieldRequiredType / constraints
nameYesJSON
contactIdNo / conditionalJSON
emailIdNo / conditionalJSON
dataNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "contactId": {},
    "emailId": {},
    "data": {}
  },
  "required": [
    "name"
  ],
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/events

list (events)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: events_list

ParameterLocationRequiredType
eventNamequeryNostring
limitqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/events/stats

stats (events)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: events_stats

ParameterLocationRequiredType
startDatequeryNostring
endDatequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/events/contact/:contactId

get Contact Events (events)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: events_get_contact_events

ParameterLocationRequiredType
contactIdpathYesstring
limitqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/events/names

get Event Names (events)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: events_get_event_names

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/events/:eventName/usage

get Event Usage (events)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: events_get_event_usage

ParameterLocationRequiredType
eventNamepathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/events/:eventName

delete Event (events)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: events_delete_event

ParameterLocationRequiredType
eventNamepathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/integrations/mailchimp/import

import Mailchimp (integrations)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
apiKeyNo / conditionalJSON
audienceIdNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "apiKey": {},
    "audienceId": {}
  },
  "additionalProperties": true
}

Third-party credentials: use the authenticated dashboard/API, not AI tool arguments. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/integrations/klaviyo/import

import Klaviyo (integrations)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
apiKeyNo / conditionalJSON
listIdNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "apiKey": {},
    "listId": {}
  },
  "additionalProperties": true
}

Third-party credentials: use the authenticated dashboard/API, not AI tool arguments. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/integrations/convertkit/import

import Convert Kit (integrations)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
apiKeyNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "apiKey": {}
  },
  "additionalProperties": true
}

Third-party credentials: use the authenticated dashboard/API, not AI tool arguments. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/integrations/brevo/import

import Brevo (integrations)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
apiKeyNo / conditionalJSON
listIdNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "apiKey": {},
    "listId": {}
  },
  "additionalProperties": true
}

Third-party credentials: use the authenticated dashboard/API, not AI tool arguments. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/integrations/hubspot/import

import Hub Spot (integrations)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
accessTokenNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "accessToken": {}
  },
  "additionalProperties": true
}

Third-party credentials: use the authenticated dashboard/API, not AI tool arguments. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/logs

list (logs)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: logs_list

ParameterLocationRequiredType
limitqueryNostring
cursorqueryNostring
startDatequeryNostring
searchqueryNostring
methodqueryNostring
statusqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/@me/preference-page

get Preference Page ()

Authentication: Secret project API key. Resources are scoped to that project.

MCP: preferences_get_preference_page

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/projects/@me/preference-page

update Preference Page ()

Authentication: Secret project API key. Resources are scoped to that project.

MCP: preferences_update_preference_page

Request body: application/json

See the complete schema below for union/conditional input, or additional JSON fields. The server applies its runtime validation.

Complete request JSON Schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/preferences/:contactId

get ()

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
contactIdpathYesstring
tokenqueryNostring

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/preferences/:contactId

update ()

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
contactIdpathYesstring

Request body: application/json

FieldRequiredType / constraints
tokenNo / conditionalJSON
groupIdNo / conditionalJSON
subscribedNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "token": {},
    "groupId": {},
    "subscribed": {}
  },
  "additionalProperties": true
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/preferences/:contactId/unsubscribe-all

unsubscribe All ()

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
contactIdpathYesstring

Request body: application/json

FieldRequiredType / constraints
tokenNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "token": {}
  },
  "additionalProperties": true
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/unsubscribe-groups

list Groups ()

Authentication: Secret project API key. Resources are scoped to that project.

MCP: preferences_list_groups

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/unsubscribe-groups

create Group ()

Authentication: Secret project API key. Resources are scoped to that project.

MCP: preferences_create_group

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalJSON
descriptionNo / conditionalJSON
isDefaultNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "description": {},
    "isDefault": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/unsubscribe-groups/:id

update Group ()

Authentication: Secret project API key. Resources are scoped to that project.

MCP: preferences_update_group

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalJSON
descriptionNo / conditionalJSON
isDefaultNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "description": {},
    "isDefault": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/unsubscribe-groups/:id

delete Group ()

Authentication: Secret project API key. Resources are scoped to that project.

MCP: preferences_delete_group

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/@me/smtp/credentials

get Smtp Credentials (projects)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Project configuration/credential boundary; use the authenticated API/dashboard. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PUT/projects/@me/smtp

update Smtp Settings (projects)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
X-Project-IdheaderNostring

Request body: application/json

See the complete schema below for union/conditional input, or additional JSON fields. The server applies its runtime validation.

Complete request JSON Schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": true
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/projects/@me/smtp/test

test Smtp Settings (projects)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: projects_test_smtp_settings

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/@me/deliverability

get Deliverability (projects)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: projects_get_deliverability

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/:id/setup-state

get Setup State (projects)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/:id/security

get Security Metrics (projects)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/:id/members

get Members (projects)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/projects/:id/members

add Member (projects)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
idpathYesstring
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
emailYesstring, email
roleNo / conditionalstring (ADMIN, MEMBER)
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email"
    },
    "role": {
      "type": "string",
      "enum": [
        "ADMIN",
        "MEMBER"
      ],
      "default": "MEMBER"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/projects/:id/members/:userId

update Member Role (projects)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
idpathYesstring
userIdpathYesstring
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
roleYesstring (ADMIN, MEMBER)
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "role": {
      "type": "string",
      "enum": [
        "ADMIN",
        "MEMBER"
      ]
    }
  },
  "required": [
    "role"
  ],
  "additionalProperties": false
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/projects/:id/members/:userId

remove Member (projects)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
idpathYesstring
userIdpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/segments

list (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_segments

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/segments

create (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: create_segment

Request body: application/json

FieldRequiredType / constraints
nameYesJSON
descriptionNo / conditionalJSON
typeNo / conditionalJSON
conditionNo / conditionalJSON
trackMembershipNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "description": {},
    "type": {},
    "condition": {},
    "trackMembership": {}
  },
  "required": [
    "name"
  ],
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/segments/:id

get (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_segment

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/segments/:id

update (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: segments_update

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalJSON
descriptionNo / conditionalJSON
conditionNo / conditionalJSON
trackMembershipNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "description": {},
    "condition": {},
    "trackMembership": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/segments/:id

delete (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: delete_segment

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/segments/:id/contacts

get Contacts (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: segments_get_contacts

ParameterLocationRequiredType
idpathYesstring
pagequeryNostring
pageSizequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/segments/:id/members

add Members (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: segments_add_members

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
emailsNo / conditionalJSON
createMissingNo / conditionalJSON
subscribedNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "emails": {},
    "createMissing": {},
    "subscribed": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/segments/:id/members

remove Members (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: segments_remove_members

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/segments/:id/compute

compute (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: segments_compute

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/segments/:id/refresh

refresh (segments)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: segments_refresh

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/sso/config

get Config (sso)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Project configuration/credential boundary; use the authenticated API/dashboard. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/sso/configure

configure (sso)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
X-Project-IdheaderNostring

Request body: application/json

See the complete schema below for union/conditional input, or additional JSON fields. The server applies its runtime validation.

Complete request JSON Schema
{
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "protocol": {
          "type": "string",
          "enum": [
            "oidc"
          ]
        },
        "issuerUrl": {
          "type": "string",
          "format": "uri"
        },
        "clientId": {
          "type": "string",
          "minLength": 1
        },
        "clientSecret": {
          "type": "string"
        },
        "domain": {
          "type": "string",
          "minLength": 1,
          "pattern": "^[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,}$"
        }
      },
      "required": [
        "protocol",
        "issuerUrl",
        "clientId",
        "domain"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "protocol": {
          "type": "string",
          "enum": [
            "saml"
          ]
        },
        "samlEntryPoint": {
          "type": "string",
          "format": "uri"
        },
        "samlCertificate": {
          "type": "string",
          "minLength": 1
        },
        "samlIssuer": {
          "type": "string"
        },
        "domain": {
          "type": "string",
          "minLength": 1,
          "pattern": "^[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,}$"
        }
      },
      "required": [
        "protocol",
        "samlEntryPoint",
        "samlCertificate",
        "domain"
      ],
      "additionalProperties": false
    }
  ]
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/sso/verify-domain

verify Domain (sso)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/sso/set-require

set Require (sso)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
requireSsoYesboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "requireSso": {
      "type": "boolean"
    }
  },
  "required": [
    "requireSso"
  ],
  "additionalProperties": false
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/sso/disable

disable (sso)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/sso/saml/metadata

saml Metadata (sso)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Project configuration/credential boundary; use the authenticated API/dashboard. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/sso/check

check (sso)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/sso/initiate

initiate (sso)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 302, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/sso/saml/callback

saml Callback (sso)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
RelayStateNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "RelayState": {}
  },
  "additionalProperties": true
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 302, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/sso/callback

callback (sso)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
codequeryNostring
statequeryNostring
errorqueryNostring
error_descriptionqueryNostring

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 302, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/tags

list (tags)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: tags_list

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/tags

create (tags)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: tags_create

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalJSON
colorNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "color": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/tags/:id

update (tags)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: tags_update

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalJSON
colorNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "color": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/tags/:id

delete (tags)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: tags_delete

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/templates

list (templates)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_templates

ParameterLocationRequiredType
pagequeryNostring
pageSizequeryNostring
searchqueryNostring
typequeryNostring
sortqueryNostring
dirqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/templates

create (templates)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: create_template

Request body: application/json

FieldRequiredType / constraints
nameYesJSON
descriptionNo / conditionalJSON
subjectYesJSON
bodyYesJSON
fromYesJSON
fromNameNo / conditionalJSON
replyToNo / conditionalJSON
typeNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "description": {},
    "subject": {},
    "body": {},
    "from": {},
    "fromName": {},
    "replyTo": {},
    "type": {}
  },
  "required": [
    "name",
    "subject",
    "body",
    "from"
  ],
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/templates/:id

get (templates)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_template

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/templates/:id

update (templates)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: update_template

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalJSON
descriptionNo / conditionalJSON
subjectNo / conditionalJSON
bodyNo / conditionalJSON
fromNo / conditionalJSON
fromNameNo / conditionalJSON
replyToNo / conditionalJSON
typeNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "description": {},
    "subject": {},
    "body": {},
    "from": {},
    "fromName": {},
    "replyTo": {},
    "type": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/templates/:id

delete (templates)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: delete_template

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/templates/bulk-update

bulk Update (templates)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: templates_bulk_update

Request body: application/json

FieldRequiredType / constraints
idsYesarray
deleteNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "minItems": 1,
      "maxItems": 1000
    },
    "delete": {
      "type": "boolean"
    }
  },
  "required": [
    "ids"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/templates/:id/duplicate

duplicate (templates)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: templates_duplicate

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/templates/:id/usage

get Usage (templates)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: templates_get_usage

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/templates/convert

convert (templates)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

Request body: application/json

FieldRequiredType / constraints
formatNo / conditionalJSON
contentNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "format": {},
    "content": {}
  },
  "additionalProperties": true
}

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/unsubscribe/:id

one Click (unsubscribe)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/unsubscribe/:id

redirect (unsubscribe)

Authentication: Public/application-specific authentication; see the flow-specific guide.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring

Public/token-authenticated application flow. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 302, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/uploads/image

upload Image (uploads)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: uploads_upload_image

Request body: multipart/form-data

FieldRequiredType / constraints
imageYesstring, binary
Complete request JSON Schema
{
  "type": "object",
  "required": [
    "image"
  ],
  "properties": {
    "image": {
      "type": "string",
      "format": "binary"
    }
  }
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/webhooks

list (webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_webhooks

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/webhooks

create (webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: create_webhook

Request body: application/json

FieldRequiredType / constraints
urlYesstring
descriptionNo / conditionalstring
eventsNo / conditionalarray
inboundDomainNo / conditionalstring, nullable
inboundPatternNo / conditionalstring, nullable
enabledNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 1
    },
    "description": {
      "type": "string",
      "maxLength": 500
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "email.sent",
          "email.opened",
          "email.clicked",
          "email.bounced",
          "email.complained",
          "email.unsubscribed",
          "email.received",
          "contact.created",
          "contact.updated",
          "contact.subscribed",
          "contact.unsubscribed",
          "contact.deleted",
          "campaign.scheduled",
          "campaign.sent",
          "campaign.cancelled"
        ]
      }
    },
    "inboundDomain": {
      "type": "string",
      "maxLength": 253,
      "nullable": true
    },
    "inboundPattern": {
      "type": "string",
      "maxLength": 64,
      "nullable": true
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/webhooks/:id

get (webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: get_webhook

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/webhooks/:id

update (webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: update_webhook

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
urlNo / conditionalstring
descriptionNo / conditionalstring
eventsNo / conditionalarray
inboundDomainNo / conditionalstring, nullable
inboundPatternNo / conditionalstring, nullable
enabledNo / conditionalboolean
rotateSecretNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 1
    },
    "description": {
      "type": "string",
      "maxLength": 500
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "email.sent",
          "email.opened",
          "email.clicked",
          "email.bounced",
          "email.complained",
          "email.unsubscribed",
          "email.received",
          "contact.created",
          "contact.updated",
          "contact.subscribed",
          "contact.unsubscribed",
          "contact.deleted",
          "campaign.scheduled",
          "campaign.sent",
          "campaign.cancelled"
        ]
      }
    },
    "inboundDomain": {
      "type": "string",
      "maxLength": 253,
      "nullable": true
    },
    "inboundPattern": {
      "type": "string",
      "maxLength": 64,
      "nullable": true
    },
    "enabled": {
      "type": "boolean"
    },
    "rotateSecret": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/webhooks/:id

delete (webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: delete_webhook

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/webhooks/:id/deliveries

deliveries (webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: list_webhook_deliveries

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/webhooks/:id/test

test (webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: test_webhook

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
eventNo / conditionalstring (test, email.received)
recipientNo / conditionalstring, email
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "event": {
      "type": "string",
      "enum": [
        "test",
        "email.received"
      ]
    },
    "recipient": {
      "type": "string",
      "maxLength": 320,
      "format": "email"
    }
  },
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me

me (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects

me Projects (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects

create Project (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
nameYesstring
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/users/@me/projects/:id

update Project (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalstring
trackingNo / conditionalstring (ENABLED, DISABLED, MARKETING_ONLY)
languageNo / conditionalstring
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "tracking": {
      "type": "string",
      "enum": [
        "ENABLED",
        "DISABLED",
        "MARKETING_ONLY"
      ]
    },
    "language": {
      "type": "string",
      "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
    }
  },
  "additionalProperties": false
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/users/@me/projects/:id

delete Project (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects/:id/secret

get Project Secret (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/regenerate-keys

regenerate Project Keys (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/checkout

create Checkout Session (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
currencyqueryNostring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/checkout-embedded

create Embedded Checkout Session (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
currencyqueryNostring
planqueryNostring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/subscribe

create Inline Subscription (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
planqueryNostring
currencyqueryNostring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/subscribe/activate

activate Subscription (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
planqueryNostring
pmIdqueryNostring
currencyqueryNostring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/change-plan

change Plan (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
planqueryNostring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/users/@me/projects/:id/addon/:addonId

remove Addon (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
addonIdpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/billing-portal

create Billing Portal Session (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects/:id/billing-limits

get Billing Limits (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PUT/users/@me/projects/:id/billing-limits

update Billing Limits (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
workflowsYesinteger, nullable
campaignsYesinteger, nullable
transactionalYesinteger, nullable
inboundYesinteger, nullable
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "workflows": {
      "type": "integer",
      "exclusiveMinimum": true,
      "minimum": 0,
      "nullable": true
    },
    "campaigns": {
      "type": "integer",
      "exclusiveMinimum": true,
      "minimum": 0,
      "nullable": true
    },
    "transactional": {
      "type": "integer",
      "exclusiveMinimum": true,
      "minimum": 0,
      "nullable": true
    },
    "inbound": {
      "type": "integer",
      "exclusiveMinimum": true,
      "minimum": 0,
      "nullable": true
    }
  },
  "required": [
    "workflows",
    "campaigns",
    "transactional",
    "inbound"
  ],
  "additionalProperties": false
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects/:id/billing-daily

get Billing Daily (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects/:id/billing-consumption

get Billing Consumption (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects/:id/billing-invoices

get Billing Invoices (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects/:id/subscription-status

get Subscription Status (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects/:id/payment-method

get Payment Method (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PUT/users/@me/projects/:id/payment-method

update Payment Method (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Request body: application/json

FieldRequiredType / constraints
paymentMethodIdYesJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "paymentMethodId": {}
  },
  "required": [
    "paymentMethodId"
  ],
  "additionalProperties": true
}

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/cancel-subscription

cancel Subscription (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/reactivate-subscription

reactivate Subscription (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/setup-intent

create Setup Intent (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/users/@me/projects/:id/security

get Security Health (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/users/@me/projects/:id/reset

reset Project (users)

Authentication: Dashboard user session; API keys cannot perform this account/security operation.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
idpathYesstring
X-Project-IdheaderNostring

Account/security operation requires a dashboard user session. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/warmup

list (warmup)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: warmup_list

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/warmup

create (warmup)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: warmup_create

Request body: application/json

FieldRequiredType / constraints
domainNo / conditionalJSON
fromAddressNo / conditionalJSON
toAddressesNo / conditionalJSON
maxLimitNo / conditionalJSON
rampupDaysNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "domain": {},
    "fromAddress": {},
    "toAddresses": {},
    "maxLimit": {},
    "rampupDays": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/warmup/:id

get (warmup)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: warmup_get

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/warmup/:id

update (warmup)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: warmup_update

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
enabledNo / conditionalJSON
toAddressesNo / conditionalJSON
maxLimitNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "enabled": {},
    "toAddresses": {},
    "maxLimit": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/warmup/:id

remove (warmup)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: warmup_remove

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/warmup/:id/advance

advance (warmup)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: warmup_advance

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/workflows

list (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_list

ParameterLocationRequiredType
pagequeryNostring
pageSizequeryNostring
searchqueryNostring
sortqueryNostring
dirqueryNostring
statusqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows

create (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_create

Request body: application/json

FieldRequiredType / constraints
nameYesJSON
descriptionNo / conditionalJSON
triggerTypeNo / conditionalJSON
eventNameNo / conditionalJSON
cronExpressionNo / conditionalJSON
enabledNo / conditionalJSON
allowReentryNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "description": {},
    "triggerType": {},
    "eventName": {},
    "cronExpression": {},
    "enabled": {},
    "allowReentry": {}
  },
  "required": [
    "name"
  ],
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/workflows/fields

get Available Fields (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_get_available_fields

ParameterLocationRequiredType
eventNamequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows/bulk-update

bulk Update (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_bulk_update

Request body: application/json

FieldRequiredType / constraints
idsYesarray
deleteNo / conditionalboolean
enabledNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid"
      },
      "minItems": 1,
      "maxItems": 1000
    },
    "delete": {
      "type": "boolean"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ids"
  ],
  "additionalProperties": false
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows/:id/ai-generate

generate With Ai (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_generate_with_ai

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
promptNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "prompt": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/workflows/:id

get (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_get

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/workflows/:id

update (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_update

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalJSON
descriptionNo / conditionalJSON
triggerTypeNo / conditionalJSON
triggerConfigNo / conditionalJSON
enabledNo / conditionalJSON
allowReentryNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "description": {},
    "triggerType": {},
    "triggerConfig": {},
    "enabled": {},
    "allowReentry": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/workflows/:id

delete (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_delete

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows/:id/duplicate

duplicate (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_duplicate

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows/:id/steps

add Step (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_add_step

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
typeNo / conditionalJSON
nameNo / conditionalJSON
positionNo / conditionalJSON
configNo / conditionalJSON
templateIdNo / conditionalJSON
autoConnectNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "type": {},
    "name": {},
    "position": {},
    "config": {},
    "templateId": {},
    "autoConnect": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/workflows/:id/steps/:stepId

update Step (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_update_step

ParameterLocationRequiredType
idpathYesstring
stepIdpathYesstring

Request body: application/json

FieldRequiredType / constraints
nameNo / conditionalJSON
positionNo / conditionalJSON
configNo / conditionalJSON
templateIdNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "name": {},
    "position": {},
    "config": {},
    "templateId": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/workflows/:id/steps/:stepId

delete Step (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_delete_step

ParameterLocationRequiredType
idpathYesstring
stepIdpathYesstring
splicequeryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows/:id/transitions

create Transition (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_create_transition

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
fromStepIdNo / conditionalJSON
toStepIdNo / conditionalJSON
conditionNo / conditionalJSON
priorityNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "fromStepId": {},
    "toStepId": {},
    "condition": {},
    "priority": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows/:id/transitions/:transitionId/insert-step

insert Step On Transition (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_insert_step_on_transition

ParameterLocationRequiredType
idpathYesstring
transitionIdpathYesstring

Request body: application/json

FieldRequiredType / constraints
typeNo / conditionalJSON
nameNo / conditionalJSON
positionNo / conditionalJSON
configNo / conditionalJSON
templateIdNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "type": {},
    "name": {},
    "position": {},
    "config": {},
    "templateId": {}
  },
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/workflows/:id/transitions/:transitionId

delete Transition (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_delete_transition

ParameterLocationRequiredType
idpathYesstring
transitionIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 204, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows/:id/executions

start Execution (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_start_execution

ParameterLocationRequiredType
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
contactIdYesJSON
contextNo / conditionalJSON
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "contactId": {},
    "context": {}
  },
  "required": [
    "contactId"
  ],
  "additionalProperties": true
}

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/workflows/:id/executions

list Executions (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_list_executions

ParameterLocationRequiredType
idpathYesstring
pagequeryNostring
pageSizequeryNostring
statusqueryNostring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/workflows/:id/executions/:executionId

get Execution (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_get_execution

ParameterLocationRequiredType
idpathYesstring
executionIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/workflows/:id/executions/:executionId

cancel Execution (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_cancel_execution

ParameterLocationRequiredType
idpathYesstring
executionIdpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/workflows/:id/executions/cancel-all

cancel All Executions (workflows)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: workflows_cancel_all_executions

ParameterLocationRequiredType
idpathYesstring

Project-scoped customer operation. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/:projectId/webhooks

list (projects/:projectId/webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
projectIdpathYesstring

Dashboard alias; MCP uses canonical /webhooks. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/projects/:projectId/webhooks

create (projects/:projectId/webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
projectIdpathYesstring

Request body: application/json

FieldRequiredType / constraints
urlYesstring
descriptionNo / conditionalstring
eventsNo / conditionalarray
inboundDomainNo / conditionalstring, nullable
inboundPatternNo / conditionalstring, nullable
enabledNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 1
    },
    "description": {
      "type": "string",
      "maxLength": 500
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "email.sent",
          "email.opened",
          "email.clicked",
          "email.bounced",
          "email.complained",
          "email.unsubscribed",
          "email.received",
          "contact.created",
          "contact.updated",
          "contact.subscribed",
          "contact.unsubscribed",
          "contact.deleted",
          "campaign.scheduled",
          "campaign.sent",
          "campaign.cancelled"
        ]
      }
    },
    "inboundDomain": {
      "type": "string",
      "maxLength": 253,
      "nullable": true
    },
    "inboundPattern": {
      "type": "string",
      "maxLength": 64,
      "nullable": true
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}

Dashboard alias; MCP uses canonical /webhooks. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 201, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/:projectId/webhooks/:id

get (projects/:projectId/webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
projectIdpathYesstring
idpathYesstring

Dashboard alias; MCP uses canonical /webhooks. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

PATCH/projects/:projectId/webhooks/:id

update (projects/:projectId/webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
projectIdpathYesstring
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
urlNo / conditionalstring
descriptionNo / conditionalstring
eventsNo / conditionalarray
inboundDomainNo / conditionalstring, nullable
inboundPatternNo / conditionalstring, nullable
enabledNo / conditionalboolean
rotateSecretNo / conditionalboolean
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 1
    },
    "description": {
      "type": "string",
      "maxLength": 500
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "email.sent",
          "email.opened",
          "email.clicked",
          "email.bounced",
          "email.complained",
          "email.unsubscribed",
          "email.received",
          "contact.created",
          "contact.updated",
          "contact.subscribed",
          "contact.unsubscribed",
          "contact.deleted",
          "campaign.scheduled",
          "campaign.sent",
          "campaign.cancelled"
        ]
      }
    },
    "inboundDomain": {
      "type": "string",
      "maxLength": 253,
      "nullable": true
    },
    "inboundPattern": {
      "type": "string",
      "maxLength": 64,
      "nullable": true
    },
    "enabled": {
      "type": "boolean"
    },
    "rotateSecret": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}

Dashboard alias; MCP uses canonical /webhooks. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

DELETE/projects/:projectId/webhooks/:id

delete (projects/:projectId/webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
projectIdpathYesstring
idpathYesstring

Dashboard alias; MCP uses canonical /webhooks. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

GET/projects/:projectId/webhooks/:id/deliveries

deliveries (projects/:projectId/webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
projectIdpathYesstring
idpathYesstring

Dashboard alias; MCP uses canonical /webhooks. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

POST/projects/:projectId/webhooks/:id/test

test (projects/:projectId/webhooks)

Authentication: Secret project API key. Resources are scoped to that project.

MCP: Not exposed through remote MCP; account administration, credentials, browser tracking, and dashboard aliases retain their own authorization.

ParameterLocationRequiredType
projectIdpathYesstring
idpathYesstring

Request body: application/json

FieldRequiredType / constraints
eventNo / conditionalstring (test, email.received)
recipientNo / conditionalstring, email
Complete request JSON Schema
{
  "type": "object",
  "properties": {
    "event": {
      "type": "string",
      "enum": [
        "test",
        "email.received"
      ]
    },
    "recipient": {
      "type": "string",
      "maxLength": 320,
      "format": "email"
    }
  },
  "additionalProperties": false
}

Dashboard alias; MCP uses canonical /webhooks. Server enforces project ownership and additional cross-field validation. IDs are UUIDs, not prefixed placeholders.

Response codes: 200, 400, 401, 403, 404, 429, 500, 503. Errors do not imply that an uncertain send is safe to repeat. A successful sending response confirms API acceptance, not inbox delivery.

Select an endpoint
to see request details