Sending
Campaigns API
2 endpoints under https://api.mailneo.co/api/v2. Every request carries your key in the X-API-Key header. The scope used here: campaigns:read. Each endpoint below states the one it requires. Start with the guide →
Campaigns
listCampaignsList campaigns
Cursor-paginated. Pass updated_since with the synced_through value from your previous run to fetch only what changed; you will occasionally re-see a row, so upsert by id. Deletes are not visible to updated_since. The message body is omitted here — retrieve a single campaign to get it.
https://api.mailneo.co/api/v2
GET
/campaignscampaigns:readExample request
curl "https://api.mailneo.co/api/v2/campaigns?limit=25&order=desc&sort=updated_at" \ -H "X-API-Key: $MAILNEO_API_KEY"
Authorization
- Required scope
campaigns:read. A key without it is refused before the endpoint runs.- Credential
X-API-Key: mk_live_...Authorization: Bearer mk_live_...
Query parameters7
| Name | Type | Required | Notes |
|---|---|---|---|
| limit | integer | No | default 25 · 1–100 |
| cursor | string | No | max 256 chars |
| order | "asc" | "desc" | No | default "desc" |
| updated_since | string · date-time | No | ISO 8601 |
| sort | "updated_at" | "created_at" | No | default "updated_at" |
| status | "DRAFT" | "SCHEDULED" | "RUNNING" | "PAUSED" | "COMPLETED" | "CANCELLED" | … | No | |
| type | "COLD" | "NEWSLETTER" | "SEQUENCE" | No |
Response · 200
Success
data[]Each element of the array.
| Field | Type | Always present | Notes |
|---|---|---|---|
| object | "campaign" | Yes | |
| id | string | Yes | |
| name | string | Yes | |
| description | string · nullable | Yes | |
| type | string | Yes | |
| status | string | Yes | |
| subject | string · nullable | Yes | |
| preheader | string · nullable | Yes | |
| timezone | string · nullable | Yes | |
| scheduled_at | string · nullable | Yes | |
| started_at | string · nullable | Yes | |
| completed_at | string · nullable | Yes | |
| recipient_count | number | Yes | |
| sent_count | number | Yes | |
| delivered_count | number | Yes | |
| open_count | number | Yes | |
| click_count | number | Yes | |
| bounce_count | number | Yes | |
| reply_count | number | Yes | |
| unsubscribe_count | number | Yes | |
| created_at | string | Yes | |
| updated_at | string | Yes |
meta
| Field | Type | Always present | Notes |
|---|---|---|---|
| request_id | string | Yes | |
| has_more | boolean | Yes | |
| next_cursor | string · nullable | Yes | |
| synced_through | string | No |
Campaigns
getCampaignRetrieve a campaign
Returns the full campaign including the message body.
https://api.mailneo.co/api/v2
GET
/campaigns/{campaignId}campaigns:readExample request
curl "https://api.mailneo.co/api/v2/campaigns/{campaignId}" \
-H "X-API-Key: $MAILNEO_API_KEY"Authorization
- Required scope
campaigns:read. A key without it is refused before the endpoint runs.- Credential
X-API-Key: mk_live_...Authorization: Bearer mk_live_...
Path parameters1
| Name | Type | Required | Notes |
|---|---|---|---|
| campaignId | string | Yes | max 64 chars |
Response · 200
Success
data
| Field | Type | Always present | Notes |
|---|---|---|---|
| object | "campaign" | Yes | |
| id | string | Yes | |
| name | string | Yes | |
| description | string · nullable | Yes | |
| type | string | Yes | |
| status | string | Yes | |
| subject | string · nullable | Yes | |
| preheader | string · nullable | Yes | |
| timezone | string · nullable | Yes | |
| scheduled_at | string · nullable | Yes | |
| started_at | string · nullable | Yes | |
| completed_at | string · nullable | Yes | |
| recipient_count | number | Yes | |
| sent_count | number | Yes | |
| delivered_count | number | Yes | |
| open_count | number | Yes | |
| click_count | number | Yes | |
| bounce_count | number | Yes | |
| reply_count | number | Yes | |
| unsubscribe_count | number | Yes | |
| created_at | string | Yes | |
| updated_at | string | Yes | |
| body | string · nullable | Yes |
meta
| Field | Type | Always present | Notes |
|---|---|---|---|
| request_id | string | Yes |