---
title: "Create scheduled task"
method: POST
path: "/api/scheduled-tasks"
tags: ["Scheduled Tasks"]
---

# Create scheduled task

`POST /api/scheduled-tasks`

Creates a new recurring task. Action-target rules:
- `restart` requires `target_type: stack` or `target_type: container` (with `target_id` and `node_id`)
- `auto_stop` and `auto_start` accept `target_type: stack` or `target_type: container`
- `snapshot` requires `target_type: fleet`
- `prune` requires `target_type: system`

Requires admin role.

## Request body

- object
  - `name` string, required
  - `target_type` 'stack' | 'fleet' | 'system' | 'container', required
  - `target_id` string — Stack or container name (required when target_type is `stack` or `container`).
  - `node_id` integer — Target node ID (required when target_type is `stack` or `container`).
  - `action` 'restart' | 'snapshot' | 'prune', required
  - `cron_expression` string, required — Standard 5-field cron expression.
  - `enabled` boolean
  - `prune_targets` string[] — Resources to prune (only for `prune` action).
  - `target_services` string[] — Specific services to restart (only for `restart` action).
  - `prune_label_filter` string — Docker label filter for prune operations.

## Response `201`

Task created.

- ScheduledTask
  - `id` integer, required
  - `name` string, required
  - `target_type` 'stack' | 'fleet' | 'system' | 'container', required
  - `target_id` string, nullable — Stack or container name (when target_type is `stack` or `container`).
  - `node_id` integer, nullable — Target node ID (when target_type is `stack` or `container`).
  - `action` 'restart' | 'snapshot' | 'prune', required
  - `cron_expression` string, required — Standard cron expression (5 fields).
  - `enabled` 0 | 1, required
  - `created_by` string, required
  - `created_at` integer, required — Unix timestamp (seconds).
  - `updated_at` integer, required — Unix timestamp (seconds).
  - `last_run_at` integer, nullable
  - `next_run_at` integer, nullable
  - `last_status` string, nullable
  - `last_error` string, nullable
  - `prune_targets` string, nullable — JSON-stringified array of prune targets (containers, images, networks, volumes).
  - `target_services` string, nullable — JSON-stringified array of service names to restart.
  - `prune_label_filter` string, nullable — Docker label filter for prune operations.

## Other responses

- `400` — Validation error.
- `403` — Insufficient permissions or license tier.
- `500` — Internal server error.

---

[API](https://skmtc.net/studio-saelix/apis/sencho-api.md) · [All operations](https://skmtc.net/studio-saelix/apis/sencho-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/studio-saelix/sencho-api/versions/f36f82acae1d/schema)
