RMM: scheduled tasks

Tasks run one or more scripts on a schedule (every N hours, daily, weekly, a day of the month, or the Nth weekday of the month) on the devices they're assigned to. Each run records a result per device and per step.

MethodPathSummary
GET/v1/admin/rmm/tasksList scheduled tasks
GET/v1/admin/rmm/tasks/:idGet a task with its steps and assignments
POST/v1/admin/rmm/tasksCreate a scheduled task
PUT/v1/admin/rmm/tasks/:idUpdate a scheduled task
POST/v1/admin/rmm/tasks/:id/toggleTurn a task on or off
DELETE/v1/admin/rmm/tasks/:idDelete a task
POST/v1/admin/rmm/tasks/:id/runRun a task now
GET/v1/admin/rmm/tasks/:id/runsA task's past runs
GET/v1/admin/rmm/runsRecent task runs
GET/v1/admin/rmm/runs/:runId/resultsPer-device rollup plus the full per-step timeline (client groups by device_id and orders by sort_order to render a mini step-by-step timeline per device)
POST/v1/admin/rmm/runs/:runId/cancelCancel a running task

#List scheduled tasks

GET/v1/admin/rmm/tasks
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Response 200

FieldTypeDescription
tasksarray of any
Example response
JSON
{
  "tasks": []
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Get a task with its steps and assignments

GET/v1/admin/rmm/tasks/:id
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
taskany
stepsarray of any
assignmentsarray of any
Example response
JSON
{
  "task": null,
  "steps": [],
  "assignments": []
}

Errors

StatusMessage
404Task not found

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/42' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Create a scheduled task

POST/v1/admin/rmm/tasks
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Request body JSON

NameTypeDescription
namerequiredstringThe task's name.
descriptionstring
schedulerequiredobjectWhen it runs: { "type": "interval", "every_hours": 6 }, { "type": "daily", "time": "02:00" }, { "type": "weekly", "weekday": 1, "time": "02:00" }, { "type": "monthly_day", "day": 1 } or { "type": "monthly_weekday", "week": 1, "weekday": 2 }.
on_failure_notifyanyNotify when a run fails.
notify_configstringWho or which channel to notify.
device_filtersarray of anyNarrow the devices further by type, OS or name.
assignmentsarray of anyDevices, sites or groups it runs on.
stepsrequiredarray of anyScripts to run in order: [{ "script_id": 12, "script_args": {}, "stop_on_failure": true }].

Response 201

FieldTypeDescription
messagestring
task_idinteger
Example response
JSON
{
  "message": "Saved",
  "task_id": 7
}

Errors

StatusMessage
400name, schedule and at least one step are required
400Unknown notification channel type

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","description":"string","schedule":{},"on_failure_notify":"…","notify_config":"string","device_filters":[],"assignments":[],"steps":[]}'

#Update a scheduled task

PUT/v1/admin/rmm/tasks/:id
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
namestring
descriptionstring
scheduleany
on_failure_notifyany
notify_configstring
device_filtersstring
assignmentsarray of any
stepsrequiredarray of any

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400At least one step is required
400Unknown notification channel type
404Task not found

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/42' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","description":"string","schedule":"…","on_failure_notify":"…","notify_config":"string","device_filters":"string","assignments":[],"steps":[]}'

#Turn a task on or off

POST/v1/admin/rmm/tasks/:id/toggle
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/:id/toggle
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/42/toggle' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Delete a task

DELETE/v1/admin/rmm/tasks/:id
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404Task not found

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/42' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Run a task now

POST/v1/admin/rmm/tasks/:id/run
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/:id/run
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404Task not found

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/42/run' \
  -H "X-API-Key: $BRAMBLE_KEY"

#A task's past runs

GET/v1/admin/rmm/tasks/:id/runs
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/:id/runs
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
runsarray of any
Example response
JSON
{
  "runs": []
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/tasks/42/runs' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Recent task runs

GET/v1/admin/rmm/runs
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/runs
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Response 200

FieldTypeDescription
runsarray of any
Example response
JSON
{
  "runs": []
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/runs' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Per-device rollup plus the full per-step timeline (client groups by device_id and orders by sort_order to render a mini step-by-step timeline per device)

GET/v1/admin/rmm/runs/:runId/results
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/runs/:runId/results
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Path parameters

NameTypeDescription
runIdrequiredinteger

Response 200

FieldTypeDescription
resultsarray of object
results[].idinteger
results[].run_idinteger
results[].task_idinteger
results[].device_idstring
results[].device_namestring, or null
results[].command_idinteger, or null
results[].statusstring: "pending" | "running" | "success" | "failed" | "timeout"
results[].exit_codeinteger, or null
results[].stdoutstring, or null
results[].stderrstring, or null
results[].started_atstring (date-time), or null
results[].completed_atstring (date-time), or null
results[].updated_atstring (date-time), or null
stepsarray of object
steps[].idinteger
steps[].run_idinteger
steps[].device_idstring
steps[].step_idinteger
steps[].sort_orderinteger
steps[].command_idinteger, or null
steps[].statusstring: "pending" | "queued" | "running" | "success" | "failed" | "timeout" | "skipped"
steps[].exit_codeinteger, or null
steps[].stdoutstring, or null
steps[].stderrstring, or null
steps[].started_atstring (date-time), or null
steps[].completed_atstring (date-time), or null
steps[].updated_atstring (date-time), or null
steps[].script_namestring
steps[].script_languagestring
Example response
JSON
{
  "results": [
    {
      "id": 42,
      "run_id": 7,
      "task_id": 7,
      "device_id": "string",
      "device_name": "Example device name",
      "command_id": 7,
      "status": "pending",
      "exit_code": 1,
      "stdout": "string",
      "stderr": "string",
      "started_at": "2026-11-12T09:30:00.000Z",
      "completed_at": "2026-11-12T09:30:00.000Z",
      "updated_at": "2026-11-12T09:30:00.000Z"
    }
  ],
  "steps": [
    {
      "id": 42,
      "run_id": 7,
      "device_id": "string",
      "step_id": 7,
      "sort_order": 1,
      "command_id": 7,
      "status": "pending",
      "exit_code": 1,
      "stdout": "string",
      "stderr": "string",
      "started_at": "2026-11-12T09:30:00.000Z",
      "completed_at": "2026-11-12T09:30:00.000Z",
      "updated_at": "2026-11-12T09:30:00.000Z",
      "script_name": "Example script name",
      "script_language": "string"
    }
  ]
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/runs/1/results' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Cancel a running task

POST/v1/admin/rmm/runs/:runId/cancel
Address
https://<your-org>.brambleit.cloud/api/v1/admin/rmm/runs/:runId/cancel
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Permission (any of): rmm.scripts.run.

Path parameters

NameTypeDescription
runIdrequiredinteger

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
404Run not found
409Run is not in progress

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/rmm/runs/1/cancel' \
  -H "X-API-Key: $BRAMBLE_KEY"