# Activity API reference

> HTML version: https://storeshot.art/docs/api/activity/

Who changed what in the account. Contract 1.18.0; base URL `https://api.storeshot.art/v1`. Schemas: https://storeshot.art/docs/api/schemas.md

## GET /activity

**List account activity** (operation `listActivity`). Auth: API key with scope `keys:manage`, or access token.

Requires `keys:manage`. Changes to the account, newest first: API keys created and revoked, credits granted and removed (trial, packs, plans, refunds), webhook changes and console sign-ins, with who made them and the request id. Every environment; entries are kept 400 days.

**Credits.** Free: no credits.

**Parameters:**

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `limit` | query | `integer` | no | 1–100, default 20. Default: 20 |
| `cursor` | query | `string` | no | `nextCursor` of the previous page. |
| `type` | query | `ActivityFamily` | no |  |

**Responses:**

| Status | Description | Schema | Headers |
|---|---|---|---|
| `200` | A page of activity. | `ActivityList` | `X-Request-Id`, `RateLimit`, `RateLimit-Policy` |
| `400` | `INVALID_INPUT`. A credential sent in the query string is refused before authentication, without RateLimit headers. | `ErrorEnvelope` | `X-Request-Id`, `RateLimit`, `RateLimit-Policy` |
| `401` | `UNAUTHORIZED`: missing, malformed, unknown, revoked or expired credential. | `ErrorEnvelope` | `X-Request-Id` |
| `403` | `FORBIDDEN`: see `details.reason`. | `ErrorEnvelope` | `X-Request-Id`, `RateLimit`, `RateLimit-Policy` |
| `429` | `RATE_LIMITED`: the request rate of the API key (`details.scope` `key`) or of the account (`user`) is exhausted for this window, or too many failed authentication attempts came from this IP (no `details.scope` and no RateLimit headers). Retry after `Retry-After` seconds. | `ErrorEnvelope` | `X-Request-Id`, `RateLimit`, `RateLimit-Policy`, `Retry-After` |
| `default` | Error (see ErrorEnvelope and /v1/docs/errors). | `ErrorEnvelope` | `X-Request-Id`, `RateLimit`, `RateLimit-Policy` |

Example 200 response:

```json
{
  "data": [
    {
      "id": "7d0e1a52-3c4b-4f6e-9a8d-2b1c0f9e8a7d",
      "type": "api_key.revoked",
      "createdAt": "2026-10-21T12:00:00.000Z",
      "actor": {
        "type": "user",
        "apiKeyId": "7d0e1a52-3c4b-4f6e-9a8d-2b1c0f9e8a7d",
        "apiKeyPrefix": "ss_live_AbCd"
      },
      "target": {
        "type": "string",
        "id": "string"
      },
      "details": {
        "name": "ci",
        "prefix": "ss_live_AbCd",
        "environment": "live"
      },
      "requestId": "string"
    }
  ],
  "nextCursor": "string"
}
```
