List activity

List activity

GET/api/v1/activity

GET /activity
curl -X GET 'https://www.unitpost.com/api/v1/activity' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'User-Agent: my-app/1.0'
Response · 200
{
  "object": "list",
  "has_more": false,
  "data": [
    {
      "object": "activity",
      "id": "id_123",
      "type": "string",
      "subject": "contact",
      "subject_id": "subject_123",
      "subject_label": "string",
      "contact_id": "contact_123",
      "campaign_id": "campaign_123",
      "actor": {
        "name": "Example",
        "via": {
          "surface": "api",
          "credential": "api_key",
          "api_key_id": "api_key_123"
        }
      },
      "metadata": {},
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}

The workspace activity log, newest first and cursor-paginated: what changed, when, and who changed it (actor.name: a teammate, System, Ask Unit) and, for a change made over the API, MCP or Ask Unit, how (actor.via, with the API key). The rows the dashboard's Activity page and each record's timeline show. Narrow with subject (and subject_id), contact_id, campaign_id, q (the record's name or the actor) and channel=email. Needs activity:read, which no key preset includes: the log names your teammates. Requires the activity:read capability.

Parameters9 fields
FieldTypeDescription
limitinteger · queryMax rows to return (default 20, max 100).
afterstring · queryReturn rows after this id (forward paging).
beforestring · queryReturn rows before this id (backward paging).
subjectstring · queryOnly changes to this kind of record.
subject_idstring · queryWith `subject`: one record's changes (its id, e.g. `dom_…`).
contact_idstring · queryOne contact's timeline (`con_…`).
campaign_idstring · queryA campaign's changes and what it led to (e.g. unsubscribes through it) (`cmp_…`).
qstring · queryPart of the record's name or the actor's (case-insensitive). At most 200 characters.
channelstring · query`email`: without SMS rows.
Response · 200 fields11 fields
FieldTypeDescription
objectrequiredstring—
idrequiredstring—
typerequiredstringWhat happened, e.g. `contact_created`, `campaign_sent`, `domain_verified`.
subjectrequiredenumcontact | segment | topic | field | template | component | campaign | email | domain | sender_email | library_image | api_key | webhook | suppression | message | handle | workspaceThe kind of record it happened to.
subject_idrequiredstring | nullThe record's id (prefixed where the record has a public id).
subject_labelrequiredstring | nullThe record's name at the time: a contact's email, a segment's name, …; a phone number is masked (`+1••••••7755`).
contact_idrequiredstring | null—
campaign_idrequiredstring | nullThe campaign the change is attributed to (e.g. an unsubscribe through its link).
actorrequiredobject—
metadatarequiredobjectDetail for the change, varying by `type`: a segment's or topic's name, a status before and after, a renamed field's keys, related ids (`campaign_id`, …). Descriptive keys only: addresses, URLs and error text stay in the dashboard.
created_atrequiredstring—
200401403422503

Search docs and guides

Search the docs and product guides.