Skip to main content
Use Enginemailer through Corsair: one client, typed API calls. API key. Copy a key from the Enginemailer portal under your user profile (Manage API keys). The plugin sends it in the APIKey header. The same key works for the REST API (subscribers, campaigns) and the N8N API (n8n). Things to know:
  • Paid plans. Free accounts get “Free account is not eligible to use API!” from several calls, and the campaign API is for paid accounts only. Free accounts can insert 50 subscribers a day; paid accounts 10,000.
  • Errors. The REST API answers HTTP 200 even when a call fails and puts the result in Result.StatusCode. The plugin throws when that code is not 2xx, with Enginemailer’s message (“API Key Not Found!”, “Email Existed”, “Campaign Not Found”).
  • Subcategories and custom fields. Subscriber calls take subcategory ids from subscribers.getSubcategories and custom fields as { customfield_key, customfield_value } pairs keyed by subscribers.getCustomFields. Dates are dd MMM yyyy, checkbox values are joined with |, phone numbers carry the country code.
  • Batch updates. subscribers.batchUpdateSubscribers takes up to 5,000 subscribers and returns a job ID; pass it to subscribers.batchUpdateStatus until the status is Completed.
  • Campaigns. An account holds at most 200 campaigns. campaigns.listCampaigns lists undelivered campaigns only. campaigns.assignRecipientList assigns everyone (FilterBy: 1) or the subscribers in a set of subcategories (FilterBy: 2 with data). campaigns.sendCampaign mails the whole list at once and cannot be undone.
  • N8N polling. n8n.newSubscribers, n8n.unsubscribedSubscribers and the other subscriber feeds return up to 50 records (limit) changed since lastpollingdate (yyyy-MM-dd HH:mm:ss, UTC). A filter set to All is left out of the request.
  • N8N lookups. In live tests on a free account, n8n.findSubscriber, n8n.tagSubscriber, n8n.untagSubscriber, n8n.deactivateSubscriber and n8n.deleteN8nSubscriber answered “Email not exists.” for subscribers the REST API returned, even ones n8n.addOrUpdateSubscriber had just created. The subscribers operations worked for the same addresses.
  • Transactional email. n8n.sendEmail sends one email right away, either html with a subject or a template_id. substitution_tags is a list of { Key, Value } pairs and cc_emails takes up to 10 addresses.
  • No local sync. Data is read from Enginemailer on each call; nothing is stored in the Corsair database.
What you get:
  • 38 typed API operations

Setup

1

Install

2

Add the plugin

corsair.ts
Multi-tenancy is the default — scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.
3

Choose authentication

4

Connect a tenant

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

Example API calls

Look up a subscriber
Add a subscriber
See the full list on the API page.

What’s next

API reference

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

Connect / OAuth

createLink, Hub delivery, and tenant connect flows.

Use with agents

Expose this plugin’s operations as MCP tools.