List campaign activity
Contacts behind one count of a campaign: who opened, clicked, bounced or was blocked.
GET https://cotlet.dev/api/v1/mailjet/campaign-activities
read
Returns the contacts of one status of a campaign, as the Activity and Non-delivery tabs list them. For blocked and bounced statuses each row has the reason and the date. email matches a complete address. Pass next_cursor back as cursor for the next page.
Parameters
| Name | Type | Description |
|---|---|---|
| campaign_id integer required | integer | Campaign ID from list_campaigns. |
| event enum required | enum | opened, clicked, unsubscribed, spam, blocked, soft_bounced, hard_bounced or retrying. |
| email string | string | A complete email address to look for. |
| cursor string | string | next_cursor from the previous call. |
Request
curl "https://cotlet.dev/api/v1/mailjet/campaign-activities?campaign_id=1&event=opened" \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("mailjet", "list_campaign_activity", {"campaign_id":1,"event":"opened"}) const result = await cotlet.call('mailjet', 'list_campaign_activity', {"campaign_id":1,"event":"opened"}); cotlet call mailjet list_campaign_activity --data '{"campaign_id":1,"event":"opened"}' Example response
{
"total": 2,
"activity": [
{
"email": "old.address@example.net",
"event": "hard_bounced",
"reason": "User unknown",
"at": "2026-10-14T08:02:11+01:00"
},
{
"email": "info@closed-shop.example",
"event": "hard_bounced",
"reason": "Domain not found",
"at": "2026-10-14T08:02:40+01:00"
}
],
"next_cursor": null
}