Dashboard v3

Save the canvas (append a draft version)

Validates the CanvasV3 payload, appends a new draft head (optimistic concurrency via base_sequence → 409 on a moved head), and kicks the async bake. The previous baked bundle keeps serving, flagged stale, until the bake lands.

put/dashboards/{dashboard_id}/canvas

Request

  • Base URL: https://app.mammoth.io/api/v2
  • URL: https://app.mammoth.io/api/v2/dashboards/{dashboard_id}/canvas
  • 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

Path parameters

dashboard_idinteger required

Request body

Response

Request fulfilled, document follows

sequenceinteger required

The new draft head sequence

mergedboolean

True when the head had moved past base_sequence and this save was merged onto it (a colleague's changes are in the new head too): the client must adopt the head before sending its next full canvas.

bake_job_idinteger required

Job id of the async bake

recomposedboolean

True when a content page's structure type changed vs the stored head and its architect tiles were re-picked for the new archetype (Design → Structure). False for an ordinary save.

changed_tilesinteger

How many architect tiles entered or left the composition across the recomposed pages. 0 with recomposed=True is a legitimate tie (the new archetype re-picks the same charts for this data → 'layout already fits'); >0 drives the 'N charts updated' signal.

seeded_pagesstring[]

Ids of brand-new EMPTY authored pages this save auto-seeded with a starter composition (the '+ add page' affordance lands pages via this PUT with no chat turn, so an authored page would otherwise bake to an empty tab). Non-empty means the persisted head now differs from what the client PUT — the client should refetch the draft canvas (GET /{id}/canvas) to pick up the seeded tiles.

Changes

No recorded changes to this operation across all 3 revisions of this API.