Skip to content

List all tasks

GET
/api/tasks
curl --request GET \
--url http://localhost:9477/api/tasks

OK

Media typeapplication/json
Array<object> | null
object
apiTrigger
required
boolean
autostart
required

For services: whether instances start at boot. False boots in the stopped state until started via API/UI.

boolean
catchUp

What to do when cron ticks are missed during downtime

string
Allowed values: latest all skip
compose

Provenance metadata for tasks imported from a docker compose file

object
file
required
string
projectName
required
string
service
string
cron
string
dependsOn

For services: service names that must be healthy before this one starts at boot — boot ordering only, not a workflow DAG

Array<string> | null
description
string
env

Environment variables overlaid on the task’s process env. Values are visible to authenticated operators in the API/UI; env_file values merge in beneath the inline entries.

object
key
additional properties
string
envBase

What the run’s environment starts from: ‘inherit’ (the daemon’s, the default) or ‘clean’ (PATH, SHELL, HOME, USER/LOGNAME only, as crond gives a job)

string
envFile

Path to a dotenv file whose KEY=VALUE pairs merge into env (inline entries win). Values are visible in the API/UI like inline env.

string
exitCodes

Process exit codes treated as success; defaults to [0]

Array<integer> | null
gracefulStop

Window between the stop signal and SIGKILL when a run is stopped, in nanoseconds

integer format: int64
group
string
healthyAfter

For services: an instance that runs at least this long counts as healthy — resets the restart counter and clears the failed-start streak; fast exits below it count toward restart_attempts, in nanoseconds

integer format: int64
heldBy

Why this task is loaded but not on the scheduler: ‘cron’ means a live system cron daemon still reads the crontab it came from and is running it, so RunWisp stands down. Manual triggers still work. Empty means RunWisp owns the schedule.

string
Allowed values: cron
instances

For services: number of always-running instances

integer format: int64
jitter

Cap how far a cron task’s start may slip so tasks sharing a fire time take turns through a daemon-wide one-at-a-time gate instead of stampeding; a run starts as soon as the gate frees and slips up to this window only under contention, in nanoseconds

integer format: int64
keepFor

Retention window in nanoseconds; 0 means no cap was configured

integer format: int64
keepRuns

Row-count retention cap; 0 keeps no completed runs, omitted inherits the [defaults] value (or no cap)

integer format: int64
kind

Whether this is a scheduled task or an always-on service

string
Allowed values: task service
logMaxSize

Per-run log size cap in bytes

integer format: int64
logOnFull

What to do when log output exceeds log_max_size

string
Allowed values: drop_new drop_old kill_task
maxCatchUpRuns

Cap on catch-up runs triggered when catch_up = all

integer format: int64
maxConcurrent

Maximum overlapping runs allowed for this task

integer format: int64
name
required
string
nextRunAt
string
onOverlap

How overlapping runs are handled

string
Allowed values: queue skip terminate
parameters

Per-execution parameters an operator may supply at manual trigger time; scheduled runs use the declared defaults

Array<object> | null
object
allow_custom

When choices is set, allow values outside the list

boolean
choices

Allowed values; renders as a dropdown

Array<string> | null
default

Default value used by scheduled runs and pre-filled in manual forms

string
description

Help text shown under the field

string
key
required

Canonical parameter key (env name, positional label, or option/flag token)

string
kind
required

How the parameter renders into the run

string
Allowed values: env arg option flag
required

Whether a manual trigger must supply a value

boolean
type

Value type; defaults to string

string
Allowed values: string number
priority

For services: boot start order, lowest first (name breaks ties). Start order only — not a dependency.

integer format: int64
queueMax

Maximum runs that can wait when on_overlap = queue

integer format: int64
restart

Whether and when a task is restarted after completion

string
Allowed values: never always on_failure
restartAttempts

For services: consecutive fast failures tolerated before an instance is marked FATAL and stops restarting

integer format: int64
restartBackoff

Backoff curve between consecutive restarts

string
Allowed values: constant linear exponential
restartDelay

Base delay before each restart, in nanoseconds

integer format: int64
retryAttempts
integer format: int64
retryBackoff

Backoff curve between consecutive retries

string
Allowed values: constant linear exponential
retryDelay

Base delay before each retry, in nanoseconds

integer format: int64
runOnStart

For tasks: fire once at daemon startup, in addition to any cron schedule

boolean
secretsFile

Path to a dotenv file whose KEY=VALUE pairs are injected into the task’s process env. The path is visible in the API/UI; keys and values never leave the daemon.

string
shell

Absolute path to the shell interpreter for run scripts; defaults to /bin/sh

string
source

Where this task’s definition came from: native (hand-authored TOML), staged (imported, not yet promoted), or cron (read live from a crontab via daemon.include_cron)

string
Allowed values: staged cron
sourceFile

Absolute path of the crontab or staging file this task’s definition was read from; empty for hand-authored TOML

string
stopSignal

Signal sent to stop a run before SIGKILL; defaults to SIGTERM

string
Allowed values: SIGTERM SIGINT SIGQUIT SIGHUP SIGKILL SIGUSR1 SIGUSR2
timeout

Per-run timeout in nanoseconds

integer format: int64
timezone

IANA timezone for cron evaluation; falls back to scheduler.timezone, then the daemon’s resolved system timezone

string
umask

Octal file-creation mask applied to the run’s process; empty inherits the daemon’s umask

string
user

Run the process as this OS user, in ‘user’ or ‘user:group’ form (name or numeric id). Empty runs as the daemon’s user; switching users needs the daemon running as root.

string
workingDir

Resolved working directory for the task’s process; empty inherits the daemon’s working directory. A literal “~” means the run-as user’s home, resolved at run time

string
Example
[
{
"catchUp": "latest",
"heldBy": "cron",
"kind": "task",
"logOnFull": "drop_new",
"onOverlap": "queue",
"parameters": [
{
"kind": "env",
"type": "string"
}
],
"restart": "never",
"restartBackoff": "constant",
"retryBackoff": "constant",
"source": "staged",
"stopSignal": "SIGTERM"
}
]

Error

Media typeapplication/problem+json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank
Example
{
"$schema": "http://localhost:9477/schemas/ErrorModel.json",
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}