List campaign activity
Contacts who opened, clicked, unsubscribed, bounced or complained on a campaign, or did not open or click.
GET https://cotlet.dev/api/v1/emailoctopus/campaign-activities
Returns the contacts behind one count of a campaign report, 100 to a page; pass next_cursor back as cursor. activity picks the report: opened, clicked, unsubscribed, bounced, complained, did_not_open or did_not_click. With activity clicked, link limits the list to one tracked link. time is the first interaction in UTC and count the number of interactions. A contact deleted since the send has a blank email address but keeps its activity. did_not_open can include contacts who were not sent the campaign and, because Apple Mail pre-fetches the tracking pixel, people who never read it.
Parameters
| Name | Type | Description |
|---|---|---|
| campaign_id string required | string | Campaign ID from list_campaigns. |
| activity enum required | enum | opened, clicked, unsubscribed, bounced, complained, did_not_open or did_not_click. |
| link string | string | A tracked link from get_campaign_report; only with activity clicked. |
| cursor string | string | next_cursor from the previous call. |
Request
curl "https://cotlet.dev/api/v1/emailoctopus/campaign-activities?campaign_id=campaign_8c41d2&activity=opened" \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("emailoctopus", "list_campaign_activity", {"campaign_id":"campaign_8c41d2","activity":"opened"}) const result = await cotlet.call('emailoctopus', 'list_campaign_activity', {"campaign_id":"campaign_8c41d2","activity":"opened"}); cotlet call emailoctopus list_campaign_activity --data '{"campaign_id":"campaign_8c41d2","activity":"opened"}' Example response
{
"activity": "clicked",
"contacts": [
{
"contact_id": "e3ab8c80-5f65-11ed-835e-030e4bb63150",
"email_address": "sam@example.com",
"time": "2026-10-14T08:12:00Z",
"count": 2,
"subscribed": true
},
{
"contact_id": "f1c2d3e4-6a7b-11ed-9c8d-0242ac120002",
"email_address": "lena@example.org",
"time": "2026-10-14T11:47:00Z",
"count": 1,
"subscribed": true
}
],
"next_cursor": null
}