# Update a workflow

> Change a workflow's name, schedule, steps, destination or status. Steps are replaced whole.

Canonical: https://revnu.com/docs/workflow-update

```bash
curl -X PATCH -H "Authorization: Bearer $REVNU_API_TOKEN" \
  -H "content-type: application/json" \
  -d '{"scheduleText":"every weekday at 08:30 Europe/London"}' \
  https://revnu.com/api/v1/workflows/j57…
```

## Body

Any of `name`, `description`, `scheduleText`, `steps`, `deliverTo`, `status` (`"live"` or `"paused"`), with the same limits as create. `steps` replaces the whole list, so send back the steps you are not changing and keep their `id` so run history stays attached. A changed `scheduleText` is re-resolved after the write.

## Response

`{ "workflow": { … } }`, the updated workflow with its new `version`. `404` for an unknown or another account's workflow. `409` when `deliverTo` is not a connected destination; the message lists the options.

## Frequently asked questions

### Which scope does this need?

`workflows:write`. A token without it gets `403` with `requiredScope` in the body. `GET /me` shows a token's scopes.

### Are responses cached?

No. Every response is `Cache-Control: no-store`, so what you read is current.
