Create an email campaign
Deprecated
Creates an empty email (single-channel) campaign in DRAFT status with one empty first step. name must be unique in the workspace. Returns the full created campaign document. New integrations should use the multichannel /advanced campaign endpoints instead.
Authorization
apiKey Your 48 character API key, sent as is (a Bearer prefix is tolerated). Create it at https://v3.emelia.io/settings/api.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/emails/campaigns" \ -H "Authorization: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Q1 cold outreach" }'{ "success": true, "campaign": { "_id": "6650f1a2b839d8002dbcafa1", "userId": "6650f1a2b839d800e9d7b619", "name": "Q4 outreach: SaaS founders", "status": "DRAFT", "provider": "6650f1a2b839d800c323fd2f", "useManyProviders": true, "providersUsed": [ "6650f1a2b839d800d6a7ea7d" ], "schedule": { "bcc": "", "dailyContact": 35, "dailyLimit": 100, "minInterval": 60, "maxInterval": 180, "blacklistUnsub": true, "trackLinks": true, "trackOpens": true, "timeZone": "Europe/Paris", "days": [ 1 ], "start": "08:00", "end": "17:00", "eventToStopMails": [] }, "steps": [ { "_id": "6650f1a2b839d800244e963c", "delay": { "amount": 1, "unit": "DAYS" }, "versions": [ { "_id": "6650f1a2b839d800e7acf55b", "subject": "Quick question about Nexora", "message": "Hi Claire, thanks for your reply. Are you free for a call on Thursday?", "disabled": false, "rawHtml": true, "attachments": [], "options": {} } ] } ], "recipients": { "lists": [ {} ], "contacts": [ "6650f1a2b839d800e2b43cb7" ], "processing": true }, "zapierData": [ { "webhookUrl": "https://hooks.yourcompany.com/emelia", "events": [] } ], "createdAt": "2026-10-06T09:30:00.000Z", "startAt": "2026-10-06T09:30:00.000Z", "estimatedEnd": "2026-10-06T09:30:00.000Z", "plannedStart": "2026-10-06T09:30:00.000Z" }}GETList campaigns
Returns non-archived email campaigns with a reduced field set (_id, name, status, createdAt, startAt, useManyProviders, providersUsed, plannedStart) and the populated provider.
GETGet a campaign
Returns the full campaign document (minus __v) with recipients.lists populated to { _id, name }.