# Changelog entries

> Read your release notes with the API, or from the public endpoint without a key.

Changelog entries are the release notes customers see on your changelog. The API can read them. It cannot create or publish them: writing and publishing is done in Tirver, because publishing marks linked feedback as shipped. See [publish a changelog entry](https://tirver.com/help/publish-a-changelog-entry.md). If the workspace has switched the changelog module off, these endpoints answer `404` with `module_disabled`.

## The changelog entry object

| Field | Type | Meaning |
|---|---|---|
| `id` | string | The entry id. |
| `slug` | string | The address-friendly name. |
| `title` | string | The title. |
| `status` | string | `draft` or `published`. |
| `labels` | array of strings | Labels such as `New` or `Integrations`. |
| `published_at` | string or null | When it was published. |
| `created_at` | string | When it was created. |
| `updated_at` | string | When it last changed. |

Lists add `description`, the start of the body. Fetching a single entry adds `body`, the notes as Markdown.

## List changelog entries

`GET /api/v1/changelog`

Needs the `changelog:read` scope. Newest first.

| Parameter | Type | What it does |
|---|---|---|
| `status` | string | `published` (the default), `draft` or `all`. |
| `limit` | integer | Page size, 1 to 100. Defaults to 25. |
| `cursor` | string | The `next_cursor` from the previous page. |

```bash
curl "https://app.tirver.com/api/v1/changelog?status=published&limit=5" \
  -H "Authorization: Bearer $TIRVER_API_KEY"
```

## Get a changelog entry

`GET /api/v1/changelog/{id}`

Needs `changelog:read`. `{id}` is the entry id or its slug. Returns one entry with its Markdown `body`.

## Public changelog

Published entries for your workspace are also available without a key, as JSON, so you can show them on your own site. Replace `WORKSPACE` with your workspace slug.

`GET /api/public/WORKSPACE/changelog`

Returns every published entry, newest first.

```json
{
  "workspace": { "name": "Acme", "slug": "acme" },
  "entries": [
    {
      "slug": "resizable-inbox-panels",
      "title": "Resizable inbox panels",
      "labels": ["Inbox"],
      "description": "Drag the edges of the panels to make room for what you are reading.",
      "publishedAt": "2026-11-12T09:00:00.000Z"
    }
  ]
}
```

`GET /api/public/WORKSPACE/changelog/{slug}`

Returns `{ "entry": ... }` with the same fields plus `body` (Markdown), `html` and `markdownUrl`. Add `.md` to the slug to get the entry as Markdown text. Responses are cached for a short time and the endpoints allow requests from any origin. Note that these public endpoints use `camelCase` field names, unlike the keyed API.

Source: https://tirver.com/help/api/changelog-entries
