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.getSubcategoriesand custom fields as{ customfield_key, customfield_value }pairs keyed bysubscribers.getCustomFields. Dates aredd MMM yyyy, checkbox values are joined with|, phone numbers carry the country code. - Batch updates.
subscribers.batchUpdateSubscriberstakes up to 5,000 subscribers and returns a jobID; pass it tosubscribers.batchUpdateStatusuntil the status isCompleted. - Campaigns. An account holds at most 200 campaigns.
campaigns.listCampaignslists undelivered campaigns only.campaigns.assignRecipientListassigns everyone (FilterBy: 1) or the subscribers in a set of subcategories (FilterBy: 2withdata).campaigns.sendCampaignmails the whole list at once and cannot be undone. - N8N polling.
n8n.newSubscribers,n8n.unsubscribedSubscribersand the other subscriber feeds return up to 50 records (limit) changed sincelastpollingdate(yyyy-MM-dd HH:mm:ss, UTC). A filter set toAllis left out of the request. - N8N lookups. In live tests on a free account,
n8n.findSubscriber,n8n.tagSubscriber,n8n.untagSubscriber,n8n.deactivateSubscriberandn8n.deleteN8nSubscriberanswered “Email not exists.” for subscribers the REST API returned, even onesn8n.addOrUpdateSubscriberhad just created. Thesubscribersoperations worked for the same addresses. - Transactional email.
n8n.sendEmailsends one email right away, eitherhtmlwith asubjector atemplate_id.substitution_tagsis a list of{ Key, Value }pairs andcc_emailstakes up to 10 addresses. - No local sync. Data is read from Enginemailer on each call; nothing is stored in the Corsair database.
- 38 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.More: API Key
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 subscriberWhat’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.