---
title: "Rollback Workflow"
method: POST
path: "/api/v1/workflows/{id}/rollback"
tags: ["Workflows"]
---

# Rollback Workflow

`POST /api/v1/workflows/{id}/rollback`

Roll the live deployment back to a previous deployment version. The workflow must currently be deployed. By default the version immediately preceding the currently active one is re-activated; pass `version` to target a specific deployment version instead. The workflow's draft state is not modified. Requires admin permission on the workflow's workspace. Returns 404 when the workflow does not exist or you do not have access to it.

## Path parameters

- `id` string, required

## Request body

- object
  - `version` integer — The deployment version to re-activate. Defaults to the version immediately preceding the active one.

## Response `200`

Workflow rolled back successfully.

- object
  - `data` WorkflowDeployment — Deployment state of a workflow after a deploy, undeploy, or rollback operation.
    - `id` string — Unique workflow identifier.
    - `isDeployed` boolean — Whether the workflow is deployed and available for API execution after the operation.
    - `deployedAt` string, date-time, nullable — ISO 8601 timestamp of the active deployment. null after an undeploy.
    - `version` integer — The deployment version that is now active. Omitted for undeploy.
    - `warnings` string[] — Non-fatal warnings. Present when trigger, schedule, or MCP side-effect sync is still in progress or needs a redeploy.
  - `limits` Limits — Rate limit and usage information included in every API response.
    - `workflowExecutionRateLimit` object — Current rate limit status for workflow executions.
      - `sync` RateLimitBucket — Rate limit status for a specific execution type.
        - `requestsPerMinute` integer — Maximum number of requests allowed per minute.
        - `maxBurst` integer — Maximum number of concurrent requests allowed in a burst.
        - `remaining` integer — Number of requests remaining in the current rate limit window.
        - `resetAt` string, date-time — ISO 8601 timestamp when the rate limit window resets.
      - `async` RateLimitBucket — Rate limit status for a specific execution type.
        - `requestsPerMinute` integer — Maximum number of requests allowed per minute.
        - `maxBurst` integer — Maximum number of concurrent requests allowed in a burst.
        - `remaining` integer — Number of requests remaining in the current rate limit window.
        - `resetAt` string, date-time — ISO 8601 timestamp when the rate limit window resets.
    - `usage` object — Current billing period usage and plan limits.
      - `currentPeriodCost` number — Total spend in the current billing period in USD.
      - `limit` number — Maximum allowed spend for the current billing period in USD.
      - `plan` string — Your current subscription plan (e.g., free, pro, team).
      - `isExceeded` boolean — Whether the usage limit has been exceeded. Executions may be blocked when true.

## Other responses

- `400` — Invalid request parameters. Check the details array for specific validation errors.
- `401` — Invalid or missing API key. Ensure the X-API-Key header is set with a valid key.
- `404` — The requested resource was not found. Verify the ID is correct and belongs to your workspace.
- `423` — The workflow is locked and cannot be modified.
- `429` — Rate limit exceeded. Wait for the duration specified in the Retry-After header before retrying. The X-RateLimit-* headers accompany every response from an authenticated v1 request — success and error alike — and are omitted only when the request fails authentication, since no rate-limit bucket is consulted in that case.

---

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