---
title: "Get email campaign activities"
method: GET
path: "/emails/campaigns/{campaignId}/activities"
tags: ["Email campaigns (legacy)"]
deprecated: true
---

# Get email campaign activities

`GET /emails/campaigns/{campaignId}/activities`

## Request

- Base URL: `https://api.emelia.io`
- URL: `https://api.emelia.io/emails/campaigns/{campaignId}/activities`
- Auth: API key in header `Authorization`

> **Deprecated.**

Returns a page of activity events for the campaign (30 per page, page is 0-based). RE_REPLY and (internally) OPENED are excluded. Filter with type (single event) or types (comma-separated list), by contactId or versionId, and search (tokens on firstName/lastName/email) or query (exact email). New integrations should use the multichannel /advanced campaign endpoints instead.

## Path parameters

- `campaignId` string, required

## Query parameters

- `contactId` string
- `versionId` string
- `type` 'SENT' | 'FIRST_OPEN' | 'OPENED' | 'CLICKED' | 'REPLIED' | 'BOUNCED' | 'UNSUBSCRIBED'
- `types` string
- `page` string
- `query` string
- `search` string

## Response `200`

Activities (note: envelope is { activities }, no success flag).

- object
  - `activities` LegacyActivity[], required
    - `_id` string
    - `contact` union: Contact id, or the populated contact.
      - string
      - LegacyContact: An email contact.
        - `_id` string
        - `email` string, email
        - `firstName` string
        - `lastName` string
        - `phoneNumber` string
        - `custom` object: Custom variables.
        - `status` string: Latest status, e.g. SENT, OPENED, CLICKED, REPLIED, BOUNCED, UNSUBSCRIBED, BLACKLISTED. '-' when none.
        - `mailsSent` integer
        - `lastContacted` string, date-time
        - `lastOpen` string, date-time
        - `lastReplied` string, date-time
        - `interested` string: Legacy field, always "-" in campaign contact listings.
    - `event` 'SENT' | 'FIRST_OPEN' | 'OPENED' | 'CLICKED' | 'REPLIED' | 'BOUNCED' | 'UNSUBSCRIBED'
    - `date` string, date-time
    - `step` integer: 0-based step index, -1 if unresolved.
    - `version` integer: 0-based version index, -1 when the step has a single version.
    - `customData` object: Event metadata (internal keys are stripped).

## Other responses

- `400`: Business or validation error. 400 by default; Joi validation errors carry code INVALID_REQUEST.

---

[API](https://skmtc.dev/emelia/apis/emelia-api.md) · [All operations](https://skmtc.dev/emelia/apis/emelia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/emelia/apis/emelia-api/revisions/8c0cb435f2c4?raw)
