---
title: "Changelog Endpoint"
canonical: "https://docs.pbs.org/space/CDA/3050246/Changelog%20Endpoint"
format: markdown
---
> Macro (toc)

## Overview

The Changelog endpoint reports recent changes to resources across both **Media Manager** and **Station Manager**. It returns a paginated, time-ordered list of change events (create, update, delete) for the last **30 days**.

Each entry identifies the resource that changed, the type of change, when it happened, and a link to the resource itself. The changelog lists activity for **all** resources of every type — it is not limited to the shows or franchises your consumer can access. Following an entry's `self` link to retrieve the underlying object is still subject to your consumer's normal access permissions (see [Access & Permissions](https://docs.pbs.org/space/CDA/3050246/Changelog+Endpoint#Access-&-Permissions)).

Resource types covered: `asset`, `show`, `franchise`, `special`, `episode`, `season`, `collection`, and `station`.

## Endpoints

| Method | URL | Description |
| --- | --- | --- |
| GET | `/changelog/` | List recent changes across Media Manager and Station Manager resources |

> ℹ️ All URLs require the base endpoint prefix and a trailing slash. 
> ℹ️ 
> ℹ️ Base endpoint: `https://media.services.pbs.org/api/v1/changelog/`

## Response Fields

Each item in the `data` array represents a single change event. Fields are read-only.

| Field | Type | Description |
| --- | --- | --- |
| `type` | string | Resource type that changed. One of: `asset`, `show`, `franchise`, `special`, `episode`, `season`, `collection`, `station`. |
| `id` | string | PBS Content ID of the changed resource. |
| `attributes.action` | string | The change that occurred: `create`, `update`, or `delete`. |
| `attributes.timestamp` | datetime | When the change occurred (UTC, ISO 8601). |
| `attributes.updated_fields` | list | List of updated fields. |
| `links.self` | string (URL) | Canonical API URL for the changed resource. Following this link performs a standard GET and is subject to your consumer's access permissions — see [Access & Permissions](https://docs.pbs.org/space/CDA/3050246/Changelog+Endpoint#Access-&-Permissions). |

**Response envelope.** The top-level response also includes:

- `meta.pagination` — `count` (total matching events) and `per_page` (25).
- `meta.sort` — available sort options (see the `sort` query parameter).
- `meta.filter` — the filter parameters supported by the endpoint.
- `links` — pagination links (`first`, `prev`, `self`, `next`, `last`).
- `jsonapi` — JSON:API version.

## Query Parameters

These parameters can be combined to filter and sort the changelog.

| Parameter | Type | Description |
| --- | --- | --- |
| `action` | string | Filter by one or more actions: `create`, `update`, `delete`. Repeat the parameter for multiple values. |
| `since` | string | Return activity on or after the given timestamp (within the past 30 days). Format: `%Y-%m-%dT%H:%M:%S` (e.g., `2023-03-25T20:14:07.00Z`). Only **one** `since` value is supported per request. If omitted, the last 30 days of activity are returned. |
| `type` | string | Filter by one or more resource types: `asset`, `show`, `franchise`, `special`, `episode`, `season`, `collection`, `station`. Repeat the parameter for multiple values. |
| `id` | string | Filter by one or more resource IDs (PBS Content ID for any resource type). Repeat the parameter for multiple values. |
| `assets` | flag | When present, also returns activity for all assets belonging to the provided show `id`(s). Best used together with `id` and `since`. Combine with `type=asset` to return **only** asset activity. |
| `sort` | string | Sort by timestamp: `timestamp` (ascending) or `-timestamp` (descending). Available sort options are listed in the response `meta.sort` block. |
| `page` | integer | Page number. Responses are paginated at 25 results per page. |

## List Changes

```
GET /changelog/
```

Returns recent changes across all resource types. Results are paginated (25 per page); a page returns 0–25 objects.

#### Example Request

```
GET https://media.services.pbs.org/api/v1/changelog/?id={resource-id}since=YYYY-MM-DDT20:14:07.00Z&assets
```

> ℹ️ *I want to get back all changelog events for a particular show and its video assets.*

#### Example Response

```json
{
  "jsonapi": {
    "version": "1.0"
  },
  "data": [
    {
      "type": "show",
      "id": "a5c07dc2-ac12-4cd4-bb07-cd8a925a1b04",
      "attributes": {
        "action": "update",
        "timestamp": "2026-07-27T16:14:09.155587Z",
        "updated_fields": [
          "description_short",
          "description_long"
        ]
      },
      "links": {
        "self": "https://media.services.pbs.org/api/v1/shows/a5c07dc2-ac12-4cd4-bb07-cd8a925a1b04/"
      }
    },
    {
      "type": "asset",
      "id": "20707318-cbaa-4b2b-847c-daffecd00755",
      "attributes": {
        "action": "update",
        "timestamp": "2026-07-16T07:04:56.890461Z",
        "updated_fields": [
          "trick_play_files"
        ]
      },
      "links": {
        "self": "https://media.services.pbs.org/api/v1/assets/20707318-cbaa-4b2b-847c-daffecd00755/"
      }
    },
    {
      "type": "asset",
      "id": "20707318-cbaa-4b2b-847c-daffecd00755",
      "attributes": {
        "action": "update",
        "timestamp": "2026-07-16T07:04:53.709411Z",
        "updated_fields": [
          "availability"
        ]
      },
      "links": {
        "self": "https://media.services.pbs.org/api/v1/assets/20707318-cbaa-4b2b-847c-daffecd00755/"
      }
    },
  ],
  "meta": {
    "type": "collection",
    "filter": {
    "id": "https://media.services.pbs.org/api/v1/changelog/?id=",
    "type": "https://media.services.pbs.org/api/v1/changelog/?type=",
    "action": "https://media.services.pbs.org/api/v1/changelog/?action=",
    "since": "https://media.services.pbs.org/api/v1/changelog/?since="
    },
    "sort": {
      "timestamp": {
        "asc": "https://media.services.pbs.org/api/v1/changelog/?sort=timestamp",
        "desc": "https://media.services.pbs.org/api/v1/changelog/?sort=-timestamp"
      }
    },
    "pagination": {
      "per_page": 25,
      "count": 143
    }
  },
  "links": {
    "self": "https://media.services.pbs.org/api/v1/changelog/?id=a5c07dc2-ac12-4cd4-bb07-cd8a925a1b04&since=2026-07-04T20:14:07.00Z&assets",
    "first": "https://media.services.pbs.org/api/v1/changelog/?assets=&id=a5c07dc2-ac12-4cd4-bb07-cd8a925a1b04&since=2026-07-04T20%3A14%3A07.00Z",
    "prev": null,
    "next": "https://media.services.pbs.org/api/v1/changelog/?assets=&id=a5c07dc2-ac12-4cd4-bb07-cd8a925a1b04&page=2&since=2026-07-04T20%3A14%3A07.00Z",
    "last": "https://media.services.pbs.org/api/v1/changelog/?assets=&id=a5c07dc2-ac12-4cd4-bb07-cd8a925a1b04&page=6&since=2026-07-04T20%3A14%3A07.00Z"
  }
}
```

## Filtering Examples

#### Return all changes (no filter)

```
GET https://media.services.pbs.org/api/v1/changelog/
```

Returns a paginated response of the last 30 days of activity (0–25 objects per page).

#### Filter by timestamp

Accepted datetime format: `%Y-%m-%dT%H:%M:%S` (e.g., `2026-08-05T20:14:07.272507Z`). Only one `since` value is supported per request.

```
GET https://media.services.pbs.org/api/v1/changelog/?since={datetime}
```

Example — all resources with activity since the given date/time:

```
GET https://media.services.pbs.org/api/v1/changelog/?since=2026-08-0
5T20:14:07.00Z
```

#### Filter by resource type

```
GET https://media.services.pbs.org/api/v1/changelog/?type={type}&type={type}
```

Example — all shows with activity in the past 30 days:

```
GET https://media.services.pbs.org/api/v1/changelog/?type=show
```

#### Filter by action

```
GET https://media.services.pbs.org/api/v1/changelog/?action={action}&action={action}
```

Example — all resources that were created or updated:

```
GET https://media.services.pbs.org/api/v1/changelog/?action=create&action=update
```

#### Filter by resource ID

```
GET https://media.services.pbs.org/api/v1/changelog/?id={id}&id={id}
```

Example — activity in the past 30 days for a specific show:

```
GET https://media.services.pbs.org/api/v1/changelog/?id=6366c57e-5dc8-4a1d-b4f7-f8ead1a3fd22
```

#### Combine multiple filters

```
GET https://media.services.pbs.org/api/v1/changelog/?type={type}&action={action}&action={action}&since={datetime}
```

Example — all assets created since the given date/time:

```
GET https://media.services.pbs.org/api/v1/changelog/?since=2026-08-05T20:14:07.00Z&type=asset&action=create
```

#### Include asset activity for a show

Include the `assets` parameter to also return activity for all assets belonging to the provided show `id`(s). For best response time, pair it with a recent `since` value.

Return show activity **and** its asset activity:

```
GET https://media.services.pbs.org/api/v1/changelog/?id={id}&since={datetime}&assets
```

Return **only** asset activity for the show (combine `assets` with `type=asset`):

```
GET https://media.services.pbs.org/api/v1/changelog/?id={id}&since={datetime}&assets&type=asset
```

## Access & Permissions

Requests to this endpoint use a **normal consumer** — no special permissions are required.

The changelog lists activity for resources of every type, regardless of whether your consumer has access to a given show or franchise. Access is enforced when you follow an entry's `self` link and request the underlying object:

- If you request a resource (episode, asset, special, season, etc.) that belongs to a show you **can** access, the GET succeeds.
- If you request a resource that belongs to a show you **cannot** access, you receive a **403** (access denied).

**Example.** If you have access to *Nature* but not *Downton Abbey*, the changelog returns episodes from both. A GET on a *Nature* episode succeeds; a GET on a *Downton Abbey* episode returns 403.