Insights

Analytics API

3 endpoints under https://api.mailneo.co/api/v2. Every request carries your key in the X-API-Key header. The scope used here: analytics:read. Each endpoint below states the one it requires. Start with the guide →

Analytics
getAnalyticsOverview

Delivery and engagement totals

Event counts by type over a period, optionally narrowed to one campaign. Defaults to the last 30 days; the window may not exceed 366 days.

These are EVENT counts, not unique recipients — one person opening a message five times contributes five to opened. No rates are published for that reason; compute them yourself if you know how you want them denominated.

https://api.mailneo.co/api/v2
GET/analytics/overviewanalytics:read

Example request

curl "https://api.mailneo.co/api/v2/analytics/overview" \
  -H "X-API-Key: $MAILNEO_API_KEY"
Authorization
Required scope
analytics:read. A key without it is refused before the endpoint runs.
Credential
X-API-Key: mk_live_...Authorization: Bearer mk_live_...
Query parameters3
NameTypeRequiredNotes
startstring · date-timeNoISO 8601
endstring · date-timeNoISO 8601
campaign_idstringNomax 64 chars
Response · 200

Success

data

FieldTypeAlways presentNotes
object"analytics_overview"Yes
period_startstringYes
period_endstringYes
eventsobjectYes
events.deliverednumberYes
events.openednumberYes
events.clickednumberYes
events.bouncednumberYes
events.soft_bouncednumberYes
events.complainednumberYes
events.unsubscribednumberYes
events.deferrednumberYes
events.droppednumberYes
events.spam_reportednumberYes

meta

FieldTypeAlways presentNotes
request_idstringYes
Analytics
getAnalyticsDevices

Device, OS and browser breakdown

Where recipients engaged from, by volume. Counts OPEN and CLICK events only — every other event type is generated server-side and carries no user agent, so including them would add a large unknown bucket that means "not applicable" rather than "could not be parsed".

Values that could not be parsed are reported as unknown rather than dropped, so the buckets sum to the engagement-event total.

https://api.mailneo.co/api/v2
GET/analytics/devicesanalytics:read

Example request

curl "https://api.mailneo.co/api/v2/analytics/devices" \
  -H "X-API-Key: $MAILNEO_API_KEY"
Authorization
Required scope
analytics:read. A key without it is refused before the endpoint runs.
Credential
X-API-Key: mk_live_...Authorization: Bearer mk_live_...
Query parameters3
NameTypeRequiredNotes
startstring · date-timeNoISO 8601
endstring · date-timeNoISO 8601
campaign_idstringNomax 64 chars
Response · 200

Success

data

FieldTypeAlways presentNotes
object"analytics_devices"Yes
period_startstringYes
period_endstringYes
devicesobject[]Yes
devices[].device_typestringYes
devices[].eventsnumberYes
operating_systemsobject[]Yes
operating_systems[].osstringYes
operating_systems[].eventsnumberYes
browsersobject[]Yes
browsers[].browserstringYes
browsers[].eventsnumberYes

meta

FieldTypeAlways presentNotes
request_idstringYes
Analytics
getAnalyticsGeography

Country breakdown

Where recipients engaged from, by country, ordered by volume. Counts OPEN and CLICK events only, for the same reason as the device breakdown.

Country is derived from the IP address seen at engagement time. Treat it as indicative: opens routed through a proxy or an image-caching relay resolve to the relay, not the recipient.

https://api.mailneo.co/api/v2
GET/analytics/geographyanalytics:read

Example request

curl "https://api.mailneo.co/api/v2/analytics/geography" \
  -H "X-API-Key: $MAILNEO_API_KEY"
Authorization
Required scope
analytics:read. A key without it is refused before the endpoint runs.
Credential
X-API-Key: mk_live_...Authorization: Bearer mk_live_...
Query parameters3
NameTypeRequiredNotes
startstring · date-timeNoISO 8601
endstring · date-timeNoISO 8601
campaign_idstringNomax 64 chars
Response · 200

Success

data

FieldTypeAlways presentNotes
object"analytics_geography"Yes
period_startstringYes
period_endstringYes
countriesobject[]Yes
countries[].countrystringYes
countries[].eventsnumberYes

meta

FieldTypeAlways presentNotes
request_idstringYes

Next Steps