---
title: "Update a workflow"
method: PUT
path: "/workflows/{workflow_id}"
tags: ["workflows"]
---

# Update a workflow

`PUT /workflows/{workflow_id}`

Applies a partial update (name, platform, status, ocr_engine). Org-scoped — workflows in other orgs return 404.

## Path parameters

- `workflow_id` string, uuid, required — workflow identifier

## Request body

- WorkflowUpdateRequest — Request body for updating mutable workflow fields.
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `name` string — Updated workflow name.
  - `ocr_engine` 'free' | 'premium' — Updated OCR backend selection.
  - `platform` 'ios' | 'android' | 'both' — Updated target platform.
  - `status` 'ready' | 'training' | 'running' — Updated lifecycle status.

## Response `200`

OK

- WorkflowResponse — Full workflow record with embedded stats.
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `stats` WorkflowStats, required — WorkflowStats summarizes run statistics for a workflow.
    - `success_rate` number, double, required — Fraction of runs that completed successfully, from 0.0 to 1.0 (multiply by 100 for a percentage).
    - `total_runs` integer, required — Total number of runs for this workflow.
  - `workflow` WorkflowSummary, required — A workflow: a saved automation that runs against a phone.
    - `created_at` string, date-time, required — When the workflow was created.
    - `id` string, uuid, required — Workflow identifier.
    - `last_run_at` string, date-time, nullable, required — When the workflow last ran; absent if never run.
    - `name` string, required — Workflow name.
    - `ocr_engine` 'free' | 'premium', required — OCR engine the workflow runs with.
    - `organization_id` string, uuid, nullable, required — Organization the workflow belongs to.
    - `platform` 'android' | 'ios' | 'both', required — Target platform.
    - `status` 'ready' | 'training' | 'running', required — Workflow lifecycle status.
    - `updated_at` string, date-time, required — When the workflow was last updated.
    - `user_id` string, uuid, required — User who created the workflow.

## Other responses

- `default` — Error

## Changes

- **2026-07-23** `5a989777701c` — 1 breaking
  - for the `path` request parameter `workflow_id`, the format changed from no format to `uuid`
- **2026-07-18** `80c0e071bf67` — 3 breaking, 8 info
  - request property `ocr_engine` was restricted to a list of enum values
  - request property `platform` was restricted to a list of enum values
  - request property `status` was restricted to a list of enum values
  - added the new `android` enum value to the request property `platform`
  - …7 more

[Change history](https://skmtc.dev/axilioai/apis/axilio-api/changes/workflows/:workflow_id/put.md)

---

[API](https://skmtc.dev/axilioai/apis/axilio-api.md) · [All operations](https://skmtc.dev/axilioai/apis/axilio-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/axilioai/axilio-api/revisions/a0204e0956bc/schema)
