---
title: "Compute update preview and reconcile sticky state"
method: POST
path: "/api/stacks/{stackName}/update-preview"
tags: ["Stacks"]
---

# Compute update preview and reconcile sticky state

`POST /api/stacks/{stackName}/update-preview`

Computes the same preview as GET. When every image reports
`check_status: ok` and `has_update` is false (mixed `ok` +
`not_checkable` does not clear), clears sticky confirmed update rows
for the stack and sets `reconciled: true`. Requires `stack:read`
permission.

## Path parameters

- `stackName` string, required

## Headers

- `x-node-id` integer

## Response `200`

Update preview, with reconcile outcome.

- object
  - `stack_name` string, required
  - `images` UpdatePreviewImage[], required
    - `service` string, required
    - `image` string, required
    - `current_tag` string, required
    - `next_tag` string, nullable, required
    - `has_update` boolean, required
    - `digest_update` boolean, required — Same-tag registry content drift; Compose pull can apply without changing the pin.
    - `tag_update` boolean, required — A higher pinned semver exists; advisory until Compose is edited.
    - `semver_bump` 'none' | 'unknown' | 'patch' | 'minor' | 'major', required
    - `check_status` 'ok' | 'partial' | 'failed' | 'not_checkable', required
  - `build_services` string[], required
  - `summary` UpdatePreviewSummary, required
    - `has_update` boolean, required
    - `primary_image` string, nullable, required
    - `current_tag` string, nullable, required
    - `next_tag` string, nullable, required
    - `semver_bump` 'none' | 'unknown' | 'patch' | 'minor' | 'major', required
    - `update_kind` 'tag' | 'digest' | 'none', required
    - `blocked` boolean, required
    - `blocked_reason` string, nullable, required
    - `has_build_services` boolean, required
    - `rebuild_available` boolean, required
    - `check_status` 'ok' | 'partial' | 'failed', required
  - `rollback_target` string, nullable, required
  - `changelog` string, nullable, required
  - `reconciled` boolean, required — True when sticky update rows were cleared after an authoritative-negative preview.

## Other responses

- `401` — Authentication required. Provide a valid Bearer token.
- `403` — Insufficient permissions or license tier.
- `500` — Internal server error.

---

[API](https://skmtc.net/studio-saelix/apis/sencho-api.md) · [All operations](https://skmtc.net/studio-saelix/apis/sencho-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/studio-saelix/sencho-api/versions/f36f82acae1d/schema)
