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
| Field | Type | Description |
|---|---|---|
limit | integer · query | Max rows to return (default 20, max 100). |
after | string · query | Return rows after this id (forward paging). |
before | string · query | Return rows before this id (backward paging). |
subject | string · query | Only changes to this kind of record. |
subject_id | string · query | With `subject`: one record's changes (its id, e.g. `dom_…`). |
contact_id | string · query | One contact's timeline (`con_…`). |
campaign_id | string · query | A campaign's changes and what it led to (e.g. unsubscribes through it) (`cmp_…`). |
q | string · query | Part of the record's name or the actor's (case-insensitive). At most 200 characters. |
channel | string · query | `email`: without SMS rows. |
Response · 200 fields11 fields
| Field | Type | Description |
|---|---|---|
objectrequired | string | — |
idrequired | string | — |
typerequired | string | What happened, e.g. `contact_created`, `campaign_sent`, `domain_verified`. |
subjectrequired | enumcontact | segment | topic | field | template | component | campaign | email | domain | sender_email | library_image | api_key | webhook | suppression | message | handle | workspace | The kind of record it happened to. |
subject_idrequired | string | null | The record's id (prefixed where the record has a public id). |
subject_labelrequired | string | null | The record's name at the time: a contact's email, a segment's name, …; a phone number is masked (`+1••••••7755`). |
contact_idrequired | string | null | — |
campaign_idrequired | string | null | The campaign the change is attributed to (e.g. an unsubscribe through its link). |
actorrequired | object | — |
metadatarequired | object | Detail 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_atrequired | string | — |
200401403422503