# Activity

> The workspace's activity log of who changed customers, discounts and prices, newest first.

TradeCatalog records a plain-English line for every staff change to customers, discounts and prices. Changes made through the API are recorded under the key’s name, like `API key “Sage stock sync”`.

## List activity

**GET** `/api/v1/activity`

Newest first. Pass `customer` for one customer’s history.

| Name       | Type    | Required | Description                  |
| ---------- | ------- | -------- | ---------------------------- |
| `customer` | string  | no       | Customer id or account code. |
| `limit`    | integer | no       | 1 to 100. Default 100.       |

This list doesn’t page: it returns the most recent `limit` entries.

```bash
curl "https://tradecatalog.app/api/v1/activity?customer=OAK01&limit=20" \
  -H "Authorization: Bearer $TRADECATALOG_API_KEY"
```

```js
const res = await fetch(
  'https://tradecatalog.app/api/v1/activity?customer=OAK01&limit=20',
  {
    headers: { Authorization: `Bearer ${process.env.TRADECATALOG_API_KEY}` },
  },
)
const { data: entries } = await res.json()
```

```json
{
  "data": [
    {
      "id": "d0e1f2a3-b4c5-4d6e-8f7a-9b0c1d2e3f4a",
      "actorName": "Jo Hartley",
      "summary": "Set Northgate brand discount to 15% (was 12.5%)",
      "createdAt": "2026-09-26T14:21:03.000Z",
      "customerAccountId": "7d2e4f0a-1b3c-4d5e-8f90-a1b2c3d4e5f6",
      "customerName": "Oakfield Joinery"
    },
    {
      "id": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
      "actorName": "API key “Sage stock sync”",
      "summary": "Imported customers: 0 new, 42 updated",
      "createdAt": "2026-09-26T02:00:09.000Z",
      "customerAccountId": null,
      "customerName": null
    }
  ]
}
```

| Field               | Type           | Description                                                        |
| ------------------- | -------------- | ------------------------------------------------------------------ |
| `actorName`         | string         | Who made the change. Kept even if that person later leaves.        |
| `summary`           | string         | What changed, in plain English. Meant for people, not for parsing. |
| `createdAt`         | string         | When.                                                              |
| `customerAccountId` | string or null | The customer it was about, if any.                                 |
| `customerName`      | string or null | That customer’s current name.                                      |

Order status changes aren’t in this log; they’re in each order’s `events`. See [Orders](/docs/api/orders#get-one-order).
