---
title: "Draft changes since the published version"
method: GET
path: "/dashboards/{dashboard_id}/unpublished"
tags: ["Dashboard v3"]
---

# Draft changes since the published version

`GET /dashboards/{dashboard_id}/unpublished`

## Request

- Base URL: `https://app.mammoth.io/api/v2`
- URL: `https://app.mammoth.io/api/v2/dashboards/{dashboard_id}/unpublished`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-KEY` and API key in header `X-API-SECRET` and API key in header `X-WORKSPACE-ID`

The timeline turns the draft head applies that the published version does not (who, when, the timeline's label and what it touched, newest first), then the published turns the draft has since undone. `published_history_index` is the pointer Discard restores the published version with. 409 when the board was never published. Reads the two transcripts; no canvas.

## Path parameters

- `dashboard_id` integer, required

## Response `200`

The draft's changes since the published version

- UnpublishedChangesResponse
  - `published_sequence` integer, required: The published draft sequence
  - `head_sequence` integer, required: The current draft head sequence
  - `published_history_index` integer, nullable: The timeline pointer that reproduces the published state — Discard restores `published_sequence` with this pointer
  - `count` integer, required: Changes in all (uncapped)
  - `changes` UnpublishedChange[]: Newest first; undone turns last
    - `id` string, required: The timeline turn's id
    - `sequence` integer, nullable: The version the turn produced (null for an undo)
    - `user_id` integer, nullable: Who made it
    - `user_name` string: Their display name
    - `at` string, nullable: When (ISO 8601, UTC)
    - `kind` 'edit' | 'assistant' | 'sync' | 'undo', required: A manual/server edit, an assistant turn, a data sync, or a published turn the draft has since undone
    - `label` string, nullable: The timeline's own words for the change, if any
    - `scopes` object[], nullable: What the change touched (tile/page), as recorded

## Other responses

- `400`: Bad request syntax or unsupported method
- `403`: Request forbidden -- authorization will not help

---

[API](https://skmtc.dev/mammoth/apis/mammoth-analytics.md) · [All operations](https://skmtc.dev/mammoth/apis/mammoth-analytics/llms.txt) · [OpenAPI document](https://skmtc.dev/mammoth/apis/mammoth-analytics/revisions/fe078afe239b?raw)
