> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blobhub.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Schedule

Update attributes of an existing schedule. Only fields supplied in the request are changed; omitted fields keep their current values. A schedule in the `completed` state cannot be updated.

## **POST** `/revisions/:id/data/command` (Command: `update_schedule`)

### Request Body

| Parameter                | Type    | Required | Description                                                                                                      |
| :----------------------- | :------ | :------- | :--------------------------------------------------------------------------------------------------------------- |
| `engine`                 | string  | Yes      | Must be `scheduler_blobhub`.                                                                                     |
| `command`                | string  | Yes      | Must be `update_schedule`.                                                                                       |
| `schedule_id`            | string  | Yes      | Id or alias of the schedule to update.                                                                           |
| `alias`                  | string  | No       | Optional new alias for the schedule. 6–42 chars, lowercase (`a`–`z`, `0`–`9`, `_`, `-`), unique in the revision. |
| `enabled`                | boolean | No       | New enabled flag.                                                                                                |
| `repeat`                 | string  | No       | Either `one_time` or `recurring_cron`.                                                                           |
| `cron_expression`        | string  | No       | Six-field AWS cron expression. Must be set when repeat is `recurring_cron`.                                      |
| `invocation_time`        | string  | No       | ISO 8601 datetime. Must be set when repeat is `one_time`.                                                        |
| `timezone`               | string  | No       | IANA timezone name.                                                                                              |
| `start_date`             | string  | No       | ISO 8601 UTC datetime.                                                                                           |
| `end_date`               | string  | No       | ISO 8601 UTC datetime.                                                                                           |
| `invocation_target_type` | string  | No       | Must be `workflow`.                                                                                              |
| `invocation_target`      | object  | No       | Replacement invocation target object.                                                                            |

<Note>
  If `repeat` is changed to `recurring_cron`, `cron_expression` must be supplied in the same request. If changed to `one_time`, `invocation_time` must be supplied. `invocation_time` follows the same naive-datetime format as on create.
</Note>

### Response

| Parameter  | Type   | Description                  |
| :--------- | :----- | :--------------------------- |
| `schedule` | object | The updated schedule object. |

### Errors

| Status | Error                | Cause                                                                   |
| :----- | :------------------- | :---------------------------------------------------------------------- |
| 403    | `forbidden`          | The schedule does not exist, or it is not reachable from this revision. |
| 400    | `alias_in_use`       | The alias is already taken in this revision.                            |
| 400    | `schedule_completed` | A schedule in the `completed` state cannot be updated.                  |

A caller cannot tell these two 403 cases apart — a schedule that does not exist and one that is not
reachable both answer `forbidden`. Sessions already work this way; see
[Close Session](/blob-types/workflow/operations/close-session).

### Example

<CodeGroup>
  ```json Request theme={null}
  {
    "engine": "scheduler_blobhub",
    "command": "update_schedule",
    "schedule_id": "sched-001",
    "enabled": false,
    "timezone": "Europe/London"
  }
  ```

  ```json Response theme={null}
  {
    "status": "success",
    "schedule": {
      "id": "sched-001",
      "alias": "morning-digest",
      "revision_id": "rev-scheduler-001",
      "created_at": "2026-04-07T12:00:00Z",
      "modified_at": "2026-04-07T13:15:00Z",
      "auth_target": "user",
      "auth_target_id": "user-001",
      "enabled": false,
      "repeat": "recurring_cron",
      "cron_expression": "0 9 * * ? *",
      "invocation_time": null,
      "timezone": "Europe/London",
      "start_date": null,
      "end_date": null,
      "state": "active",
      "invocation_target_type": "workflow",
      "invocation_target": {
        "org_id": "org-123",
        "blob_id": "blob-456",
        "revision_id": "rev-789",
        "session_id": "sess-abc",
        "workflow_alias": "daily-report",
        "input_data": []
      }
    }
  }
  ```
</CodeGroup>
