---
title: "Update Workflow"
method: PUT
path: "/v2/workflows/{id}"
tags: ["Workflow API"]
---

# Update Workflow

`PUT /v2/workflows/{id}`

Update an existing workflow.

## Path parameters

- `id` string, required — The ID of the workflow.

## Request body

- object
  - `name` string — The name of the workflow.
  - `description` string — A description of the workflow.
  - `requireFormConfirmation` boolean, nullable — Whether the workflow requires form confirmation. Omit to leave unchanged.
  - `content` string — The content/code of the workflow.
  - `isPublished` boolean, nullable — Whether the workflow is published. Set to true to publish the workflow.
  - `tagIds` SvflowPublicapiTagIdsUpdate — A presence-tracked replacement set of tag ids. The message wrapper lets the JSON surface distinguish "omitted" (leave the tag set unchanged) from "empty" (clear every tag) — on a bare proto3 repeated field the two are indistinguishable.
    - `ids` string[] — The replacement set of tag ids. An empty (or omitted) list removes every tag from the subject.
  - `showInServiceCatalog` boolean, nullable — Whether to list this workflow in the Service Catalog. Omit to leave unchanged.
  - `serviceCatalogDescription` string, nullable — Description shown at the top of the Service Catalog run form. Omit to leave unchanged; send an empty string to clear it.

## Response `200`

Success

- SvflowPublicapiUpdateWorkflowResponse
  - `data` SvflowPubapimodelsWorkflow
    - `id` string — The ID of the workflow.
    - `teamId` string — The ID of the team that the workflow belongs to.
    - `name` string — The name of the workflow.
    - `description` string — A description of the workflow.
    - `requireFormConfirmation` boolean — Whether the workflow requires form confirmation.
    - `content` string — The content/code of the workflow.
    - `isPublished` boolean — Whether the workflow is published. Set to true to publish the workflow.
    - `hasUnpublishedChanges` boolean — Whether there are unpublished changes to the workflow (computed by server).
    - `tagIds` string[] — IDs of tags associated with this workflow.
    - `showInServiceCatalog` boolean — Whether this workflow is listed in the Service Catalog.
    - `serviceCatalogDescription` string — Description shown at the top of the Service Catalog run form.
    - `scopedId` string — The copy-invariant scoped ID of the workflow (e.g. "wf_..."), stable across cross-team copies.
    - `folderId` string, nullable — The ID of the folder the workflow lives in, if any. Populated on the single-workflow responses (Get/Create/Update and the folder-move endpoint); omitted from ListWorkflows responses — fetch the workflow to read its folder membership.

## Other responses

- `default` — Error

---

[API](https://skmtc.net/serval/apis/serval-public-api.md) · [All operations](https://skmtc.net/serval/apis/serval-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/serval/serval-public-api/versions/0549515e9384/schema)
